实验五 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相关推荐

  1. c语言程序设计 实验五数组6,c语言实验五数组程序设计解答.doc

    c语言实验五数组程序设计解答.doc 实验五数组应用(二)一.实验目的1(掌握二维数组的定义和初始化.2(掌握二维数组元素的引用及其应用.3(掌握字符数组的定义和初始化.4(掌握字符数组元素的引用及其 ...

  2. c语言实验五函数答案,C语言程序设计实验五 参考答案.doc

    C语言程序设计实验五 参考答案 实验5 函数(1)参考答案 5-1.以下程序的功能:从键盘输入两个数,计算出他们的和,并将结果输出在屏幕上.调试运行程序,观察出现了什么错误,提出修改方案. 答案: # ...

  3. c语言switch逻辑用语,C语言习题(前五章)参考答案.doc

    C语言习题(前五章)参考答案.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3. ...

  4. 从0开始的python学习:编译原理实验4:语法分析器1--预测分析器构造

    这里刚开始试用python的函数功能,可能把局部变量和全局变量给写乱了,后期交之前还想再优化的时候发现越改越乱,太真实的hhh 实验四:语法分析器1–预测分析器构造 实验目的: 通过编写一个预测分析器 ...

  5. lr1分析器c语言实验报告怎么写,编译原理课程的设计构造LR分析法语法分析器.doc...

    编译原理课程的设计构造LR分析法语法分析器 太 原 学 院 课程设计报告书 课程名称 设计题目 构造LR(0)分析法语法分析器 专业班级 学 号 姓 名 指导教师 2016年 12 月 15日 目 录 ...

  6. 编译原理预测分析法c语言,编译原理预测分析法C语言的实验报告.doc

    题目:编写识别由下列文法所定义的表达式的预测分析程序. EàE+T | E-T | T TàT*F | T/F |F Fà(E) | i 输入:每行含一个表达式的文本文件. 输出:分析成功或不成功信息 ...

  7. 【R语言】实验五 综合应用

    系列文章目录 实验一 R 语言数据结构.数据导入与数据处理 实验二 基本数据处理 实验三 数据可视化 实验四 数据分析 实验五 综合应用 实验数据 实验数据下载 1. systation 数据集 sy ...

  8. c语言程序设计 实验五数组6,实验五 数组——一维数组.doc

    实验五 数组--一维数组 淮海工学院计算机科学系实验报告书 课程名:< C语言程序设计教程> 题 目: 实验五 数组--一维数组 班 级: 学 号: 姓 名: 评语: 成绩: 指导教师: ...

  9. 输出两个整数中最大的书c语言,c语言程序设计实验指中导书-2.doc

    C程序设计II实验指导书 信息工程学院计算机系 目 录 C程序设计实验要求2 实验一 指针应用2 2011 求平均成绩2 2012 字符串排序3 2013 字符串比较3 2014 学生成绩统计(选做) ...

最新文章

  1. 《请不要回应外星人2019》
  2. R语言使用ggplot2可视化凹凸图(bumps chart、凹凸图是一种特殊形式的线图,旨在探索随着时间的推移等级的变化)、并设置凹凸图的线条为曲线而不是直线(change into curves)
  3. 笔记-中项案例题-2020年下-风险管理
  4. 20150309+Linux+LAMP安装-02
  5. 看别人情侣空间显示服务器繁忙什么意思,调查13000位80后年轻人,他们的感情状态究竟如何?...
  6. 集 Python、C、R、Ruby 之所长,动态编程语言 Julia 1.0 正式发布
  7. 高性能编程之IO复用之epoll
  8. 求助大神!ROST EA情感分析软件情感词典如何更新
  9. 黑莓9000和9900哪个好_入手黑莓9900,黑莓手机9900怎么样?
  10. android7.1.2 xposed,安卓7.1 xposed框架
  11. 全类销项发票电子化管理系统:iBox+RPA的开票流程数字化
  12. FTP上传和下载文件名称中文乱码问题
  13. 六度分离 (Floyd算法)
  14. 信能阳光——打造国内体育照明领域的旗舰品牌
  15. 该死!辛苦制作的PDF文档被人随意传播,甚至还被拿去卖钱?
  16. 原创 牛客网产品笔试题刷题打卡——用户研究
  17. 【JavaEE】进入Web开发的世界-CSS
  18. 美国FDA注册,罐头食品FDA注册
  19. iphone和mac互传文件_怎样快速在iphone与mac之间传文件
  20. Java超级工具_Java 16个超级实用的工具类

热门文章

  1. P1247ybtoj【数学基础】5章1题【取火柴游戏】
  2. 学习streamlit-5
  3. Windows高级防火墙配置
  4. 日语学习日记之先导篇 20211130
  5. Antimalware Service Executable 高内存 处理办法
  6. Simulink使用之HDL Code使用步骤(一)
  7. SpringCloud--服务注册与服务发现
  8. 你知道黑龙江科技大学吗
  9. IDEA安装JavaFx
  10. strtol()函数与strtoul()函数的用法