SLR分析算法c语言实现,实验五 SLR语法分析器.doc
实验五 SLR语法分析器
《编译原理》实验报告
实验序号: 05 实验项目名称: SLR语法分析器
学 号姓 名专业、班实验地点指导教师实验时间一、实验目的及要求
利用SLR文法的原理,掌握非递归预测分析的编程方法。
二、实验设备(环境)及要求
确定开发工具,如TC、VC、VC++、Delphi等;花一周时间熟悉开发工具。花一周时间确定被处理的语言的语法特点(初步确定,也可使用现成语言如Pascal、C等)。写好实验报告,编好程序。 利用c语言实现以下SLR文法的分析程序。
文法的开始符号为:
E-->E+T
E-->T
T-->T*F
T-->F
F-->(E)
F-->id
实验步骤
1、建立该文法的分析表;
2、编程实现LR分析程序。
四、实验结果与数据处理
1文法分析表:
2.程序分析:
实验源程序:
#include
#include
int Action[12][6]=
{
105,0,0,104,0,0,
0,106,0,0,0,-1,
0,52,107,0,52,52,
0,54,54,0,54,54,
105,0,0,104,0,0,
0,56,56,0,56,56,
105,0,0,104,0,0,
105,0,0,104,0,0,
0,106,0,0,111,0,
0,51,107,0,51,51,
0,53,53,0,53,53,
0,55,55,0,55,55};
int Goto[12][3]=
{
1,2,3,
0,0,0,
0,0,0,
0,0,0,
8,2,3,
0,0,0,
0,9,3,
0,0,10,
0,0,0,
0,0,0,
0,0,0,
0,0,0
};
char Grammar[20][10]={'\0'};
char VT[10],VN[10];
char AVT[6]={'i','+','*','(',')','#'};
char GVN[3]={'E','T','F'};
int vnNum,vtNum,stateNum=12;
int VNum[10];
int grammarNum;
typedef struct{
char *base;
char *top;
}SymbolStack;
typedef struct{
int *base;
int *top;
}StateStack;
StateStack state;
SymbolStack symbol;
int ScanGrammar()
{
FILE *fp=fopen("SLR文法.txt","r");
FILE *tp;
char singleChar,nextChar;
int i=0,j=0,k,count;
while(!feof(fp))
{
fscanf(fp,"%c",&singleChar);
if(singleChar=='?')
{
Grammar[i][j]='\0';
break;
}
if(singleChar=='\n')
{
Grammar[i][j]='\0';
i++;
j=0;
continue;
}
if(singleChar=='-')
{
tp=fp;
fscanf(tp,"%c",&nextChar);
if(nextChar=='>')
{
fp=tp;
continue;
}
}
if(singleChar=='|')
{
Grammar[i+1][0]=Grammar[i][0];
Grammar[i][j]='\0';
i++;
j=1;
continue;
}
Grammar[i][j]=singleChar;
if(singleChar>='A'&&singleChar<='Z')
{
coun
SLR分析算法c语言实现,实验五 SLR语法分析器.doc相关推荐
- c语言程序设计 实验五数组6,c语言实验五数组程序设计解答.doc
c语言实验五数组程序设计解答.doc 实验五数组应用(二)一.实验目的1(掌握二维数组的定义和初始化.2(掌握二维数组元素的引用及其应用.3(掌握字符数组的定义和初始化.4(掌握字符数组元素的引用及其 ...
- c语言实验五函数答案,C语言程序设计实验五 参考答案.doc
C语言程序设计实验五 参考答案 实验5 函数(1)参考答案 5-1.以下程序的功能:从键盘输入两个数,计算出他们的和,并将结果输出在屏幕上.调试运行程序,观察出现了什么错误,提出修改方案. 答案: # ...
- c语言switch逻辑用语,C语言习题(前五章)参考答案.doc
C语言习题(前五章)参考答案.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3. ...
- 从0开始的python学习:编译原理实验4:语法分析器1--预测分析器构造
这里刚开始试用python的函数功能,可能把局部变量和全局变量给写乱了,后期交之前还想再优化的时候发现越改越乱,太真实的hhh 实验四:语法分析器1–预测分析器构造 实验目的: 通过编写一个预测分析器 ...
- lr1分析器c语言实验报告怎么写,编译原理课程的设计构造LR分析法语法分析器.doc...
编译原理课程的设计构造LR分析法语法分析器 太 原 学 院 课程设计报告书 课程名称 设计题目 构造LR(0)分析法语法分析器 专业班级 学 号 姓 名 指导教师 2016年 12 月 15日 目 录 ...
- 编译原理预测分析法c语言,编译原理预测分析法C语言的实验报告.doc
题目:编写识别由下列文法所定义的表达式的预测分析程序. EàE+T | E-T | T TàT*F | T/F |F Fà(E) | i 输入:每行含一个表达式的文本文件. 输出:分析成功或不成功信息 ...
- 【R语言】实验五 综合应用
系列文章目录 实验一 R 语言数据结构.数据导入与数据处理 实验二 基本数据处理 实验三 数据可视化 实验四 数据分析 实验五 综合应用 实验数据 实验数据下载 1. systation 数据集 sy ...
- c语言程序设计 实验五数组6,实验五 数组——一维数组.doc
实验五 数组--一维数组 淮海工学院计算机科学系实验报告书 课程名:< C语言程序设计教程> 题 目: 实验五 数组--一维数组 班 级: 学 号: 姓 名: 评语: 成绩: 指导教师: ...
- 输出两个整数中最大的书c语言,c语言程序设计实验指中导书-2.doc
C程序设计II实验指导书 信息工程学院计算机系 目 录 C程序设计实验要求2 实验一 指针应用2 2011 求平均成绩2 2012 字符串排序3 2013 字符串比较3 2014 学生成绩统计(选做) ...
最新文章
- 《请不要回应外星人2019》
- R语言使用ggplot2可视化凹凸图(bumps chart、凹凸图是一种特殊形式的线图,旨在探索随着时间的推移等级的变化)、并设置凹凸图的线条为曲线而不是直线(change into curves)
- 笔记-中项案例题-2020年下-风险管理
- 20150309+Linux+LAMP安装-02
- 看别人情侣空间显示服务器繁忙什么意思,调查13000位80后年轻人,他们的感情状态究竟如何?...
- 集 Python、C、R、Ruby 之所长,动态编程语言 Julia 1.0 正式发布
- 高性能编程之IO复用之epoll
- 求助大神!ROST EA情感分析软件情感词典如何更新
- 黑莓9000和9900哪个好_入手黑莓9900,黑莓手机9900怎么样?
- android7.1.2 xposed,安卓7.1 xposed框架
- 全类销项发票电子化管理系统:iBox+RPA的开票流程数字化
- FTP上传和下载文件名称中文乱码问题
- 六度分离 (Floyd算法)
- 信能阳光——打造国内体育照明领域的旗舰品牌
- 该死!辛苦制作的PDF文档被人随意传播,甚至还被拿去卖钱?
- 原创 牛客网产品笔试题刷题打卡——用户研究
- 【JavaEE】进入Web开发的世界-CSS
- 美国FDA注册,罐头食品FDA注册
- iphone和mac互传文件_怎样快速在iphone与mac之间传文件
- Java超级工具_Java 16个超级实用的工具类