首先生成抽象語(yǔ)法樹(AST)
生成方法:
1.移進(jìn)時(shí)將Number,String或Symbol分別加入對(duì)應(yīng)集合
2.歸約時(shí)從集合中取出對(duì)應(yīng)的成員,并刪除這條產(chǎn)生式里的所有終結(jié)符
3.將產(chǎn)生的語(yǔ)法樹節(jié)點(diǎn)壓入棧中
4.當(dāng)遇到產(chǎn)生式item_list->item_list item或stmt_list->stmt_list stmt時(shí)從棧中彈出兩顆語(yǔ)法樹并按順序連接起來(lái)
5.當(dāng)遇到非終結(jié)符時(shí)彈出相應(yīng)數(shù)量的語(yǔ)法樹節(jié)點(diǎn),生成新的根節(jié)點(diǎn)并把彈出的語(yǔ)法樹節(jié)點(diǎn)都連接到這個(gè)新的根節(jié)點(diǎn)上
6.當(dāng)歸約到第0條產(chǎn)生式時(shí)檢查棧的元素?cái)?shù)量,1為正常值,然后對(duì)抽象語(yǔ)法樹進(jìn)行前序遍歷并生成虛擬機(jī)代碼
posted on 2010-09-17 22:21
lwch 閱讀(767)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
QLanguage