#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.文法 文法是描...