高分求LL(1)语法分析设计原理与实现技术
[实验项目] 实现LL(1)分析中控制程序(表驱动程序);完成以下描述算术表达式的LL(1)文法的LL(1)分析程序.
G[E]:E→TE′
E′→ATE′|ε
T→FT′
T′→MFT′|ε
F→ (E)|i
A→+|-
M→*|/
说明:终结符号i为用户定义的简单变量,即标识符的定义.
[设计要求](1)输入串应是词法分析的输出二元式序列,即某算术表达式“实验项目一”的输出结果.输出为输入串是否为该文法定义的算术表达式的判断结果;(2)LL(1)分析过程应能发现输入串出错;(3)设计两个测试用例(尽可能完备,正确和出错),并给出测试结果.
#include
#include
#include
#define Vtn 8
#define Vnn 5
#define Pn 10
#define Pmaxlen 20
#define MaxStLength 50
#define MaxStackDepth 50
char Vn[Vnn]={'E','e','T','t','F'};
char Vt[Vtn]={'i','+','-','*','/','(',')','$'};
char Pstr[Pn][Pmaxlen]=
{
"E->Te",
"e->+Te",
"e->-Te",
"e->ε",
"T->Ft",
"t->*Ft",
"t->/Ft",
"t->ε",
"F->(E)",
"F->i"
};
int Prlen[Pn]={2,3,3,1,2,3,3,1,3,1};
int Pint[Pn][3]=
{
{102,101},
{1,102,101},
{2,102,101},
{-1},
{104,103},
{3,104,103},
{4,104,103},
{-1},
{5,100,6},
{0}
};
int analyseTable[Vnn][Vtn+1];
int analyseStack[MaxStackDepth+1];
int topAnalyse;
char st[MaxStLength];//要分析的符号串
/* ----------------------初始化----------------------------*/
void InitanalyseTable()
{
/*---预测分析表存放各个产生式的编号,-1表示找不到相匹配的产生式---*/
for(int i=0;i
-
点赞数:0回答数:1
-
点赞数:0回答数:1
-
点赞数:0回答数:1
-
点赞数:0回答数:1
-
点赞数:0回答数:1
-
点赞数:0回答数:1
-
点赞数:0回答数:1
-
点赞数:0回答数:4
-
点赞数:0回答数:1
-
点赞数:0回答数:1

最新问答: August is the eighth month of the year.错在哪? 0-9十个数字列三个减法算式,每个数用一次,不能重复 请教一道初三关于比例性质的题.若m/n=3/4,n/p=2/5,则m:n:p为?(我算得是3:4:10,请问这对吗?) (x+y)(y-x)用平方差公式怎么求? ∫dx/(x4-1)=? 宇宙中的一个元素(由3个氢原子和2个电子构成) 观察下面各组数:(3,4,5)、(5,12,13)、(7,24,25)、(9,40,41)、(11,60,61)…,发现 嫒是什么意思 在国际单位制中,时间的单位是______,符号是______;长度的单位是______,符号是______.测量时间的常 甲乙两个施工队合修一条长9.6千米的公路,己知甲队比乙队多修2千米,求两队各修多少千米?(方程解答) 数学用符号表示的字母 我打算未来在空余时间帮助更多的病人.用英语怎么说. 一道模拟电子求放大倍数的问题.对照上图.我在看解析过程时,有一个是-(U01-u02)={(R1+R2+R3)/3}*u 为了解某校学生参加某项测试的情况,从该校学生中随机抽取了6位同学,这6位同学的成绩(分数)如茎叶图所示. 阅读下面的推理过程,然后再填空∵x-1/x=√2,∴(x-1/x)²=(√2)²∴x²-2 在RT三角形ABC中,∠C=90°,A:C=4:5,B=9,求A,C值 有一个一一映射f(h)=T 编一个循环求出T=T0时的h 题目是A减一分之一加上A减一乘A减二分之一加上A减二乘A减三分之一一直加到A减99乘 小学生科技发明,最好不是电类的.还有可以使一些化学类的,比如酚酞石蕊之类的 如图,BP,CP,分别平分∠ABD,∠ACD,若∠A=40°,求∠P
相关问答: 跪求