〈程式〉::〈宣告〉|〈函式〉
〈宣告〉::(a|〈宣告〉')〈函式宣告〉
a::〈標頭檔案〉|〈巨集定義〉
〈宣告〉'::〈宣告〉|null
〈標頭檔案〉::〈標頭檔案〉〈標頭檔案〉'
〈標頭檔案〉'::〈標頭檔案〉|null
〈巨集定義〉::#define b〈巨集定義〉|null
b::〈字串 〉c
c::〈字串〉|〈數字〉
〈字串〉::〈變數名〉
〈函式宣告〉::〈返回值型別 〉〈函式名〉(〈形參〉) ;〈函式宣告〉|null
〈形參〉::〈資料型別 〉〈變數名〉|〈資料型別 〉〈變數名〉〈,〉〈形參〉|void
〈變數名〉::〈字母〉d
d::〈字母〉|〈數字〉|〈_〉|d|null
〈字母〉::f〈字母〉'
f::a|b|...|y|z|(大寫字母。。。)
〈字母〉'::〈字母〉|null
〈數字〉::e〈數字〉'
e::0|1|...|8|9
〈數字〉'::〈數字〉|null
〈返回值型別〉::int|float|char|void
〈函式名〉::〈變數名〉
〈函式〉::〈返回值型別〉〈函式名〉|函式名〉〈函式〉
〈函式主體〉::〈變數的申請〉〈處理語句〉
〈變數的申請〉::〈資料型別 〉〈變數名〉;〈變數的申請〉'
〈變數的申請〉'::〈變數的申請〉|null
〈資料型別 〉::int|float|char
〈處理語句〉::f〈處理語句〉'
f::〈賦值語句〉|〈判斷語句〉|〈迴圈語句〉|〈函式呼叫〉
〈處理語句〉'::〈處理語句〉|null
〈賦值語句〉::〈變數名〉=g
g::〈字母〉|〈數字〉|〈變數名〉|〈運算〉
〈運算〉::〈變數名〉〈運算子〉〈數字〉|〈數字〉〈運算子〉〈數字〉
〈運算子〉::+|-|*|/
〈判斷語句〉::if(〈條件〉)h
h::〈else if〉else|null
〈else if〉::〈else if〉'〈else if〉(〈條件〉)|null
〈else if〉'::〈else if〉|null
〈條件〉::〈變數名〉〈判斷運算子〉〈變數名〉|〈變數名〉〈判斷運算子〉〈數字〉|〈數字〉〈判斷運算子〉〈數字〉|〈數字〉
〈判斷運算子〉::=|>|<|>=|<=|!=
〈迴圈語句〉::while(〈條件〉)|dowhile(〈條件〉)|for(〈賦值語句〉;〈條件〉;〈運算〉)
〈函式呼叫〉::〈變數名〉=〈函式名〉(〈形參〉)|〈函式名〉(〈形參〉)
LL 1 文法判斷
ll 1 文法判斷 題型 1.判斷該文法是否是ll 1 文法?2.若是,給出它的ll 1 分析表,否則說明理由。概念 對於產生式 a 1.如果 均不能推導出 空語句 則 first first 2.和 至多有乙個能推導出 3.如果 經過0步或多步可以推導出 則 first follow a 關鍵 求...
LL(1)文法解析
一 問題描述 給定上下文無關文法,對其進行解析,得出first集和follow集。在有能力的情況下,可以求出ll 1 分析表。二 演算法設計 本程式主要分成三塊內容,第一是文法的讀入解析,第二是first集的求解,第三為follow集的求解。文法的解析需要根據整行讀入的文法,生成rulelist 表...
編譯原理實驗 LL(1)文法
目標任務 實現 ll 1 分析中控制程式 表驅動程式 完成以下描述算術表示式的 ll 1 文法的 ll 1 分析程式。g e e te e ate t ft t mft f e i a m 說明 終結符號 i 為使用者定義的簡單變數,即識別符號的定義。compiler3.cpp 定義控制台應用程式的...