后缀式放入POST[k]中 产生式 语义动作 E-E(oP E(2)POST[k]: -op; k=k+1) E→(E() E→id ( POST[k]: =id; k=k+1
6 后缀式放入POST[k]中 产生式 语义动作 E→E(1) op E(2) {POST[k]:=op; k=k+1} E→(E(1)) { } E →id {POST[k]:=id; k=k+1}
三元式和树 三元式 (1)表示形式 op ARGI ARG2 其中:op:运算符 ARG1:第一运算量 ARG2第二运算量 表达式及各种语句都可以表示成三元式 三元式出现的顺序为表达式的计值顺序 目运算任选ARG1或ARG2
7 二、三元式和树 1、三元式 (1)表示形式 op ARG1 ARG2 其中:op:运算符 ARG1:第一运算量 ARG2:第二运算量 ▪ 表达式及各种语句都可以表示成三元式 ▪ 三元式出现的顺序为表达式的计值顺序 ▪ 一目运算任选ARG1或ARG2
例:A+B*C的三元式 op ARG1 ARG2 BA C (2)+ ARG1和ARG2 指示器,指向符号表的某一位置或三元式表自身的某 项 8
8 例:A+B*C的三元式 op ARG1 ARG2 (1) * B C (2) + A (1) ARG1和 ARG2: 指示器,指向符号表的某一位置或三元式表自身的某 一项
例:X:=a*b+c op ARGI ARG2 (2)+(1 (2) 例:(A∧B)∨(-CVD op ARGI ARG2 (1)∧ A B C (3) (1)(3)
9 例:X:=a*b+c op ARG1 ARG2 (1) * a b (2) + (1) c (3) := X (2) 例:(A ∧B) ∨ ( C ∨D) op ARG1 ARG2 (1) ∧ A B (2) C _ (3) ∨ (2) D (4) ∨ (1) (3)
(2)语法制导生成三元式 EVAL:指示器,或指向符号表的某一项或三元式 自身的某一项 TRIP(op,ARG1,ARG2)语义过程,产生新的三元式 (op,ARG1,ARG2)并回送三元式在表中的位置 ENTRY(id)语义过程,查找标识符id在符号表中 的位置
10 (2)语法制导生成三元式 E·VAL: 指示器,或指向符号表的某一项或三元式 自身的某一项 TRIP(op,ARG1,ARG2):语义过程,产生新的三元式 (op,ARG1,ARG2)并回送三元式在表中的位置。 ENTRY(id):语义过程,查找标识符id在符号表中 的位置