用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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何使用外部java程序在minecraft中移动minecraft角色的相机   java输出文本文件中的变量   java LazyLoadingException在我尝试从多通关系获取对象时出现   java json rest API的错误:ClassCastException:org。json。无法将JSONObject强制转换为组织。json。杰索纳雷   java BigInteger。C中的intValue()等价物#   java大写所有字符,但不包括带引号字符串中的字符   java获取特殊字符   javascript为什么Selenium中的所有getX()调用都需要这么长时间?   rabbitmq rabbitmq java客户端并行消费   如何使用selenium Java在popover窗口中提取文本   对象在java中构造一类对象   java Room数据库未实现   json JSONObject可以使用java保存大的格式化双值吗?   有时限的旅行推销员   java HttpsURLConnection openConnection查询   java无法使用Spring@Entity注释创建MySQL表   lambda Java 8仅映射到值类型集合   java提供OSGi服务而不实现接口   java单个对象重写对象数组,不确定原因