【正文】
ry指向標識符在符號表中的入口。 (3) mkleaf(num, val) 建立一個 數結點 ,標號為 num,一個域 val用于存放數的值。 每一個函數都返回一個指向新建立結點的指針。 + ? ? — ? ? num 4 id ? id ? to entry for a to entry for c 圖 a – 4 + c 的抽象語法樹 建立表達式 a- 4+ c 的抽象語法樹 (1 )P1 := mkleaf(id, entrya); (2) P2 := mkleaf(num, 4); (3) P3 := mknode(‘- ’, P1, P2); (4) P4 := mkleaf(id, entryc); (5) P5 := mknode(‘+ ’, P3, P4); P1 P2 P3 P4 P5 建立抽象語法樹的語義規(guī)則 產生式 語義規(guī)則 E?E1 + T E?E1 T E?T T?( E ) T?id T?num := mknode(‘+’, ) := mknode(‘’, ) := := := mkleaf(id, ) := mkleaf(num, ) 表 為表達式建立抽象語法樹的屬性文法 nptr:函數調用返回的指針 虛線 : 帶注釋的語法分析樹(象征性存在 ) 實線 : 抽象語法樹 (真正存在 ) to entry for a 圖 a – 4 + c 的抽象語法樹的構造 表 ☆ T E id .nptr .nptr .nptr .nptr .nptr id ? num 4 id ? - ? ? + ? ? to entry for C E + E - T num T id .nptr