编译原理(语法分析程序设计).doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:11 大小:1.1MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

编译原理(语法分析程序设计).doc

编译原理(语法分析程序设计).doc

预览

免费试读已结束,剩余 1 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

PAGE\*MERGEFORMAT11一、实验内容和目的1.已知待分析的C语言子集的语法,用EBNF表示如下:(1)<程序>→main()<语句块>(2)<语句块>→“{”<语句串>“}”(3)<语句串>→<语句>{;<语句>};(4)<语句>→<赋值语句>|<条件语句>|<循环语句>(5)<赋值语句>→ID=<表达式>(6)<条件语句>→if(条件)<语句块>(7)<循环语句>→while(<条件>)<语句块>(8)<条件>→<表达式><关系运算符><表达式>(9)<表达式>→<项>{+<项>}|<项>{-<项>}(10)<项>→<因子>{*<因子>}|<因子>{/<因子>}(11)<因子>→ID|NUM|(<表达式>)(12)<关系运算符>→<|<=|>|>=|==|!=2.实验目的、要求实现的功能实验目的:编制一个语法分析程序,实现对词法分析程序所提供的单词序列进行语法检查和结构分析。实验要求:在上机(一)词法分析的基础上,采用递归子程序法或其他适合的语法分析方法,实现其语法分析程序。要求编译后能检查出语法错误。3.将实验方法改写为适合预测分析法的文法如下:(1)<程序>→main()<语句块>(2)<语句块>→{<语句串>}(3)<语句串>→<语句>;<语句串>(3_1)<语句串>→ε(4)<语句>→<赋值语句>(5)<语句>→<条件语句>(6)<语句>→<循环语句>(7)<赋值语句>→ID=<表达式>(8)<条件语句>→if(<条件>)<语句块>(9)<循环语句>→while(<条件>)<语句块>(10)<条件>→<表达式><关系运算符><表达式>(11)<表达式>→<项><表达式`>(11_1)<表达式`>→+<项><表达式`>(11_2)<表达式`>→-<项><表达式`>(11_3)<表达式`>→ε(12)<项>→<因子><项`>(12_1)<项`>→*<因子><项`>(12_2)<项`>→/<因子><项`>(12_3)<项`>→ε(13)<因子>→ID(14)<因子>→NUM(15)<因子>→(<表达式>)(16)<关系运算符>→<(17)<关系运算符>→<=(18)<关系运算符>→>(19)<关系运算符>→>=(20)<关系运算符>→==(21)<关系运算符>→!=4.求改写后文法的非终结符号的FIRST集和FOLLOW集:非终结符号FIRSTFOLLOW<程序>main#<语句块>{#;<语句串>IDifwhileε}<语句>IDifwhile;<赋值语句>ID;<条件语句>if;<循环语句>while;<条件>IDNUM()<表达式>IDNUM(<<=>>===!=);<表达式`>+-ε<<=>>===!=);<项>IDNUM(+-<<=>>===!=);<项`>*/ε+-<<=>>===!=);<因子>IDNUM(*/<关系运算符><<=>>===!=IDNUM(5.根据求得的FIRST集和FOLLOW集构造LL(1)分析表如下:表格内空白的部分表示“出错”,非空白部分表示要压入分析栈中的文法符号,是按照对应产生式的逆序存放的,即当查找分析表时,表格内的内容从左至右依次入栈。第3步中改写文法的LL(1)分析表mainifwhileIDNUM(){}+-*/<<=>>===!==;#<程序><语句块>)(main<语句块>}<语句串>{<语句串><语句串>;<语句>ε<语句><条件语句><循环语句><赋值语句><赋值语句><表达式>=ID<条件语句><语句块>)<条件>(if<循环语句><语句块>)<条件>(while<条件><表达式><关系运算符><表达式><表达式><表达式`><项><表达式`>ε<表达式`><项>+<表达式`><项>-εεεεεεε<项><项`><因子><项`>εεε<项`><因子>*<项`><因子>/εεεεεεε<因子>IDNUM)<表达式>(<关系运算符><<=>>===!=二、所用仪器、材料(设备名称、型号、规格等)操作系统:MicrosoftWindows7开发平台:MicrosoftVisualStudio2010三、实验方法、步骤登录MicrosoftWindows7操作系统打开VisualStudio2010开发平台新建“项目”“Win32控制台应用程序”输入项目名称“应用程序设置”勾选“空项目”复选框右击左侧“解决方案资源管理器”下的“源文件”“添加”“新建项…”新建一个“C++文件(.cpp)”在新建的.cpp文件中输入语法分析代码调试运行记录结果完成实验报告。四、实验过