Exp →LP Exp RP | MINUS Exp | ID LP Args RP | INT | FLOAT Args → Exp COMMA Args | Exp给出该文法预测分析表
时间: 2023-06-10 17:07:45 浏览: 145
首先需要列出该文法的所有非终结符和终结符:
非终结符:Exp, Args
终结符:LP, RP, MINUS, ID, INT, FLOAT, COMMA
接下来,我们可以使用预测分析表生成算法来生成预测分析表。其中,表格的行表示文法中的非终结符,列表示终结符和 $ \$$(表示输入串的结束标志)。
| | LP | RP | MINUS | ID | INT | FLOAT | COMMA | $ $ |
| ---- | ---- | ---- | ----- | ---- | ---- | ----- | ----- | ------|
| Exp | Exp →LP Exp RP | | Exp →MINUS Exp | Exp →ID LP Args RP | Exp →INT | Exp →FLOAT | | |
| Args | Exp →LP Exp RP | | Exp →MINUS Exp | Exp →ID LP Args RP | Exp →INT | Exp →FLOAT | Args →Exp COMMA Args | |
注:表格中的空格表示无法进行推导,需要进行错误处理。
例如,当输入符号串为 "ID ( Exp, Exp ) INT" 时,对应的分析过程如下:
| 栈 | 输入串 | 动作 |
| ---------- | ------------------ | ------------ |
| $ \$ $ Exp | ID ( Exp, Exp ) INT | Exp →ID LP Args RP |
| $ \$ $ RP Args LP $ \$ $ Exp $ \$ $ Exp ) INT | Exp →FLOAT |
| $ \$ $ RP Args LP $ \$ $ Exp $ \$ $ Exp ) INT | 弹出栈顶符号 |
| $ \$ $ RP Args LP $ \$ $ Exp $ \$ $ Exp ) INT | Args →Exp COMMA Args |
| $ \$ $ RP Args LP $ \$ $ Exp, Exp $ \$ $ ) INT | Exp →INT |
| $ \$ $ RP Args LP $ \$ $ ) INT | 弹出栈顶符号 |
| $ \$ $ RP Args LP $ \$ $ ) INT | Args → $ \epsilon $ |
| $ \$ $ RP $ \$ $ INT | 弹出栈顶符号 |
| $ \$ $ RP $ \$ $ INT | 弹出栈顶符号 |
| $ \$ $ Exp $ \$ $ INT | 弹出栈顶符号 |
| $ \$ $ INT $ \$ $ | 推导完成 |
阅读全文