将变量和常量分别用符号b和c表示,写出能够描述上述表达式的LL(1)文法,并构建预测分析表对b+c%b#进行分析,写出分析过程; 表达式为:x+y*z-3
时间: 2023-02-06 10:38:31 浏览: 117
task02-变量,常量,类型和表达式(已完成).ipynb
LL(1)文法可以这样表示:
E -> T | T + E
T -> F | F * T
F -> b | c | ( E )
构建预测分析表的过程如下:
1. 首先构建符号表,包括终结符和非终结符。终结符有b、c和%,非终结符有E、T、F。
2. 求出每个非终结符的FOLLOW集。FOLLOW集的定义是:对于非终结符A,FOLLOW(A)表示在文法中出现A后可能出现的符号集合。根据定义,可以得到以下FOLLOW集:
FOLLOW(E) = {%)}
FOLLOW(T) = {%, +}
FOLLOW(F) = {*, %, +}
3. 求出每个非终结符的FIRST集。FIRST集的定义是:对于非终结符A,FIRST(A)表示文法中出现A的产生式的第一个符号的集合。根据定义,可以得到以下FIRST集:
FIRST(E) = {b, c, (}
FIRST(T) = {b, c, (}
FIRST(F) = {b, c, (}
4. 根据文法和FIRST、FOLLOW集,填写预测分析表。对于每个产生式A -> α,如果FIRST(α)中包含终结符a,则在A的行、a的列填写产生式A -> α;如果FIRST(α)中不包含终结符,则在A的行、FOLLOW(A)中的每个符号a的列填写产生式A -> α。
以上就是构建预测分析表的过程。
阅读全文