控制语句的翻泽文法(续7) 11.Series-SeriesSemicolon Statement {$$.Chain=$2.Chain;} 语义动作的含义与产生式9类似。 12.Statement-begin Series end {$$.Chain=$2.Chain;} 显然,复合语句的出口(即Series的属性)尚未确 定去向,故将其作为Statement的属性保留(传 递)之
控制语句的翻译文法(续7) 11.Series→SeriesSemicolon Statement {$$.Chain=$2.Chain;} 语义动作的含义与产生式9类似。 12.Statement→ begin Series end {$$.Chain=$2.Chain;} 显然,复合语句的出口(即Series的属性)尚未确 定去向,故将其作为Statement的属性保留(传 递)之
控制语句翻泽应用举例 【例5.4】现在,我们以语句 while (a<b)do if (c>d)then x:=y+z 为例,说明按前述属性翻译文法将其翻译成四元式序列的过 程。我们假定所产生的四元式序列从编号100开始(即开 始时,NXQ之值为100)。翻译的步骤如下: 第一步对于所给句子,首先按如下的产生式进行归约,并 执行相应动作: WⅥl-→whie{$.L oopStartPlace=NXQ;} 此时Wl.LoopStartPlace的值为100,四元式表为 NXQ→ 100 ←-WI.LSP
控制语句翻译应用举例 【例5.4】现在,我们以语句 while (a<b) do if (c>d) then x:=y+z 为例,说明按前述属性翻译文法将其翻译成四元式序列的过 程。我们假定所产生的四元式序列从编号100开始(即开 始时,NXQ之值为100)。翻译的步骤如下: 第一步 对于所给句子,首先按如下的产生式进行归约,并 执行相应动作: Wl → while{$$.L oopStartPlace = NXQ;} 此时Wl.LoopStartPlace的值为100,四元式表为 NXQ→ 100 ←Wl.LSP