用python编写的toy函数语言编译器
lnac的Python项目详细描述
#LNAC公司
用python编写的玩具函数式语言编译器。
---
lnac是一个用python 3编写的玩具函数式语言编译器,它支持有限的程序生成。
有关一些示例程序,请参见[demos目录](demos)。
快速启动
要安装LNAC:
```
PIP3安装LNAC
```
要创建、编译和运行示例程序:
```c
$nano return0.lna
更少的回报0.lna
主要:内部
主要=
=>;0
$lnac return0.lna
$。/return0&;$?
正确
```
实施
莱克瑟
lnac lexer主要在[`lexer.py`]中实现(lnac/lexer.py)。此外,[`tokens.py`](lnac/tokens.py)包含lexer中使用的令牌类的定义,以及可识别的关键字和符号令牌的实例。
分析器
lnac解析器在[`parser/parser.py`](lnac/parser/)中实现,并创建在[`tree/nodes.py`]中定义的节点的抽象语法树(lnac/tree/nodes.py)。
组装
lnac写出一个中间程序集文件,然后gcc从中生成一个可执行文件。此程序集文件按照AT&T程序集语法编写,编译成功后将被删除。
参考资料
-编写C编译器-https://norasandler.com/2017/11/29/write-a-compiler.html
-shivyc-https://github.com/shivamsarodia/shivyc
用python编写的玩具函数式语言编译器。
---
lnac是一个用python 3编写的玩具函数式语言编译器,它支持有限的程序生成。
有关一些示例程序,请参见[demos目录](demos)。
快速启动
要安装LNAC:
```
PIP3安装LNAC
```
要创建、编译和运行示例程序:
```c
$nano return0.lna
更少的回报0.lna
主要:内部
主要=
=>;0
$lnac return0.lna
$。/return0&;$?
正确
```
实施
莱克瑟
lnac lexer主要在[`lexer.py`]中实现(lnac/lexer.py)。此外,[`tokens.py`](lnac/tokens.py)包含lexer中使用的令牌类的定义,以及可识别的关键字和符号令牌的实例。
分析器
lnac解析器在[`parser/parser.py`](lnac/parser/)中实现,并创建在[`tree/nodes.py`]中定义的节点的抽象语法树(lnac/tree/nodes.py)。
组装
lnac写出一个中间程序集文件,然后gcc从中生成一个可执行文件。此程序集文件按照AT&T程序集语法编写,编译成功后将被删除。
参考资料
-编写C编译器-https://norasandler.com/2017/11/29/write-a-compiler.html
-shivyc-https://github.com/shivamsarodia/shivyc