早教吧作业答案频道 -->其他-->
高分求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)设不等式ax^2-(a+1)x-3>0对一切a属于(1,2]都成立,求x的范围. 2020-06-10 …
现有一只兔子,设成年兔子1年生2只,小兔子两年成年,兔子寿命为8年,所有兔子都可生,10年后有几只 2020-06-16 …
2管理会计计算题:1.假设某企业只生产和销售一种产品,单位产品销售为20元,产销可以实现平衡.该企 2020-06-26 …
数据总线、涉及电路、寄存器、逻辑设计设数据总线上接有A、B、C、D4个寄存器,要求选用合适的74系列 2020-10-31 …
北京市市长刘淇在“2002年首都绿化建设总结动员大会”上提出,在五六年内把北京建设成为“环境友好型城 2020-11-04 …
知识点二建设成就和模范人物1.建设成就(1)主要工业产品都有很大增长,⑪尤为突出。(2)新兴的电子工 2020-12-14 …
建设成就和模范人物1.建设成就(1)主要工业产品都有很大増长,⑪尤为突出。(2)新兴的电子工业、⑫工 2020-12-14 …
集成运算放大器实现的运算电路设计实验设计要求:1.用集成运算放大器LM358(工作电压+-12V)来 2020-12-30 …
电工电子实验:集成运算放大器实现的运算电路设计实验急,求大师指点.设计要求:1.用集成运算放大器LM 2020-12-30 …
下面属于我国现阶段“中国梦”的有()①全面建成小康社会②把我国建设成为富强民主文明和谐的社会主义现代 2021-01-30 …