編譯原理加標記法(壓縮文法等價變換)

2021-08-19 23:14:32 字數 1174 閱讀 9107

#include

using

namespace

std;

//儲存左右部的字串和標記

struct str;

//判斷終結符和非終結符

int norterminal(char c)

int main()

}num=len;

//得到所有的輸入規則的左部和右部

for(unsigned i=0;i0];

strl[i].flag[i]=0;

//cout

//得到右部

strr[i].s=strn[i].substr(4,len-1);

for(int i=0;i0; }}

//取得第乙個規則

string strfront= strn.front();

//儲存開始符

for(int i=0;i0];

} /*判斷條件1*/

//起始符加標記

strl[0].flag[0]=1;

for(int i=0;ifor(int j=0;jif(strl[i].flag[0]==1)}}

}}} //刪除不滿足條件一的結果

for(int i=0;iif(strl[i].flag[0]==0)

}

cout

<

/條件二的初始化

for(unsigned i=0;icout

/結果

strl[i].flag[0]=0;

for(int j=0;j0;} }

for(int i=0;iif(norterminal(strr[i].s[0])==0&&strr[i].s.length()==1)

}for(int i=0;iif(strl[i].flag[0]==1)

} }

}

}cout

<

/刪除不滿足條件二的結果

編譯原理01 文法

文法編譯就是高階語言翻譯成低階語言的過程,翻譯完全部 後執行。解釋也是翻譯的過程,但和編譯不同,解釋時逐句翻譯,一邊解釋一邊執行。程式語言是乙個記號系統。可以看作是一定字符集 字母表 上的字串,包括語法和語義兩部分。文法是描述語言的語法結構的形式規則。young men like pop music...

編譯原理(2) 文法推導

這一篇講一講形式文法的推導,學習是乙個持之以恆的過程,尤其是像我這種初學者了。注 這一篇的例子來自於統計自然語言處理這本書 形式文法的推導比較好理解,即按文法g中的規則p推導 的符號串,且b c是p中的乙個產生式,那麼,abc adc。1 的傳遞閉包,即 n 上的符號串xi到xi 1至少經過一步推導...

編譯原理筆記4 文法與語言

1.字母表與符號串 2.連線 乘積 運算 串集間的乘積 串集的方冪 串集的自身乘積 例如 a b 則ab 1 a 0 2 字母表a的 n次方冪是字母表 a上所有長度為 n的串集。3.字母表的閉包與正閉包 1 字母表a 的閉包 a 2 字母表a 的正閉包 a 除了空串的所有次方冪和 4.文法 文法是描...