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