- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验3LR语法分析精要
Zhou, Erqiang 编译技术实验(3) LR 语法分析 周尔强 2015年10月 实验报告提交 Zhou, Erqiang * School of Information and Software Engineering 实验上传网址 用户名:身份证后6位 + 学号后6位 中间没有 + 上传后一定确认无误后再提交 一旦提交,便无法更新 1:8880/experiment/Login/login.xhtml 关于Bison/Yacc Yacc (Yet Another Compiler Compiler) Yacc是生成语法分析器的工具 Bison 是 GNU 版本的 Yacc Bison会自动生成一个语法分析器 Zhou, Erqiang * School of Information and Software Engineering 关于Bison/Yacc Zhou, Erqiang * School of Information and Software Engineering a = b + c * d id = id + id * id 词法分析器 语法分析器 源程序 词法记号序列 抽象语法树 Flex Bison 词法规则 (正则表达式) 语法规则 (文法) 代码生成 = id (a) + id (b) * id (c) id (d) 词法分析器与语法分析器的交互 flex: yylex() Bison: yyparser() 语法分析器yyparser需要下一个新单词时,调用词法分析子程序yylex,yylex从输入串中识别一个单词后返回。 关于Bison/Yacc Zhou, Erqiang * School of Information and Software Engineering 既然yyparser要处理 yylex的返回值 需要对yylex的返回值进行约定 在Bison源文件中定义 %token NUMBER 生成语法分析器时使用 -d 参数生成 xxx.tab.h 即 bison -d xxx.y 得到 xxx.tab.h 和 xxx.tab.c 其中 xxx.tab.h中有 #define NUMBER 258 该头文件需要被包含进 xxx.l 的定义部分 关于Bison/Yacc Zhou, Erqiang * School of Information and Software Engineering 关于Bison/Yacc Zhou, Erqiang * School of Information and Software Engineering y.tab.c (yyparser) lex.yy.c (yylex) 其它源程序 gcc 编译 Bison Flex calc.y calc.l y.tab.h calc.exe bison –d calc.y // 生成 y.tab.h, y.tab.c flex calc.l // 生成 lex.yy.c, calc.l中要include y.tab.h gcc lex.yy.c y.tab.c –o calc.exe // 编译、链接 yylex的返回的是词法记号(单词编号) 而一词法记号有相应的属性:标识符、常数等 词法记号的属性值如何返回? 语法分析器如何访问 token 的属性? 约定使用全局变量 yylval yylval 的类型默认为整数类型,用户可自己定义 一般定义为 union 类型 关于Bison/Yacc Zhou, Erqiang * School of Information and Software Engineering ... 定义 ... %% ... 语法规则(文法及对应的处理) ... %% ... 函数定义 ... 其中: 定义部分的C源代码需要放在 %{ 与 %} 之间 Bison 文件的结构 Zhou, Erqiang * School of Information and Software Engineering LR 分析举例(一) Zhou, Erqiang * School of Information and Software Engineering %{ #include stdio.h int yylex(void); void yyerror(char *); %} %token NUMBER %% 语法部分 %% voi
您可能关注的文档
- 实测实量实施方案.pptx
- 抗菌药物应用新观念及新进展.ppt
- 折叠式客厅家具调研报告.pptx
- 投标演示文稿.ppt
- 实用类文本探究题指导说课.docx
- 折线统计图.doc
- 抗血小板药物总结.ppt
- 折边胶产品技术标准.docx
- 折射和全反射练习题.doc
- 抚远县园林绿化市政分布示意图.doc
- 2024年甘肃省临夏回族自治州乡族撒拉族自治县数学六上期末达标检测模拟试题含解析.doc
- 2024年广东省兴宁市数学六上期末质量跟踪监视模拟试题含解析.doc
- 2024年广西壮族南宁市隆安县六上数学期末检测模拟试题含解析.doc
- 2024年河南省商丘市柘城县皇集乡王克仁学校数学六年级第一学期期末预测试题含解析.doc
- 2024年海林市六上数学期末联考试题含解析.doc
- 2024年海南省三亚市吉阳区和平实验学校数学六上期末质量检测试题含解析.doc
- 2024年河北省秦皇岛市山海关区六年级数学第一学期期末综合测试试题含解析.doc
- 2024年贵州省黔东南南苗族侗族自治州台江县六上数学期末监测模拟试题含解析.doc
- 2024年广西壮族崇左市凭祥市数学六年级第一学期期末学业水平测试模拟试题含解析.doc
- 2024年广东省广州市番禺区六年级数学第一学期期末复习检测试题含解析.doc
文档评论(0)