從組成原理到編譯原理,都是相互聯繫的,學習的知識都是在層層推動,順利成章的,整個軟考的全部的知識均可以從計算機的發展(組成原理)--->軟件的開發(軟件工程)--->軟件的算法設計(數據結構)-->高級語言寫的系統--->在計算機上識別(編譯原理)--->各個系統的背後數據的支持--->(數據庫)---->---網絡知識的應用---->網絡基礎……,能夠把整個全部的軟考的課本給串起來,這些都是構成如今豐富世界的必不可少的條件。算法
固然因爲機器語言由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)。
產生式與正規式的轉換:
自我理解:這塊結合我們數學上的式子來理解就很好了。
編譯的文法,是一種標準,按照標準來的,咱們只需遵循他們的規範標準便可。時間萬物都有必定的規律,固然各個語言有它的規範標準,知識間的相互聯繫,使問題變得簡單,變得熟悉,學習起來更加的有興趣,更具備動力。
接下來常重點考點實例解析和你們分享……