实验任务
完成以下描述算术表达式的LL(1)文法的递归下降分析程序构建
G[E]:
E→TE′
E′→+TE′|ε
T→FT′
T′→*FT′|ε
F→(E)|i
说明:终结符号i为用户定义的简单变量,即标识符的定义。
要求具有如下功能:
- 从文件读入算术表达式/或者从终端输入
- 总控函数分析算术表达式;
- 根据分析结果正误,分别给出不同信息
我用的switch case 语句来构建的编译器 通过对表达式的预测分析表 来实现正确情况,同步情况以及错误情况的分析,能够找出错误并继续执行。
执行方式:表达式+$结尾
若最后的符号是)则会运行出结果后退出,其他则继续执行。
例子:i+i$,i+i*(i+i)

源代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char str[20];
int len;
int index;
int error;
int right;
int left;
void E(); // E->TX;
void E_prime(); // X->+TX | e
void T(); // T->FY
void T_prime(); // Y->*FY | e
void F(); // F->(E) | i
void display();
int main() {
while(1) {
len=0;
index = 0;
error = 0;
right = 0;
left = 0;
/*----------- 输入表达式 ---------------*/
pri

本文介绍了如何构建一个用于解析算术表达式的递归下降分析程序,遵循LL(1)文法。实验任务包括读取算术表达式,通过switch case语句实现错误处理和同步分析。程序能够处理标识符和基本运算,并在遇到特定符号时给出不同的执行反馈。示例展示了如何处理表达式,并提供了源代码供参考。
最低0.47元/天 解锁文章
218

被折叠的 条评论
为什么被折叠?



