21.归约与语法分析树 上述思想可用如下的一个例子来说明:例 文法 G[S]: (1)S→aAcBe (2)A→b (3)A→Ab (4)B→d显然abbcde是该文法的一个句子于是可如右构造其语法分析树:S1移进a归约产生式:a(4)rP1pilerPrinciplepilerPrinciplesi1ipilerPrinciples2
编译器 分析器的生成器 分析器的生成器yylex ( ) {int cwhile ( ( c = getchar ( ) ) = = )if ( ( c = = . ) (isdigit (c) ) ) {ungetc (c stdin)scanf ( lf yylval)return NUMBER}return c}. . . . . . . . a . .语法分析内容
单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级4.3 L属性定义的自上而下计算例 左递归的消除引起继承属性产 生 式语 义 规 则 E ? E1 T E.nptr := mknode( E1.nptr T.nptr) E ? T E.nptr := T.nptr T ? T1F T.nptr := mknode( T1.nptr F
单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级第七章 中间代码生成中间代码:介乎源语言与目标代码之间比源语言简单比目标代码复杂区分编译器的前端与后端方便提出针对新机器的编译器可以设计针对中间代码的优化器分析器静态检查器中间代码生成 器中间代码记号流代码生成器117例:编译阶段procedure sort x:integer var a: array[0..9] of
#
例文法G0[S]: (1) S→Sa (2) S→b 分析baa是不是文法的句子按照自上而下的分析思想选用产生式(1)来推导S?Sa 语法树末端结点最左符号为非终结符所以选用(1)继续推导S?Sa?Saa 此时语法树末端结点最左符号仍为非终结符所以选用(1)继续推导S?Sa?Saa ?Saaa 问题——试图用S匹配输入串时出现:在没有读入任何输入符号的情况下又得重新要求
#
例 文法G=(VNVTPS)VN = { S } VT ={ 0 1 }P={ S→0S1 S→01 }S为开始符号元符号: → ∷= < > 习惯 大写字母表示非终结符 小写字母表示终结符
#
单击此处编辑母版标题样式单击此处编辑母版文本样式第二级第三级第四级第五级李文生制作版权所有§1 编译概述学时:2知识点:翻译和解释的概念 编译的阶段任务及典型结构 编译程序的伙伴工具1§1 编译概述 简介1.1 翻译和解释1.2 编译程序的组成1.3 编译程序的前后处理器1.4 编译原理和技术的应用 小结 作业2简介什么是编译
违法有害信息,请在下方选择原因提交举报