语法分析器(完整代码)1.docVIP

  1. 1、本文档共38页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
语法分析器(完整代码)1,语法分析器源代码,java语法分析器源代码,java语法分析器代码,c语法分析器源代码,语法分析器,语法分析器的任务,语法分析器可以用于,编译原理语法分析器,java语法分析器

语法分析实验报告 一、实验目的: 1. 了解单词(内部编码)符号串中的短语句型结构形成规律。 2. 理解和掌握语法分析过程中语法分析思想(LL,LR)的智能算法化方法。 二、实验内容: 构造自己设计的小语言的语法分析器: 1. 小语言的语法描述(语法规则)的设计即文法的设计; 2. 把文法形式符号中所隐含的信息内容挖掘出来并用LL或LR的资料形式(分析表)表示出来; 3. 语法分析的数据输入形式和输出形式的确定; 4. 语法分析程序各个模块的设计与调试。 主要设备和材料:电脑、winxp操作系统、VC语言系统 三、实验分工: 学 号 姓 名 实 验 分 工 0815053 刘俊杰 实验代码设计及编写 0815054 刘康 检查校对代码 0815050 李晓梅 写电子版实验报告 0815048 李姗姗 查找、分析、整理资料 0815066 任梦杰 查找、分析、整理资料 0805036 韩宁宁 后勤服务 0815117 朱永庆 组长助理 0815097 曾文亚 分模块调试 四、实验步骤: 1、语法规则 ① 程序 ::= {变量定义语句 | 赋值语句 | 条件语句 | 循环语句 } ② 变量定义语句 ::= var 变量{,变量}; ③ 赋值语句 ::= 变量 := 表达式; ④ 表达式 ::= 标识符{运算符 标识符 }; ⑤ 标识符 ::= 变量 |常量 ⑥ 运算符 ::= + | - | * | / | = | = ⑦ 条件语句 ::= if语句[else语句] ⑧ if语句 ::= if(表达式) then[begin] {赋值语句 |条件语句 | 循环语句}[end] ⑨ else语句 ::= [begin] {赋值语句 | 条件语句 | 循环语句} [end] ⑩ 循环语句 ::= while(表达式) [begin] {赋值语句 | 条件语句 | 循环语句} [end] 输出语句 ::= prn 表达式 --注1:若if语句、else语句、循环语句中出现begin,后面的end必须出现,即begin与end同对出现 --注2:if、while后的(,)表示终结符,而不是定义成分优先的说明符号 2、分析表: : = 变量 常量 , ; 运算符 ( ) 变 量 定 义 -② -② -② -② 赋 值 语 句 -③ -③ -③ -③ -③ 条 件语 句 -⑦ -⑦ -⑦ -⑦ -⑦ -⑦ -⑦ 循 环语 句 -⑩ -⑩ -⑩ -⑩ -⑩ -⑩ -⑩ 输 出语 句 - - - 分析表(续): while var begin end if then prn 变 量 定 义 -② 赋 值 语 句 条 件 语 句 -⑦ -⑦ -⑦ -⑦ 循 环 语 句 -⑩ -⑩ -⑩ 输 出 语 句 - 调试和测试 五、源代码(见附录): 六、实验总结: 本实验在词法分析的基础上,对提取出的标识符进行语法判断。对已有的语法规则运用LL(1)文法判别并进行构造分析表时,遇到的最大困难是:当发生规约冲突时,该如何处理。如对于产生式s--aAb,当对a进行规约时,满足语法规则的β(用户输入串中当前要进行规约的标识符)只有有限种,而不满足的却有无限种情况。当发生规约冲突时,如何在这无限种情况中,确定冲突的具体信息,以便用户查找。在反复的尝试和验证中,我们发现发生冲突的用户输入串满足一定的规律,且按这种规律可以把这无限种情况化归为有限类,于是我们找出其中规律并进行划分,然后再对这些有限类冲突进行处理。 七、实验心得: 通过这次实验有以下几点收获: 1. LR(1)的构造使得对理论的知识理解的更加透彻。其中LR(1)分析表构造了很多遍,一直无法得到正确结果,这是恒心的考验。 2. 在写程序中用类数组来存放单词属性使得对单词各项值的调用更加方便,特别是对出错信息的检测有很大的作用。 3. 本实验是在词法基础上的更进一步,在词法程序上添加语法程序,更加理解二者之间的关系。词法分析为语法分析提供了词法单元,方便分析,使程序模块化,易于读懂。 附录: #include iostream #include fstream #include string #include math.h #include ctype.h #include cstdlib using namespace std; #d

文档评论(0)

tianma2015 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档