ll(1)文法分析是自頂向下的分析方法,也可以被看作是輸入串的最左推導過程,ll(1)中1的意思就是可以根據可以根據當前輸入串中的乙個字元來判斷是由哪乙個產生式產生。
下面給出文法:
e->te
e->ate | # (#代表空集)
t->ft
t->mft | #
f->i | (e)
i-> 0|1|2|...|9
a->+|-
m->*|/
首先要構造first集合與follow集合,根據集合做出ll(1)分析表
然後將分析表存到程式中,給定輸入的串,來輸出最左推導的過程,演算法在龍書的4.4.4節
下面給出程式:
LL(1)語法分析
ll 1 分析法的功能是利用ll 1 控制程式根據顯示棧棧頂內容 向前看符號以及ll 1 分析表,對輸入符號串自上而下的分析過程。可通過消除左遞迴 提取左因子把非ll 1 文法改造成ll 1 文法。在 ll 1 分析程式設計過程中,最重要的兩個問題是 分析表的構造和相關資料結構的設計。而 分析表的構...
自上而下語法分析LL(1)
1.語法分析的地位 是編譯程式的核心部分 2.語法分析的任務 識別由詞法分析得出的單詞序列是否是給定文法的句子 3.語法分析的理論基礎 上下文無關文法和下推自動機 4.語法分析的方式 1 自上而下語法分析 反覆使用不同產生式進行推導以謀求與輸入符號串相匹配 2 自下而上語法分析 對輸入符號串尋找不同...
編譯原理 LL 1 語法分析
直接輸入根據已知文法構造的分析表m,對於輸入的文法和符號串,所編制的語法分析程式應能正確判斷此串是否為文法的句子,並要求輸出分析過程。c 實現如下 includeusing namespace std const int l num 100000 const int max 100 分析表容量 co...