1. 总体设计思想
整个词法分析器有一张预测分析表,一个先进后出的分析栈和一个总控程序组成。主控程序控制整个分析的过程,分析过程中从用户输入的程序源码中利用词法分析器从程序源码缓冲区中取出字符(满足语法规则的单词),然后根据分析栈中的内容,通过查找预测分析表,根据通过的返回结果执行不同的操作,出现错误则直接返回报错,否则知道将整个源码程序分析完为止。
2. 详细算法设计
(1).文法转换:
<表达式> ::=<项>{+<项>|-<项>}
<项> ::= <因子>{*<因子>|/<因子>}
<因子> ::=ID|num|(<表达式>)
改为:
S->AB
A->CD
B->+AB|-AB |ε
C->ID|num|(S)
D->*CD| /CD |ε
构造预测分析表:
|
ID |
num |
( |
) |
+ |
- |
* |
/ |
# |
S |
S->AB |
S->AB |
S->AB |
|
|
|
|
|
|
A |
A->CD |