- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
语法分析实验语法分析(LR)
实 验 报 告
课程名称 编译原理
实验名称 语法分析(LR)
班 级 计科1203
学 号 201207010321
姓 名 马万里
指导教师 黄 全 舟
实验日期 2015.5.21
一、实验目的
构造LR(1)分析程序,利用它进行语法分析,判断给出的符号串是否为该文法识别的句子,了解LR(K)分析方法是严格的从左向右扫描,和自底向上的语法分析方法。?
二、实验原理
(1)总控程序,也可以称为驱动程序。对所有的LR分析器总控程序都是相同的。?
(2)分析表或分析函数,不同的文法分析表将不同,同一个文法采用的LR分析器不同时,分析表将不同,分析表又可以分为动作(ACTION)和状态转(GOTO)表两个部分,它们都可用二维数组示。?
(3)分析栈,包括文法符号栈和相应的状态栈,它们均是先进后栈。分析器的 动 作就是由栈顶状态和当前输入符号所决定。
LR分析器由三个部分组成:
INCLUDEPICTURE \d /docconvert2785-nj//wk/f3bcd63db6d7686314686f669fbbf32b/0.png?sign=MBOT:y1jXjmMD4FchJHFHIGN4z:HzQkbGyNFp8pplDA1dlp8VPpjq0=time=1432469065range=0-8128response-cache-control=max-age=3888000response-expires=Wed, 08 Jul 2015 19:04:25 +0800 \* MERGEFORMATINET
其中:SP为栈指针,S[i]为状态栈,X[i]为文法符号栈。状态转换表用GOTO[i,X]=j表示,规定当栈顶状态为i,遇到当前文法符号为X时应转向状态j,X为终结符或非终结符。?ACTION[i,a]规定了栈顶状态为i时遇到输入符号a应执行。
主要仪器设备
Pc机一台(装有vs2012)
四、主要代码及其说明
#include stdio.h
#include string.h
#include vector
#include iostream
using namespace std;
#define N 10
char *Action[][4]=
{ //此处三维也可以
{S3, S4, ERROR,ERROR},
{ERROR,ERROR,ERROR,acc},
{ERROR,ERROR,S5, R2},
{ERROR,ERROR,R3, R3},
{ERROR,ERROR,R4, R4},
{S3, S4, ERROR,ERROR},
{ERROR,ERROR,ERROR,R1}};
Int GoTo[][2]={{1,2},{0,0},{0,0},{0,0},{0,0},{6,2},{0,0}};
char *GL[]={L-E,L,L-E,E-a,E-b };
int _Push(vector int State,vector char InChar,int a,char b)
{
State.push_back(a);
InChar.push_back(b);
return a;
}
void _Pop(vector int State,vector char InChar,int cout)
{
while(cout)
{
State.pop_back();
InChar.pop_back();
cout--;
}
}
void PrinStack(vector int State,vector char InChar)//状态栈 和栈中符号输出
{
vector int::iterator iter_s =State.begin();
vector char::iterator iter_i=InChar.begin();
for(;iter_s !=State.end();iter_s++)
{
cout*iter_s;
}
printf(\t);
for(;iter_i !=InChar.end();iter_i++)
{
cout*iter_i;
}
printf(\t\t);
}
void printInCh
您可能关注的文档
- 诊断学考试重点总结完整.docx
- 诊断期末整理笔记.doc
- 诊疗总结颈椎病2013年.doc
- 试卷(油层物理).doc
- 译林牛津高中英语模块五课文翻译.doc
- §182隐函数组.ppt
- 试卷2014大同杯复赛卷.doc
- 试卷模板空白A卷.docx
- 试卷深度分析实例.doc
- 试论《受戒》.doc
- 广东省深圳市龙岗区德琳学校初中部2022-2023学年七年级上学期期中考试英语试题(原卷版+解析).docx
- 广东省珠海市第四中学、立才学校、梅华中学2022-2023学年七年级上学期期中质量检测英语试题(原卷版+解析).docx
- 教科版2024-2025学年六年级科学上册第一单元第4课时《生物细胞》同步练习(含答案).docx
- 牛津沪教版七年级英语上册单元速记•巧练 Unit 7 【单元测试 · 提高卷】.docx
- 牛津沪教版七年级英语上册单元速记•巧练 Unit 5【单元测试 · 基础卷】.docx
- 广东省深圳市南山区太子湾学校2022-2023学年七年级上学期期中考试英语试题(原卷版+解析).docx
- 广东省深圳市南山第二外国语学校(集团)2022-2023学年七年级上学期期中考试英语试题(含听力)(原卷版+解析).docx
- 牛津沪教版七年级英语上册单元速记•巧练 2023-2024学年七年级上学期期末英语全真模拟卷(深圳适用02).docx
- 广东省阳江市江城区2022-2023学年七年级上学期期中考试英语试题(原卷版+解析).docx
- 广东省梅州市梅县区宪梓中学2022-2023学年七年级上学期期中英语试题(原卷版+解析).docx
文档评论(0)