没有合适的资源?快使用搜索试试~ 我知道了~
首页算符优先分析C++源代码.doc
算符优先分析文法是一种工具,在编译的过程中,隶属于语法分析环节,却又与中间代码的生成息息相关,编译可以分为五个阶段:词法分析、语法分析、语义分析(中间代码的生成)、代码优化、目标代码生成。语法分析是指:在词法分析基础上,将单词符号串转化为语法单位(语法范畴)(短语、子句、句子、程序段、程序),并确定整个输入串是否构成语法上正确的程序。也就是说语法分析是检验输入串的语法是否正确,注意这里的语法正确,只是简单地符合自己定义的规范,而不能检测出运行时错误,比如"X/0",空指针错误,对象未初始化等错误。在这一个实验中,我将通过算符优先分析文法这一个工具,在语法分析的时候,顺便进行语义分析,也就是识别出语法单位,同时简要的将识别出的中间代码进行计算(目标代码的生成+运行),得到相应的结果,来检验自己设计的正确性。可以说题目虽然叫做算符优先分析文法,其实却是一个贯穿了“词法分析+语法分析+语义分析+中间代码优化+目标代码生成+运行”全过程的一个极具概括性的程序。如果能将这个程序得心应手的完成出来,我相信诸位对编译原理的掌握也算是炉火纯青了。时隔将近两年再来整理自己以前写过的实验报告,还是挺有感慨的,对一件东西感兴趣,原来影响还会如此深远,还记得自己当时连续六个小时全神贯注写出的实验报告,现在看看竟然写了五六十页,核心内容也有三四十页,不觉的感慨当年充满热情的时代慢慢的竟走出许久
资源详情
资源评论
资源推荐

#include<iostream>
#include<iomanip>
#dene MAX 100
using namespace std;
struct Stack //符号栈
{
char data[MAX];
int top;
};
char Terminal[6]={';','(',')','a','+','#'}; //终结符集合
char Table[6][6]={ //算符优先关系表
{'>', '<', '>', '<', '>', '>'},
{'<', '<', '=', '<', '<', '!'},
{'>', '>', '>', '!', '>', '>'},
{'>', '>', '>', '!', '>', '>'},
{'<', '<', '>', '<', '>', '!'},
{'<', '<', '!', '<', '!', '='}
};
//判断是否为终结符,是返回其所在位置 i,否则返回-1
int Is_Vt(char ch,char Terminal[6])
{
int i;
for(i=0;i<6;i++)
{
if(ch==Terminal[i]) //输入符为终结符
return i;
}
return -1;
}
//读入输入串,返回其长度
int Getchar(int length,char String[MAX])
{
int i;
cout<<"*****输入字符串的长度 length=";
cin>>length;
cout<<endl<<"*****该输入串为:";
for(i=0;i<length;i++)














安全验证
文档复制为VIP权益,开通VIP直接复制

评论0