ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:335.12KB ,
资源ID:20181744      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20181744.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验四编译用Yacc工具构造语法分析器Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验四编译用Yacc工具构造语法分析器Word文件下载.docx

1、int printf(INT);return(BASIC);float printf(FLOAT);break printf(BREAK);return(BREAK);do printf(DO);return(DO);while printf(WHILE);return(WHILE);true printf(TRUE);return(TRUE);index printf(INDEX);return(INDEX);bool printf(BOOL);char printf(CHAR);real printf(real);return(REAL);false printf(FLASE);retur

2、n(FALSE);a-zA-Z_a-zA-Z0-9_*printf(ID);return(ID);+-?0-9+printf(NUM);return(NUM);0-9*.0-9+printf(NUM);printf(LT);return();printf(GT);=printf(GE);return(GE);+printf(+);return(+);-printf(-);return(-);printf();(printf();)printf();printf(;);return(;,printf(,);return(,);&printf(&return(AND);|printf(|);ret

3、urn(OR);%Myyacc.y%#include#include extern int yylex();extern int yyerror();%token NUM%token ID%token IF WHILE DO BREAK REAL TRUE FALSE BASIC ELSE INDEX GE LE NE EQ AND OR%program:block printf(program-blockn);block:decls stmts printf(block-decls stmtsn);decls:|decls decl printf(decls-decls decln);dec

4、l:type ID;printf(decl-type id;n);type:type NUM printf(type-typenumn);|BASIC printf(type-basicn);stmts:|stmts stmt printf(stmts-stmts stmtn);stmt:matched_stmt printf(stmt-matched_stmtn);|open_stmt printf(stmt-open_stmtn);open_stmt:IF(booL)stmt printf(open_stmt-if(bool)stmtn);|IF(booL)matched_stmt ELS

5、E open_stmt printf(open_stmt-if(bool)matched_stmt else open_stmtn);matched_stmt:IF(booL)matched_stmt ELSE matched_stmt printf(matched_stmt-if(bool)matched_stmt else matched_stmtn);|other printf(matched_stmt-othern);other:loc=booL;printf(stmt-loc=bool;|WHILE(booL)stmt printf(stmt-while(bool)stmtn);|D

6、O stmt WHILE(booL);printf(stmt-do stmt while(bool);|BREAK;printf(stmt-break;|block printf(stmt-blockn);loc:loc booL printf(loc-locbooln);|ID printf(loc-idn);booL:booL OR join printf(bool-bool|joinn);|join printf(bool-joinn);join:join AND equality printf(join-join&equalityn);|equality printf(join-equ

7、alityn);equality:equality EQ rel printf(equality-equality=reln);|equality NE rel printf(equality-equality!=reln);|rel printf(equality-reln);rel:expr exprexprexpr=exprn);|expr expr printf(rel-exprexprn);|expr printf(rel-exprn);expr:expr+term printf(expr-expr+termn);|expr-term printf(expr-expr-termn);

8、|term printf(expr-termn);term:term*unary printf(term-term*unaryn);|term/unary printf(term-term/unaryn);|unary printf(term-unaryn);unary:!unary printf(unary-!unaryn);|-unary printf(unary-unaryn);|factor printf(unary-factorn);factor:(booL)printf(factor-(bool)n);|loc printf(factor-locn);|NUM printf(fac

9、tor-numn);|REAL printf(factor-realn);|TRUE printf(factor-truen);|FALSE printf(factor-falsen);%int yyerror(s)char*s;fprintf(stderr,syntactic error:%sn,s);return 0;6、实验结果 7、实验总结 实验中的注意事项:(1)一个由 Yacc 生成的解析器调用 yylex()函数来获得标记。对于由 Lex 生成的 lexer 来说,要和 Yacc 结合使用,每当 Lex 中匹配一个模式时都必须返回一个标记。因此 Lex 中匹配模式时的动作一般格式

10、为:pattern /*do smthg*/return TOKEN_NAME;于是 Yacc 就会获得返回的标记。当 Yacc 编译一个带有 _d 标记的 myyacc.y文件时,会生成一个头文件 myyacc.tab.h,它对每个标记都有#define 的定义。如果 Lex 和 Yacc 一起使用的话,头文件必须在相应的 Lex 文件 mylex.l 中的 C 声明段中包括。(2)在 myyacc.y中要加入对函数 int yylex()和函数 int yyerror()的外部声明。(3)对文件放置的位置也要很小心,不然很容易就造成错误(4)这次的实验使我对语法分析的过程更加了解,更多的掌握了移进规约技术语法分析,对理论知识起到了巩固的作用,加强了编译整个理论体系的认识,也对flex&bison 的操作有了更深一步的了解。Welcome To Download!欢迎您的下载,资料仅供参考!

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1