早教吧作业答案频道 -->其他-->
高分求LL(1)语法分析设计原理与实现技术[实验项目]实现LL(1)分析中控制程序(表驱动程序);完成以下描述算术表达式的LL(1)文法的LL(1)分析程序.G[E]:E→TE′E′→ATE′|εT→FT′T′→MFT′|εF
题目详情
高分求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)设计两个测试用例(尽可能完备,正确和出错),并给出测试结果.
[实验项目] 实现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
#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
看了高分求LL(1)语法分析设计原...的网友还看了以下:
请分析下列现象:(1)用力踢足球,足球会飞出去,说明力能使物体的发生改变;(2)排球脱手后在空中的 2020-04-13 …
分析下列现象,判断下列说法不正确的是①用整体动物实验,禁食24小时,大鼠肝中的糖元由7%降到1%, 2020-05-12 …
我的英语很菜的,大侠们帮帮!13.Thepolicemantoldusinthestreet.A. 2020-05-13 …
我们知道空气中含有N2、O2、CO2、H2S等气体.分析下列现象的原因.并写出离子方程式.1、酚酞 2020-05-16 …
用心理学分析心理现象是怎样产生? 2020-06-10 …
分析下列现象或事实说明了水具有那些相应的性质1.冬天水结冰后,把自来水管胀裂2.化学上常把固体溶解 2020-06-27 …
从分子的角度分析下列现象.(1)湿衣服晾干.(2)一氧化碳有毒,而二氧化碳无毒.(3)1000L的 2020-07-15 …
成语中的物理知识,分为光学,力学两部分回答能体现光学的成语和能体现力学的成语需要各十个,解释出成语 2020-07-24 …
分析下列现象是怎样利用惯性的.(1)通过拍打窗分析下列现象是怎样利用惯性的.(1)通过拍打窗帘清除 2020-08-01 …
生活地理·典型天气现象的原理剖析地理现象:2012年7月中旬以来,我国长江中下游及周边地区出现大面积 2021-01-14 …