基於C 實現的語法分析之LL 1 分析法實現

2021-09-05 13:37:41 字數 696 閱讀 2232

一、設計目的

根據某一文法編制除錯ll(1)分析程式,以便對任意輸入的符號串進行分析。本次實驗的目的主要是加深對**分析ll(1)分析法的理解。

二、設計要求

程式輸入/輸出示例:

對下列文法,用ll(1)分析法對任意輸入的符號串進行分析:

原文法e->e+t|e-t|t

t->t*f|t/f|f

f->id|(e)|num

其中: id: a-f, a-f,num:0-9

消左遞迴

e->ta a->+ta a->-ta a->e

t->fb b->*fb b->/fb b->e

f->i f->(e) f->n

其中:i:id, n:num, e:epsilone->tg

first集和follow集

ta +ta -ta e fb *fb /fb e i (e) n

first i,(,n + - e i,(,n * / e i ( n

e a t b f

follow $,) $,) +,-,$,) +,-,$,) *,/,+,-,$,)

輸出的格式如下

輸入一以#結束的符號串(包括+—*/()i#):

LL(1)語法分析

ll 1 分析法的功能是利用ll 1 控制程式根據顯示棧棧頂內容 向前看符號以及ll 1 分析表,對輸入符號串自上而下的分析過程。可通過消除左遞迴 提取左因子把非ll 1 文法改造成ll 1 文法。在 ll 1 分析程式設計過程中,最重要的兩個問題是 分析表的構造和相關資料結構的設計。而 分析表的構...

LL 1 語法分析

ll 1 文法分析是自頂向下的分析方法,也可以被看作是輸入串的最左推導過程,ll 1 中1的意思就是可以根據可以根據當前輸入串中的乙個字元來判斷是由哪乙個產生式產生。下面給出文法 e te e ate 代表空集 t ft t mft f i e i 0 1 2 9 a m 首先要構造first集合與...

自上而下語法分析LL(1)

1.語法分析的地位 是編譯程式的核心部分 2.語法分析的任務 識別由詞法分析得出的單詞序列是否是給定文法的句子 3.語法分析的理論基礎 上下文無關文法和下推自動機 4.語法分析的方式 1 自上而下語法分析 反覆使用不同產生式進行推導以謀求與輸入符號串相匹配 2 自下而上語法分析 對輸入符號串尋找不同...