編譯原理(表示式語法分析 遞迴子程式法)

2021-08-19 04:54:10 字數 1055 閱讀 7914

遞迴子程式法是一種確定的自頂向下語法分析方法,要求文法是ll(1)

文法。它的實現思想是對應文法中每個非終結符編寫乙個遞迴過程,每個過程的功能是識別由該非終結符推出的串,當某非終結符的產生式有多個候選式時能夠按

ll(1)

形式唯一地確定選擇某個候選式進行推導。請根據下面的表示式

ll(1)

文法,構造遞迴子程式,完成對表示式的語法分析。

表示式文法如下:

e→tg

g→+tg | εt→

fss→*fs | εf→

(e) | i

對於給定的輸入串(長度不超過50

個符號),請輸出分析過程中用到的所有產生式,並指明該輸入串是否為該文法能生成的表示式,

輸出共11

行,前10

行每行兩個資料用空格隔開,表示推導時所用產生式順序號(從

0開始),最後一行是

accept

,表示i+i*i

是文法能生成的合法表示式。

注:其中&

符號代表文法中的

ε符號。

例如:i+i*i是文法能生成的乙個表示式,輸出格式如下:

0 e-->tg

1 t-->fs

2 f-->i

3 s-->&

4 g-->+tg

5 t-->fs

6 f-->i

7 s-->*fs

8 f-->i

9 s-->&

10 g-->&

accept

#include#include#include#includeusing namespace std;

stacka;

stackb;

int num;

void reset()

while(!b.empty())

a.push('#');

a.push('e');

}int panduan(char x,char y)

while(1)

else}}

}}

表示式語法分析

表示式語法分析 遞迴子程式法 time limit 1000 ms memory limit 65536 kib problem description 遞迴子程式法是一種確定的自頂向下語法分析方法,要求文法是ll 1 文法。它的實現思想是對應文法中每個非終結符編寫乙個遞迴過程,每個過程的功能是識別...

語法分析 算術表示式遞迴下降分析程式設計

1 實驗目的 1 掌握自上而下語法分析的要求與特點。2 掌握遞迴下降語法分析的基本原理和方法。3 掌握相應資料結構的設計方法。2 實驗內容 程式設計實現給定算術表示式的遞迴下降分析器。算術表示式文法如下 e e t t t t f f f e i 3 設計說明 首先改寫文法為ll 1 文法 然後為每...

語法分析 算術表示式遞迴下降分析程式設計

1 實驗目的 1 掌握自上而下語法分析的要求與特點。2 掌握遞迴下降語法分析的基本原理和方法。3 掌握相應資料結構的設計方法。2 實驗內容 程式設計實現給定算術表示式的遞迴下降分析器。算術表示式文法如下 e e t t t t f f f e i 3 設計說明 首先改寫文法為ll 1 文法 然後為每...