编译方法实验-Read.pptVIP

  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文档。上传文档
查看更多
编译方法实验-Read.ppt

内容 实验概述 PL0语言简介 词法分析器实验部分 实验设置 实验内容 PL/0编译器的实现 实验目的 理解编译器的工作机制 掌握编译器的构造方法 掌握词法分析器的生成工具LEX的用法 掌握语法分析器的生成工具YACC的用法 实验要求 独立完成 按时提交 迟交影响成绩 文档清晰 程序说明 心得体会 鼓励扩展 实验环境与考评 成绩评定 程序 文档 实验分成三部分: 词法分析 语法分析 语义分析和代码生成 实验环境 Windows C或C++ PL/0编译程序的实验流程 PL/0 语言简介 PL/0语言是Pascal语言的子集 数据类型只有整型 标识符的有效长度是10,以字母开始的字母数字串 数最多为14位 过程无参,可嵌套(最多三层),可递归调用 变量的作用域同PASCAL,常量为全局的 PL/0 语言简介 语句类型:赋值语句,if...then..., while...do..., read, write, call, 复合语句begin... end, 说明语句: const..., var..., procedure… 13个保留字:if, then, while, do, read, write, call, begin, end, const, var, procedure, odd PL0语言的EBNF范式 EBNF:可说明哪些符号序列是对于某给定语言在语法上有效的程序。 EBNF范式的符号说明 :语法构造成分,为非终结符 ::= :该符号的左部由右部定义,读作“定义为” | :或 { }:括号内的语法成分可重复 [ ]:括号内成分为任选项 ( ):圆括号内成分优先 PL0语言的EBNF范式 程序 ::= 分程序. 分程序 ::= [常量说明部分][变量说明部分][过程说明部分]语句 常量说明部分 ::= CONST常量定义{,常量定义}; 常量定义 ::= 标识符=无符号整数 无符号整数 ::= 数字{数字} 变量说明部分 ::= VAR标识符{,标识符}; 标识符 ::= 字母{字母|数字} PL0语言的EBNF范式 过程说明部分 ::= 过程首部分程序{;过程说明部分}; 过程首部 ::= PROCEDURE标识符; 语句 ::= 赋值语句|复合语句|条件语句|当型循环语句|过程调用语句|读语句|写语句|空 赋值语句 ::= 标识符:=表达式 复合语句 ::= BEGIN语句{;语句}END 条件 ::= 表达式关系运算符表达式|ODD表达式 条件语句 ::= IF条件THEN语句 PL0语言的EBNF范式 表达式 ::= [+|-]项{加法运算符项} 项 ::= 因子{乘法运算符因子} 因子 ::= 标识符|无符号整数|’(‘表达式’)’ 加法运算符 ::= +|- 乘法运算符 ::= *|/ 关系运算符 ::= =|#||=||= 当型循环语句 ::= WHILE条件DO语句 过程调用语句 ::= CALL标识符 PL0语言的EBNF范式 读语句 ::= READ’(‘标识符{,标识符}’)’ 写语句 ::= WRITE’(‘表达式{,表达式}’)’ 字母 ::= a|b|...|X|Y|Z 数字 ::= 0|1|...|8|9 PL/0语言词法分析器的实现 实验内容:用flex工具生成一个PL/0语言的词法分析程序,对PL/0语言程序进行扫描,识别出单词符号的类别,统计输出各种符号的信息 输入:PL0源程序 输出:单词符号串的统计结果 实验环境: 词法分析器生成工具:flex 编程语言:C 调试环境:VC++, Turbo C PL/0语言词法分析器的实现 例如,对如下的程序: var a,b; procedure test; var t; begin t := 1; end; begin call test; end. 词法分析结果输出,类别包括关键字v(keyword), 标识符(ident), 整数(integer),算符(operator),界符(symbol), 其他 (other) ,各类中单词符号串按字母排序 keyword: begin 2 time(s) … ident: a 1 time(s) … integer: 1 time(s) LEX概述 LEX是一个词法分析器的自动产生系统。 LEX源程序的核心是识别规则,它由正规式和动作组成。 LEX源程序的格式 %{ 声明 --可选 %} 辅助定义 --可选 %% 识别规则 --必须有 %% 用户子程序 --可选 声明 所有嵌在“%{”和“%}”之间的内容将被原样拷贝到lex.yy.c文件中。 在声明中,可以引入头文件、宏定义

文档评论(0)

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

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

1亿VIP精品文档

相关文档