编写LR(1)语法分析程序,实现对算术表达式的语法分析。要求所分析算数表达式由如下的文法产生:
E -> E+T | E-T | T
T -> T*F | T/F | F
F -> (E) | num
使用方式:运行.\lr1-parser.exe "<表达式>"
-
生成FIRST
fn get_first(&mut self)
-
计算LR(1)项目集规范族和go(I,X)转移函数:
-
编程实现算法 4.3,构造 LR 分析程序。
程序分析输出过程如下:
由于输出较长,故摘取部分输出。
当不能识别输入的表达式时,会抛出错误,程序终止。例如运行.\lr1-parser.exe "123+456-789*25.2/(7-3"
:
执行分析.\lr1-parser.exe "123+456-789*25.2/(7-3)"
,对表达式**123+456-789*25.2/(7-3)**进行分析的程序输出结果见output.txt
。
在目录src/
下。
Windows下运行.\lr1-parser.exe "<表达式>"
,其中"<表达式>"
为用引号括起来的待分析表达式字符串。
Linux下可运行.\lr1-parser "<表达式>"
。