- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 《编译原理与技术》讲义 * e.g.33 简单的算术表达式计算器 /* 定义段:*/ %{ #include stdio.h #include ctype.h %} %token number %% * 《编译原理与技术》讲义 * e.g.33 简单的算术表达式计算器(续) /* 规则段:*/ Line : Expr { printf( “the value is %d\n”,$1);} ; Expr : Expr ‘+’ Term { $$ = $1 + $3; } | Expr ‘-’ Term { $$ = $1 - $3; } | Term ; Term : Term ‘*’ Factor { $$ = $1 * $3; } | Term ‘/’ Factor { if ( $3==0 ) { printf(“divided by zero”);exit(1); } else $$ = $1 / $3; } * 《编译原理与技术》讲义 * e.g.33 简单的算术表达式计算器(续) /* 规则段:*/ Term : Term ‘*’ Factor {…} | Term ‘/’ Factor { …} | Factor { $$ = $1; } ; Factor : ‘(‘ Expr ‘)’ { $$ = $2;} | number ; %% * 《编译原理与技术》讲义 * /* 程序段 */ main() { return yyparse(); } int yylex() { int c; while ( ( c=getchar() ) == ‘ ‘ ); // skip blanks; if ( isdigit( c ) ) { ungetc(c, stdin); scanf( “%d”, yylval); // 设置记号的属性值 return number; // 返回记号 } if (c == ‘\n’ ) return 0; // return the end of input to stop analyzing return c; // 返回其它记号, 如 +, - , * , / , (, )等 } void yyerror( char * s) { printf( s ); } * 《编译原理与技术》讲义 * YACC中分析冲突的解决 移进-归约冲突 优先移进;yacc不报告可以由算符优先级、结合性规则解决的冲突。 归约-归约冲突 产生式位置靠前的优先 * 《编译原理与技术》讲义 * YACC中错误恢复 出错产生式 A? error ? 错误发生时,yacc将从分析栈中寻找含有形如项目[A? ?error ?]的状态s;弹出状态s上的所有内容,将特殊记号error移入栈顶,同时在输入串中寻找和?匹配的输入并移入栈顶,此时分析器将把位于栈顶的error 和?归约成A,使分析得以继续。如: Stat ? error ‘;’ //语句出错时将跳至下一分号 * 《编译原理与技术》讲义 * YACC内部使用符号 名称 含义 y.tab.c yacc 输出文件名 y.tab.h yacc 生成的头文件 yyparse yacc分析主函数 yylval 属性栈顶(对应符号的)值 yyerror 错误信息的输出函数 error yacc中“错误”伪记号 yyerrok 出错后重置分析栈于正常工作状态 YYSTYPE 定义属性栈值类型 yydebug 值为1时,产生分析器运行信息 * 《编译原理与技术》讲义 * YACC中的定义机制 定义 含义 %token 定义记号(终结符) %start 定义开始符号 %union 定义YYSTYPE,允许符号的值 有不同的类型 %type 定义符号的值类型 %left 算符优先级、左、右结合性%right 位置越前,优先级越低 %nonassoc 算符不可结合,如abc * * 《编译原理与技术》讲义 * e.g.26 文法G10的LR(1)分析表(续) 状 态 action goto a b $ S B 7 r3 8 r2 r2 9 r2 * 《编译原理与技术》讲义 * I0: [S’??S] [S??BB] [B
您可能关注的文档
最近下载
- 群体烧伤应急预案(3篇).docx VIP
- 工程造价毕业论文--浅谈工程造价的控制-毕业论文.doc VIP
- 2025年高中信息技术学业水平考试真题及答案详解A卷 .pdf VIP
- 银行中高端客户理财规划和资产配置报告方案.docx VIP
- 2025-2026学年度武汉市部分学校高三年级九月调研考试 物理试卷(含标准答案).pdf
- 2025年国家药品监督管理局药品审评中心考试真题(附答案).docx VIP
- 外用电梯基础施工方案.docx VIP
- 老人护理穿脱衣ppt.pptx
- 压力测试报告标准版.doc VIP
- 宁夏宁东泰华热电有限公司公开招聘工作人员11人笔试备考试题及答案解析.docx VIP
原创力文档


文档评论(0)