通过逐步完善一个简单的中文编程语言语法并最后转换为 SQL 语句,演示一种快速搭建中文编程语言原型的方法。
达成效果是,如下的中文语句:
创建读者表,编号为整数,出生年为文本
转换生成 SQL 语句:
CREATE TABLE 读者 ( 编号 INTEGER, 出生年 TEXT )
文中代码在 Python 3.8 下运行通过,需安装 RPly 木兰定制版 0.8.0。
一、中文标识符
首先来识别一个标识符——“读者”。下面是完整代码。
from rply import 分词器母机, 语法分析器母机
分词母机 = 分词器母机()
分词母机.添了('标识符', r'读者')
分析器母机 = 语法分析器母机(['标识符'])
@分析器母机.语法规则("句 : 标识符")
def 句(片段):
return 片段[0].getstr() # 第一个片段的内容
分词器 = 分词母机.产出()
分析器 = 分析器母机.产出()
print(分析器.按语法分词(分词器.分词('读者')))
运行此源码文件可见输出。
先简单看下源码,分词母机添加的一条词法规则:标识符可以是“读者”。分析器母机添加的一条语法规则:句子只包含一个标识符,而且解析后直接输出它的内容(在 “句