從組成原理到編譯原理,都是相互聯繫的,學習的知識都是在層層推動,順利成章的,整個軟考的所有的知識都可以從計算機的發展(組成原理)--->軟件的開發(軟件project)--->軟件的算法設計(數據結構)-->高級語言寫的系統--->在計算機上識別(編譯原理)--->各個系統的背後數據的支持--->(數據庫)---->---網絡知識的應用---->網絡基礎……,可以把整個所有的軟考的課本給串起來,這些都是構成現在豐富世界的不可缺乏的條件。算法
固然由於機器語言由0、1組成,難以閱讀。因此在機器語言的基礎上開發了彙編語言。由於彙編語言仍是很是難使用,因此開發出高級語言。現在的高級語言編寫的程序、系統都是在彙編語言的編譯下由計算機認識翻譯運行。數據庫
由基本字符(a,b……)構成的符號(單詞)書寫的規則
核心:單詞拼寫是否正確網絡
由程序語言的基本符號組成程序中的各個語法成分的一組規則
核心:關注的是句子的結構數據結構
依照語法構成的各個語法成分(句子)的含義,關注的句子的含義
核心:靜態,在編譯時期發現
動態,在執行時期發現
學習
設計語境,適不適合在這裏使用。
spa
描寫敘述語言的語法結構的形式規則稱爲文法。(組合成語言的規則)翻譯
α→β設計
終結符(a,b,c,…..))和非終結符(A,BC,D,….):htm
終結符具有原子性,不可再分。非終結符,可以再分。開發
非終結符(程序)->終結符(語句)
終結符不可以單獨出現在α中;
文法G是一個四元組,可表示爲G(VT,VN,S,P)
VT(terminal symbol)是一個非空有限集,每個元素稱爲終結符。
VN(nonterminal symbol)是一個非空有限集,每個元素稱爲非終結符,它是不能單獨在左邊的。
S是一個非終結符,稱爲開始符號;它至少要在一條產生式中做爲左部出現。
P是一個產生式集合(有限)。
例:A→a,Aa→a,aA→a
自我理解:左邊至少有一個大寫字母,右邊任意
例:A→a,A→ab,Aa→BAc(左邊至少有一個大寫字母,且左邊的長度小於等於右邊的長度)
注意:α→ε也知足1型文法。
自我理解:即產生式右邊的字母個數必須大於等於左邊的字母個數。
例:A→a,A→ab,A→BAc(在1型文法的前提下,左邊必須都是大寫字母)
自我理解:即產生式左邊必須全然都是大寫字母
自我理解:即全部產生式右邊要麼沒有大寫字母,假設有必須全部在小寫字母右邊或者全部在小寫字母左邊也就是要保持線性一致
樣例1:A→a,A→aB,B→a,B→cB,符合。
推斷三型文法的注意事項:
(1)個文法中要麼符合左線性,要麼符合右線性,兩套規則不能同一時候出現在一個語法中
(2)一個產生式推出的非終結符僅僅能有一個;假設是一個文法中,非終結符要麼都在右邊的右邊,要麼都在右邊的左邊。
NFA 不肯定的有限狀態本身主動機
DFA肯定的有限狀態本身主動機
兩者的差異:
我的以爲最大的差異在於NFA中有帶空的產生式,而且每個符號可以有很是多個產生式,但是DFA每個符號必須有的產生式個數就是字母表中有幾個字母,每個狀態的產生式個數僅僅能是少於或者等於字母表中字母的個數。而且不能有帶空的產生式
NDA--->DFA轉化(下一遍可你們分享)
① ε是一個正規式,它表示集合L(ε)={ε}。
② 若a是∑上的字符,則a是一個正規式,它所表示的正規集L(a)={a}。
③ 若正規式r和s分別表示正規集L(r)=L(s),則
(a)r|s是正規式,表示集合L(r)∪L(s);
(b)r·s是正規式,表示集合L(r)L(s);
(c)r*是正規式,表示集合(L(r))*;
(d)(r)是正規式,表示集合L(r)。
產生式與正規式的轉換:
自我理解:這塊結合我們數學上的式子來理解就很是好了。
編譯的文法,是一種標準,依照標準來的,咱們僅僅需遵循他們的規範標準就能夠。時間萬物都有必定的規律,固然各個語言有它的規範標準,知識間的相互聯繫,使問題變得簡單,變得熟悉,學習起來更加的有興趣,更具備動力。
接下來常重點考點實例解析和你們分享……