CH语法分析YACC.pdf

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CH语法分析YACC

第4章 语法分析——YACC LI Wensheng, SCST, BUPT YACC 使用方法 YACC 源程序 内容安排 一、 YACC说明文件 二、用YACC处理二义文法 三、用LEX建立YACC的词法分析程序 四、 YACC 内部名称 五、YACC使用方式 W e n s h e n g L i B U P T 2 一、YACC说明文件 由说明部分、翻译规则部分和辅助过程三部分组 成,各部分之间用双百分号分隔。 说明部分:有任选的两节 – 第一节是处于%{和%}之间的部分,在这里是一些普 通的C语言的声明。 – 第二节是文法记号的声明,一般 • 以 %start S 的形式说明文法的开始符号 W • 用 %token IF、DO、…、ID、… 的形式说明记号。 e n s h e n • 记号被YACC赋予了不会与任何字符值冲突的数字值 g L i B U P T 3 翻译规则部分 每条规则由一个产生式和有关的语义动作组成 产生式A→α |α |…|α ,在YACC说明文件中写成 1 2 n A : α { 语义动作1 } 1 | α2 { 语义动作2 } … | αn { 语义动作n } ; 用单引号括起来的单个字符,如‘c’ ,是由终结符号c组成 的记号 没有用引号括起来、也没有被说明成token类型的字母数 字串是非终结符号 W e n s 语义动作是用C语言描述的语句序列 h e n g – ‘$$’表示和产生式左部非终结符号相关的属性值,‘$i’表示和产生 L i 式右部第i个文法符号相关的属性值。 B U P T 4 辅助过程部分 用C语言书写一些语义动作中用到的辅助程序 名字为yylex()的词法分析程序必须提供 函数main main() { return yyparse(); } YACC生成的yyparse过程调用一个扫描过程yylex yyparse 每次调用 yylex() 时,得到一个二元式的记号: 记号,属性值。 W e n s – 返回的记号必须事先在YACC说明文件的第一部分中用%token说 h e n g 明 L i – 属性值必须通过YACC定义的变量yylval传给分析程序 B U P T 5 二、YACC对二义文法的处理 处理冲突的两条缺省规则 – “归约-归约”冲突,选择排在前面的产生式进行归约 – “移进-归约”冲突,选择执行移进动作 处理移进-归约冲突的机制 – 利用 %left ‘+’ ‘-’ 说明‘+’和‘-’具有同样的优

文档评论(0)

docman126 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档