c程式語法(無左遞迴)《程式》 —〉 《外部宣告》 | 《函式定義》
《外部宣告》 —〉《標頭檔案》 | 《變數》 | 《結構體》
《標頭檔案》 —〉 #include《檔名》
《檔名》—〉 stdio.h丨stdlib.h丨string.h
《結構體》 —〉 《結構體宣告〉|《變數》
《結構體宣告》 —〉 struct
《識別符號》
《函式定義》 —〉 《型別說明》《識別符號》《引數列表》《復合語句》
《引數列表〉 —〉《型別說明》《變數名》
《復合語句》 —〉《變數》|《語句》|《復合語句》|&
《語句》 —〉《表示式語句〉|《選擇語句》|《迴圈語句》|《跳躍語句》|《語句》|&
《表示式語句》 —〉 《賦值表示式》|《關係表示式》|《邏輯表示式》|《表示式語句》|&
《賦值表示式》 —〉 =a/a=a —> &|+|-
《關係表示式》 —> 〉| < | 〉=| <=
《邏輯表示式》 —〉 + | - | * | /
《選擇語句》 —〉 if else語句|switch語句|《選擇語句》|&
《迴圈語句》 —〉 for語句|while語句|do while語句|《迴圈語句》|&
《跳躍語句》 —> return語句|break語句|continue語句
《變數》 —> 《型別》丨《識別符號》丨《變數值》
《型別說明》 —>int丨char丨double丨float丨long
《變數值》 —> 《字母》丨〈數字〉
《識別符號》 〈==〉 s
s —>as1
s1 —>s1s2
s2 —> a|b|&a —> a|b|c|……y|z
b —> 0|1|2|3|4|5|6|7|8|9
《字母》 —> a|b|c|……y|z
《數字》 〈==〉 s
s —>as1
s1 —>s1as2
s2 —> &|0
a —> 1|2|3|4|5|6|7|8|9
消除左遞迴
參考關健young的部落格,左遞迴形式為 1 a a a vn,v 2 a b b a a b vn,v 稱其為左遞迴。其中可以採取修改左遞迴為右遞迴 a a 其中 非空,不以a打頭 可寫為 a a a a 即 a a 1 a 2 a m 1 2 n 其中,i 1 i m 均不為空,j 1 j n ...
消除左遞迴
first集的求法 對於文法g的任一符號串 x1x2 xn可按下列步驟構造其first 集合 1 置first 2 將first x1 中的一切非 符號加進first 3 若 first x1 將first x2 中的一切非 符號加進first 若 first x1 和first x2 將first...
消除左遞迴
1.將以下文法消除左遞迴,並分析符號串 i i i e e t t t t f f f e i 消除左遞迴 e t e e te t ft t ft f e i first集 first e first e first t first t first f follow集 follow e follo...