




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
语法(yǔfǎ)制导翻译5.1引言(yǐnyán)5.1引言(yǐnyán)(续)文法(wénfǎ)符号及其语义属性本章(běnzhānɡ)内容简介5.2属性文法(wénfǎ)与属性翻译文法(wénfǎ)5.2.1语义属性(shǔxìng)与属性(shǔxìng)文法属性(shǔxìng)依赖关系加注语法(yǔfǎ)树属性文法(wénfǎ)的定义属性(shǔxìng)文法(续)例5.1简单(jiǎndān)赋值语句文法的属性文法第十三页,。属性(shǔxìng)依赖关系依赖(yīlài)关系图翻译文法(wénfǎ)的定义翻译(fānyì)文法(续)递归下降分析中的翻译(fānyì)文法属性翻译文法(wénfǎ)的定义对属性文法的一些(yīxiē)限制方法符号(fúhào)属性的求值顺序表达式属性(shǔxìng)翻译文法S-属性(shǔxìng)文法的定义S-属性(shǔxìng)文法的例子5.3常见中间语言(yǔyán)简介5.3.1逆波兰(bōlán)表示逆波兰(bōlán)式的特点5.3.2四元(sìyuán)式和三元式四元(sìyuán)式的格式三元(sānyuán)式翻译程序中使用(shǐyòng)的辅助函数属性文法(wénfǎ)的定义 |(Expr){$$. S-属性(shǔxìng)文法的定义 每遇一个(yīɡè)二元(或一元)运算符时,就取出栈顶的两个(或一个(yīɡè))运算对象进行相应的运算,并用运算结果去替换栈顶的这两(或一)个运算对象; 显然,S-属性文法也满足L-属性文法的条件,这就是说,S-属性文法一定是L-属性文法,而且还要求每个非终结符只具有综合属性。 按此方法,每一运算符都置于其运算对象之后,故称为后缀表示。 在产生式8中,终结符iden的属性是它的词文yytext,用$1表示。 所有这样的有向边构成的集合DT(T),称为树T上的依赖关系。 四元式是一种“三地址语句”的等价表示。 函数Merge()及BackPatch()的程序见书中P207 ⒐Factor→Number{printf(“:=,%s,-,%s\n”,yytext,$$);} 例如,对于布尔表达式 E=E(1)∨E(2) 若非,则i不能为0(否则(fǒuzé)Name尚未被定义)。 翻译文法的作用是,在进行语法分析时,无论是用产生式进行推导还是进行归约,只要遇到其中带有语义动作的花括号(kuòhào),就要求编译系统自动执行花括号(kuòhào)内指定的语义动作,在执行完该动作之后才继续进行下一步的语法分析。 另外,在翻译过程中,常常会出现若干转移四元式转向同一目标,但此目标的具体位置又尚未确定的情况,此时我们可将这些四元式用拉链的办法将它们链接起来,用一指针指向链头,在确定了目标四元式的位置之后,再回填这个链。 在一翻译文法中,若每个产生式右部中的全部语义动作均出现在所有文法符号(fúhào)的右边,则称这样的翻译文法为波兰翻译文法。三元式和四元(sìyuán)式之异同5.4简单(jiǎndān)算术表达式和赋值语句的翻译赋值语句(yǔjù)的S-属性翻译文法5.5布尔表达式的翻译(fānyì)布尔表达式的等价(děngjià)解释布尔表达式的出口(chūkǒu)控制(kòngzhì)语句中的布尔表达式布尔表达式真假值的确定(quèdìng)条件语句的翻译(fānyì)结果拉链(lāliàn)与回填布尔表达式的真假出口(chūkǒu)链文法(wénfǎ)的“拆分”语义变量及辅助(fǔzhù)语义函数翻译(fānyì)布尔表达式的属性文法布尔表达式的属性(shǔxìng)

努力****梓颖
实名认证
内容提供者


最近下载