基於LL(1)文法實現的簡單計算器

2021-07-25 13:51:17 字數 1487 閱讀 2938

14331275 王鎮佳功能

首先,構造其文法如下:

e -> te』

e』 ->

+ te』 |

-te』 | ϵ

t ->

ft』t』 ->

*ft』 |

/ft』 | ϵ

f ->

-f| id | (e)

其中id -> [0

-9]*.

[0-9

]*| [0

-9]+

在**中用完整函式名代替

expr -> term expr'

expr'

->

+ term expr' | - term expr'

| epsilon

term -> factor term'

term'

->

* factor term' | / factor term'

| epsilon

factor ->

-factor

| real | (expr)

real -> [0

-9]*.

[0-9

]*| [0

-9]+

根據ll(1)文法構造**分析表

非終結符號id+

最後根據此表完成對應函式

double expr(void);

double expr_(void); // means e'

double term(void);

double term_(void); // means t'

double factor(void);

void errorhandler(void);

執行

c語言實現

編譯環境:gcc

執行方法:

make clean

make

./bin/calc

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 表...

python3 5實現LL 1 文法

created by ws 文法 e e t t t t f f f e i 消除左遞迴 e th h th e e替代空 t fy y fy e f e i 非終結符 e,h,t,y,f 終結符 i,手動構造 分析表 dists 構造終結符集合 vt i 構造非終結符集合 vh e h t y f...