语法分析器编译原理课程设计报告.docVIP

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

LL(1) 语法分析器 一 、课程设计的目的 通过课程设计进一步理解高级语言在计算机中的执行过程,加深对编译原理中重点算法和编译技术的理解,提高自己的编程能力,培养好的程序设计风格。同时通过某种可视化编程语言的应用,具备初步的Windows环境下的编程思想。解和掌握LL(1)语法分析方法的基本原理;根据给出的LL(1)文法,掌握LL(1)分析表的构造及分析过程的实现。 二、课程设计的要求及其方法 语法分析程序要求实现sample语言中几种最常见的、基本的语法单位的分析:算术表达式,逻辑表达式,赋值语句,if语句,for语句,while语句,repeat语句等,各个语法单位的定义如下: Sample语言的定义 字符::=字母|数字|界符 字母::=a|b|c…|z|A|B|C…|Z 数字::=0|1|2|3…|9 单界符::=+|-|*|/|=|||(|)|[|]|:\;|,|’|_|. 单词集的定义 (1) 单词集::=保留字|双界符|标识符|常数|单界符 (2) 保留字 ::=and|array|begin|bool|call|case|case|char|const|do|dlse|end|false|for|if|input|integer|not|of|or|output|program|read|real|repeat|set|then|to|true|until|var|while|write (3)双界符::=/*|*/|=|=||:= (4)标识符::=字母|标识符数字|标符字母 (5)常数::=整数|布尔常数|字符常数|常数标识符|实数 (6)整数::=数字|整数数字 (7)布尔常数::=true|false (8)字符常数::=’除’以外的任意字符串’ (9)常数标识符::=标识符 (10)实数::=整数.整数 数据类型的定义 (1)简单类型:==integer|bool|char|real 表达式的定义 (1)表达式::=算术表达式|逻辑表达式 (2)算术表达式::=项+-算术表达式|+-项|项 (3)项:==项*因子|项/因子|因子 (4)因子::=算术量 (5)算术量::=标识符|整数 (6)逻辑表达式::=布尔项or逻辑表达式|布尔项 (7)布尔项::=布尔因子and布尔项|布尔因子 (8)布尔因子::=布尔量|not布尔因子 (9)布尔量::=逻辑表达式|布尔常数|标识符|算术表达式关系符算术表达式 (10)关系符::=|||=|=|= 语句的定义 (1)语句::=说明语句|执行语句 (2)说明语句::=常数说明变量说明 (3)常量说明::=const常数定义|ε (4)常数定义::=标识符=常数;常数定义|标识符=常数; 变量说明::=var变量定义|ε 变量定义::=标识符表:类型;|标识符表:类型;变量定义 标识符表::=标识符,标识符表|标识符 执行语句::=简单句|结构句 简单句::=赋值句 赋值句::=变量:=表达式 变量::=标识符 结构语句::=复合句|if语句|while语句|for语句|repeat语句 复合句::=begin语句表end 语句表::=执行句;语句表|执行句 if语句::=if布尔表达式then执行句 if语句::=if布尔表达式then执行句1else执行句2 while语句::=while布尔表达式do执行句 for语句::=for标识符::=算术表达式1to算术表达式2do执行句 repeat语句::=repeat执行句until布尔表达式 程序定义 (1)程序::=program标识符;分程序 (2)分程序::=常量说明变量说明复合句 本次语法分析器课程设计采用LL(1)自顶向下析法来实现。 三、课程设计的内容 根据下面LL(1)文法,对输入串w: (i+i)*(i+i)+i*i进行LL(1)分析,要求如下: 先建立LL(1)分析表; 分析输入串,判断是否是语法上正确的句子,若正确则输出整个自顶向下分析过程。若是在语法上不正确则报错。 四、实现原理 语法分析的任务是在词法分析的基础上,主要任务是接受词法分析程序识别出来的单词符号,判断它们是否由某种语言的文法产生,即判断被识别符号串是否为某语法成分.除此之外,还要进行语法检查,为后面的语义分析和代码生成做准备.根据语言的语法规则,把单词符号串分解成各类语法范畴。实现Sample语言中几种最常见的,基本的语法单位的分析: 算术表达式.逻辑表达式,赋执语句,IF语句,FOR语句,WHLIE语句REPEAT语句等:通过语法分析,可以确定整个输入串是否构成语法上正确的“程序”。语法分析阶段遵循的是语言的语法规则。 该语法分析器的主要组成即常量说明的函数

文档评论(0)

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

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

1亿VIP精品文档

相关文档