試構(gòu)造與下面G(S)等價(jià)的無左遞歸的文法。
構(gòu)造下面文法的LL(1)分析表。
(a)下面的文法定義語言L={anbncm|m,n≥1}。寫一個語法制導(dǎo)定義,其語義規(guī)則的作用是:對不屬于語言L的子集L1={anbncn|n≥1}的句子,打印出錯信息。 (b)語句的文法如下: 寫一個翻譯方案,其語義動作的作用是:若發(fā)現(xiàn)break不是出現(xiàn)在循環(huán)語句中,及時(shí)報(bào)告錯誤。
考慮下面的三地址語句序列: (1)在該代碼中用水平的橫線將代碼分成基本塊,并給每個基本塊一個序號。 (2)畫出該代碼的控制流圖,每個基本塊就用(1)的序號表示。 (3)若有循環(huán)的話,列出構(gòu)成每個循環(huán)的結(jié)點(diǎn)。
為下面的算術(shù)表達(dá)式文法寫一個語法制導(dǎo)的翻譯方案,它將每個子表達(dá)式E的符號(即值大于零還是小于零)記錄在屬性E.sign中(屬性值分別用POS或NEG表示)。你可以假定所有的整數(shù)都不為零,這樣就不用擔(dān)心零的符號。