- 59
- 0
- 约2.68千字
- 约 5页
- 2021-12-06 发布于辽宁
- 举报
辅导教师 成绩
实验日期
实验时间
1实验名称语法分析器的设计与实现
2、实验目的
掌握自上而下语法分析方法、自下而上语法分析方法
3、实验要求
实验内容:四选一
设计及实现能够识别表达式的预测分析程序。
文法如下:
G[E]: E-E+T|T
T-T*F|F
F-(E)|i
设计及实现能够识别表达式的LR分析程序。
文法如下:
G[E]: E-E+T|T
T-T*F|F
F-(E)|i
设计及头现能够识别表达式的算符优先分析程序。
文法如下:
G[E]: E-E+T|T
T-T*F|F
F-PT F|P
P-(E)|i
设计及实现计算表达式的计算器。
表达式中可包含+、-、*、/、(、)运算符。
实验要求:
对已给的一个二元式形式表达式,能够检查有无语法错误。并指定出错位 置。
将表达式的语法树输出(或将语法分析过程输出)。
4、实验原理
根据自上而下和自下而上的语法分析思想实现语法分析程序。
5、实验步骤
根据文法构造语法分析表。
编写总控程序实现语法分析。
6、状态转换图及词法分析程序
#in cludeiostream
#i ncludestdio.h
#in elude stri ng
#in elude stack
using n amespacestd;
charVn[]={E,e,T,t,F}; 〃定义文法的非终结符,小写字母 e表示E
charVt[]={i,+,*,(,),#}; 〃定义文法的终结符
int LENVt=sizeof(Vt);
void showstack(stackchar st) //从栈底开始显示栈中的内容
{
int i,j;
charch[100];
j=st.size();
for(i=0;ij;i++)
{
ch[i]=st.top();
st.pop();
}
for(i=j-1;i=0;i--)
{
coutch[i];
st.push(ch[i]);
}
}
int find(char c,chararray[],int n) 〃查找函数,返回布尔值
{
int i;
int flag=0;
for(i=0;i n;i++)
{
if(c==array[i])
flag=1;
}
retur n flag;
}
int location(charc,chararray]]) 〃定位函数,指出字符所在位置,即将字母
转换为数组下标值
{
int i;
for(i=0;c!=array[i];i++); return i;
}
void error() {
cout?
}
出错!e ndl;
void analyse(charVn[],char Vt[],string M[5][6],string str) {
int i,j,p,q,h,flag=1;
chara,X;
stackchar st;
st.push(#);
st.push(V n[0]);
j=0;
h=1;
a=str[j];
cout?步骤
所用产生式endl;
while(flag==1)
{
coutvvhvv
h++;
showstack(st);
cout?
for(i=j;istr.size();i++) coutstr[i];
X=st.top();
if(fin d(X,Vt, LENVt)==1)
if(X==a)
入串的第一个元素相比较
if (X!=#)
{
cout?
st.pop(); a=str[++j];
}
else
{ cout?
〃定义堆栈
//#与识别符号入栈
〃j指向输入串的指针
II
分析栈
剩余输入串
//显示步骤
〃显示分析栈中内容
〃显示剩余字符串
〃取栈顶符号放入X //X是终结符
〃分析栈的栈顶元素和剩余输
vvXvv匹配endl;
〃读入输入串的下一字符
接受!endlvvendl;
flag=0;}
else
{error();break;}
else
{ p=locatio n(X,V n); //实现下标的转换(非终结符转换为行
下标)
q=locatio n(a,Vt); //实现下标的转换(终结符转换为列下标)
stri ngS1(NULL),S2( nu II);
if(M[p][q]==S1 || M[p][q]==S2) // 查找二维数组中的产生式
{error();break;} //对应项为空,则出错
else
{
string str0=M[p][q];
cout? X--str0endl; 〃显示对应的
产生式
st.pop(); if(strO!=$) 〃$代表“空”字符
for(i=str0.size()-1;i=0;i--) st.push(strO[i]);〃产生式右端逆序进栈
}
}
}
}
mai n()
{
s
您可能关注的文档
最近下载
- (融媒体技术与运营)融媒体编辑试题及答案.doc VIP
- 中考语文乱句重组详解.docx VIP
- 中国高清地图(保存图片可放大).pdf VIP
- 消渴小便不利淋病脉证并治第十三金匮要略云南中医学院.ppt
- (融媒体技术与运营)融媒体策划试题及答案.doc VIP
- 《百合花》课件 高教版 中职语文基础模块下册.pptx VIP
- 三菱plc编程案例100例.pdf VIP
- 第16讲 植被与土壤(复习课件)(全国通用)2026年高考地理一轮复习.pptx
- 2021年高考物理总复习:第8讲热学 理想气体的状态方程(含答案解析).pdf VIP
- Review_Manager_和_GRADEprofiler的使用指南,结合案例.pdf VIP
原创力文档

文档评论(0)