字母表:符號的非空有限集。 例如∑={0,1,2}
符號:字母表中的元素。 例如:1
符號串:由字母表中的符號組成的任何有窮序列。 例如:01,012012,......
空符號串:ε
問:符號就是字符對嗎?
答:不對。符號還可以是字符串,如C語言字母表中的符號{if,else,for......}
符號串的前后綴:從符號串S的尾部(頭部)刪去若干個(包括0個)符號之后所剩下的部分稱為S的前(后)綴。
例如:011的前綴:ε,0,01,011
011的后綴:011,11,1,ε
符號串集合:若集合A中的一切元素都是某字母表上的符號串,則稱A為該字母表上的符號串集合。 例如:∑={a,b,c} A={aa,ab,ac}
符號串的連接運算:符號串X和Y的連接是把Y的符號寫在X的符號之后得到的符號串XY。
例如:X=01,Y=10,則XY=0110。
對於任意符號串S有:εS=Sε=S
符號串的冪運算:符號串自身連接n次得到的符號串Sn=SS...SS。
例如:S=01, 則S0=ε,S1=01,S2=0101,......
符號串集合的乘積:設A,B為符號串集合,則A和B的乘機定義為:AB={xy|x∈A,y∈B}
例如:A={a,b},B={c,d} ,則AB={ac,ad,bc,bd}
符號串集合的冪運算:例如A={0,1} 則A0={ε},A1={0,1},A2={00,01,10,11}
符號串集合的閉包運算:
A+=A1∪A2∪A3∪A4∪........ 稱為A的正閉包
A*=A0∪A+ 稱為A的閉包
例如:A={x,y} ,則A+={x,y,xx,xy,yx,yy,......} ,A*={ε,x,y,xx,xy,yx,yy,......}
語言:是由句子組成的集合,是有一組符號所構成的集合
文法:是對語言結構的定義和描述(或稱“語法”)
文法的形式定義:G[S]=(VN,VT,P,S)
VN:非終結符號集
VT:終結符號集
P:規則的集合
S:開始符號
直接推導:用產生式的右部替換產生式的左部
直接規約:用產生式的左部替換產生式的右部
文法和語言的分類:0型,1型,2型,3型
0型文法:產生式左邊始終包含至少一個非終結符號。(對0型文法做出某些限制可以的得到1,2,3型文法)。
1型文法:(上下文有關),aAb-->aBb只有在這樣的a,b上下文中才能把A改寫為B。
2型文法:(上下文無關),產生式左邊一個非終結符號,右邊為符號串(可以為空)。
3型文法:(正則文法),產生式左邊一個非終結符號,右邊只能為一個終結符號或者一個終結符號加一個非終結符號。A->Ba左線型,A->aB右線型。
文法的二義性:如果一個文法存在某個句子對應兩棵不同的語法樹,則說明這個文法是二義的。
句型分析:是指識別輸入的符號是否為某一文法的句型(或句子)的過程。
最左(右)推導:指對於一個推導序列中的每一直接推導,被替換的總是當前符號串中的最左(右)非終結符號。最右推導也 稱為規范推導。