首先生成抽象語(yǔ)法樹(shù),方法如下:
1.根節(jié)點(diǎn)為0時(shí)表示沒(méi)有default標(biāo)簽,為1時(shí)表示有default標(biāo)簽
2.第0個(gè)根節(jié)點(diǎn)表示switch里的條件
3.若有default標(biāo)簽,則最后一個(gè)根節(jié)點(diǎn)為default子樹(shù)
4.每個(gè)根節(jié)點(diǎn)為0時(shí)表示在此標(biāo)簽下沒(méi)有stmt_list語(yǔ)句塊,這個(gè)節(jié)點(diǎn)的唯一孩子為要匹配的表達(dá)式;為1時(shí)表示有語(yǔ)句塊,根節(jié)點(diǎn)的左孩子表示要匹配的表達(dá)式,右孩子為要執(zhí)行的語(yǔ)句塊
注意:Equal指令會(huì)彈出兩操作數(shù),應(yīng)此在Equal指令執(zhí)行之前必須先保留switch里exp的副本(即Push一次),最后彈出副本
測(cè)試代碼:
1 integer aaa,bbb
2
3 function ccc()
4 switch aaa + 1 do
5 default:
6 aaa = 123
7 case 123:
8 do
9 aaa = aaa + 1
10 while aaa < 789 end
11 case 456:
12 aaa = 123
13 end switch
14 end function
生成虛擬機(jī)代碼:
posted on 2010-09-29 15:55
lwch 閱讀(1294)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
QLanguage