A toy program language achieve. 一个简单的语言实现,用于练手。
Hlang是一个玩具性质的语言,只是因为学习了编译原理后对所学的知识进行一个实践。当然,本次的项目着重于实现具体的语法,对于语法分析中的LR(0)或者LL(1)并没有进行具体的实现,这些语法分析功能都依托于现有的模块解决。其次,本项目主要是将文本翻译为python的抽象语法树(ast),也就是说基于pyhton实现一个解析器。
实现以下语法:
- 整数 浮点数
- 数学运算(加减乘除,括号)
- 变量的赋值
上面的语法基本都实现了。整个语法分析器基于rply这个模块进行实现。通过lexer.py模块将输入的文本分解成token,然后通过LR(0)的语法分析器将token解析为python的ast形式。基本的数字、运算和变量的定义和赋值,以及print函数都进行了实现。
存在问题:
- 没有办法去掉空行,就是分析的过程中直接pass掉空行。当前用很不优雅的方式解决这个问题。
- 没有办法忽略注释。
TODO list:
- 完成字符串的实现
- 完成循环体的实现
- 完成if分支的实现