Tag Archives: 编译原理

使用 LIBLR 解析带注释的 JSON

前文《基于 LR(1) 和 LALR 的 Parser Generator》里介绍了春节期间开发的小玩具 LIBLR ,今天春节最后一天,用它跑一个小例子,解析带注释的 json 文件。由于 python 自带 json 库不支持带注释的 json 解析,而 vscode 里大量带注释的 json 没法解析,所以我们先写个文法,保存为 json.txt: # 定义两个终结符 %token NUMBER %token STRING start: value {get1} ; value: object {get1} | array {get1} | STRING … Continue reading

Loading

Posted in 编译原理 | Tagged | 6 Comments

基于 LR(1) 和 LALR 的 Parser Generator

最近处理文本比较多,先前想增强下正则,看来不够用了,有同学推荐了我 Pyl 和 Lark,看了两眼,初看还行,但细看有一些不太喜欢的地方,于是刚好春节几天有空,从头写了一个 LR(1) / LALR 的 Generator,只有一个 LIBLR.py 的单文件,没有其它依赖: GitHub – skywind3000/LIBLR: Parser Generator for LR(1) and LALR 用法很简单,给定文法,返回 Parser: import LIBLR # 注意这里是 r 字符串,方便后面写正则 # 所有词法规则用 @ 开头,从上到下依次匹配 grammar = r”’ start: WORD ‘,’ WORD ‘!’; … Continue reading

Loading

Posted in 编译原理 | Tagged | 3 Comments