v A+B*(C-D)+E/(C-D)N 逆波兰:ABCD-*+ECD-N^/+ 四元式:(1)(-CDT1) (2)(*BT1T2) (3)(+AT2T3) (4)(-CDT4) (5)(^T4NT5) (6)(/ET5T6) (7)(+T3T6T7
逆波兰 : A B C D - * + E C D – N ^ / + 四元式 : (1) ( - C D T1 ) (2) ( * B T1 T2) (3) ( + A T2 T3) (4) ( - C D T4) (5) ( ^ T4 N T5) (6) ( / E T5 T6) (7) ( + T3 T6 T7) 例 : A + B * ( C - D ) + E / ( C - D ) ^N
B: A+B*(C-D)+E/(C-D)N 三元式:(1)(CD (2)(*B(1)) (3)(+A(2) (5)(^(4)N) (6)(/E(5)) (7)(+(3)(6))
三元式: (1) ( - C D ) (2) ( * B (1) ) (3) ( + A (2) ) (4) ( - C D ) (5) ( ^ (4) N ) (6) ( / E (5) ) (7) ( + (3) (6) ) 例 : A + B * ( C - D ) + E / ( C - D ) ^N
B: A+B*(C-D)+E/(C-D)N 间接三元式:间接三元式序列 间接码表 (1)(-CD) (2)(*B(1) (2) (3)(+A(2)) (3) (4)(^(1)N) (1) (5)(/E(4)) (4) (6)(+(3)(5)) (5)
间接三元式 : 间接三元式序列 间接码表 (1) ( - C D ) (1) (2) ( * B (1) ) (2) (3) ( + A (2) ) (3) (4) ( ^ (1) N ) (1) (5) ( / E (4) ) (4) (6) ( + (3) (5) ) (5) (6) 例 : A + B * ( C - D ) + E / ( C - D ) ^N
抽象语法树和DAG图 语法树可以作为一种合适的中间语言形式。在语法树 中去掉那些对翻译不必要的信息,从而获得更有效 的源程序中间表示。这种经变换后的语法树称之为 抽象语法树( Abstract Syntax Tree)。 在抽象语法树中,操作符和关键字都不作为叶结点出 现,而是把它们作为内部结点,即这些叶结点的父 结点 如产生式S→ b then s1 else s2抽象语法树表示 if-then-else S1 S2
抽象语法树和DAG图 语法树可以作为一种合适的中间语言形式。在语法树 中去掉那些对翻译不必要的信息,从而获得更有效 的源程序中间表示。这种经变换后的语法树称之为 抽象语法树(Abstract Syntax Tree)。 在抽象语法树中,操作符和关键字都不作为叶结点出 现,而是把它们作为内部结点,即这些叶结点的父 结点 如产生式S→if B then S1 else S2抽象语法树表示 if-then-else B S1 S2
语法树和抽象语法树 expression
语法树和抽象语法树