Skip to content

A toy program language achieve. 一个简单的语言实现,用于练手。

License

Notifications You must be signed in to change notification settings

SaitouAsuka/Hlang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Hlang

A toy program language achieve. 一个简单的语言实现,用于练手。

介绍

Hlang是一个玩具性质的语言,只是因为学习了编译原理后对所学的知识进行一个实践。当然,本次的项目着重于实现具体的语法,对于语法分析中的LR(0)或者LL(1)并没有进行具体的实现,这些语法分析功能都依托于现有的模块解决。其次,本项目主要是将文本翻译为python的抽象语法树(ast),也就是说基于pyhton实现一个解析器。

开发日志

version 0.0.1

实现以下语法:

  • 整数 浮点数
  • 数学运算(加减乘除,括号)
  • 变量的赋值

上面的语法基本都实现了。整个语法分析器基于rply这个模块进行实现。通过lexer.py模块将输入的文本分解成token,然后通过LR(0)的语法分析器将token解析为python的ast形式。基本的数字、运算和变量的定义和赋值,以及print函数都进行了实现。

存在问题:

  • 没有办法去掉空行,就是分析的过程中直接pass掉空行。当前用很不优雅的方式解决这个问题。
  • 没有办法忽略注释。

TODO list:

  • 完成字符串的实现
  • 完成循环体的实现
  • 完成if分支的实现

About

A toy program language achieve. 一个简单的语言实现,用于练手。

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages