編譯原理實驗報告LL 1 分析法

2021-08-02 23:59:11 字數 1680 閱讀 3969

課程編譯原理實驗名稱實驗二 ll(1)分析法

實驗目的

1.掌握ll(1)分析法的基本原理;

2.掌握ll(1)分析表的構造方法;

3.掌握ll(1)驅動程式的構造方法。

一. 實驗內容及要求

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

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

(1)e->tg

(2)g->+tg

(3)g->ε

(4)t->fs

(5)s->*fs

(6)s->ε

(7)f->(e)

(8)f->i

程式輸入一以#結束的符號串(包括+*()i#),如:i+i*i#。輸出過程如下:

二. 實驗過程及結果

**如下:

#include

#include "edge.h"

using namespace std;

edge::edge()

string edge::getlf()

string edge::getrg()

string edge::getfirst()

string edge::getfollow()

string edge::getselect()

string edge::getro()

int edge::getrlen()

void edge::newfirst(string w)

void edge::newfollow(string w)

void edge::newselect(string w)

void edge::delfirst()

int sum;

string node,enode;

//計算first

void first(edge ni,edge *n,int x)

}}//計算follow

void follow(edge ni,edge *n,int x)

}//計算select

void select(edge &ni,edge *n)

else

for(i=0;i

}}//輸出集合

void out(string p)

cout<}

//連續輸出符號

void outfu(int a,string c)

//輸出**分析表

void outgraph(edge *n,string (*yc)[50])

}outfu(10," ");

cout<<"#"< int x;

for(i=0;i

cout< }

}//分析符號串

int pipei(string &chuan,string &fenxi,string (*yc)[50],int &b)

else

return 0;

}else

else

return 0;

}else

if(ch=='@')

else

{i=node.find(ch);

if(a=='#')

x=enode.find('@');

if(x-1)

編譯原理 實驗報告3LL1

大學電腦科學與技術學院實驗報告 計算機基礎實驗教學中心編制 成績指導教師 簽字 存檔 實驗課程名稱 編譯原理課程設計 實驗專案 ll1語法分析程式開發 實驗儀器 機房計算機 實驗要求 1 理解ll 1 分析法的主要原理 2 理解ll 1 分析法對文法的要求 3 熟練掌握predict集合的求法 4 ...

編譯原理詞法分析實驗報告

實驗1 詞法分析實驗報告 一 實驗目的 除錯並完成乙個詞法分析程式,加深對詞法分析原理的理解。二 實驗要求 1 待分析的簡單語言的詞法 1 關鍵字 begin if then while do end 所有關鍵字都是小寫。2 運算子和界符 3 其他單詞是識別符號 id 和整型常數 num 通過以下正...

編譯原理詞法分析實驗報告

實驗一詞法分析器設計 實驗目的 1 熟悉詞法分析的基本原理,詞法分析的過程和詞法分析中要注意的問題。2 複習高階語言,進一步加強用高階語言來解決實際問題的能力。3 通過完成詞法分析程式,了解詞法分析的過程。實驗內容 用c語言編寫乙個pl 0詞法分析器,為語法語義分析提供單詞,使之能把輸入的字串形式的...