- 识别文法
- 提取左公因式
- 消除直接左递归
- 构建
FIRST
和FOLLOW
集合 - 构建LL预测分析表
- 通过LL(1)分析法,分析句子
- 简易词法分析(仅特殊识别
id
和num
)
- 支持
C++11
标准的C++编译器
由于程序不支持
Unicode
所以全程使用符号`
代表符号ε
parser grammar.txt lexer.txt
(数字)四则运算表达式:句子示例
5*6+7
E -> E+T | E-T | T
T -> T*F | T/F | F
F -> (E) | num
符号加乘表达式:句子示例
a+b*c
E -> TE'
E' -> +TE' | `
T -> FT'
T' -> *FT' | `
F -> (E) | id
(Unknown):句子示例
(a,(b,(2)),(c))
S -> E
E -> A | B
A -> num | id
B -> (L)
L -> E,L | E
- 通用输入输出(文法、句子参数化)
- 消除间接左递归
- 优化错误处理
- Unicode支持