前端處理的是和源語言相關,後端處理的是和體系結構和目標機相關的程式。
讀入字元流後,詞法分析器對整個字元流進行切分,按照它們是關鍵字、識別符號、標點符號、字串、整型數做乙個明確的劃分。
每乙個if、lparen等都是記號(單詞),結束會有乙個eof。
不同的語言,列舉型別是有限的但不一定相同。
lexeme是所識別的單詞的具體的值。
if(x>5)
token;
token;
token;
記號流:
描述任何乙個軟體系統最重要的可能都是輸入輸出介面。
對程式的各個部分都會有精確的控制,演算法和資料結構都是由程式設計師控制的。
效率高詞法分析器的生成器
如何分析符號
<= le
<> ne
< lt
= eq
>= ge
> gt
*代表一次回退
以c語言為例:
宣告式的規範:正規表示式
轉換:正規表示式—>自動機
lex、flex、jlex
對於給定字符集\(\sigma = \\),可以寫出哪些正規表示式?
c語言中的關鍵字:例如if,while等,如何用正規表示式表示?
c語言中的識別符號:以字母或下劃線開頭,後跟零個或多個字母、數字或下劃線。如何用正規表示式表示?
c語言中的無符號整數:(十進位制整型數)規則:或者是0;或者是以1到9開頭,後跟零個或多個0到9。如何用正規表示式表示?
正規表示式(input)、lex(flex)**換算法內部)、有限狀態自動機(output)
字母表:\(\sigma = \\)
狀態集:\(s=\\)
初始狀態:\(q_0=0\)
終結狀態集:\(f=\\)
轉移函式:\(\delta=\\)
實際上轉移函式也就是乙個對映關係,也可以用如下的圖來表示。
接受:首先處於初始狀態,當串s在狀態機上讀完後轉移到了最後狀態,即稱這個串可以被接受。
值域發生了變化,轉移函式不確定,這類自動機為非確定的自動機(nfa)。上面的例子1就是確定的自動機(dfa)。
對於nfa來說,難以判斷是否接受串s。需要遍歷,排除不接受的路徑,再回溯找到接受的路徑。
一般來說,會將nfa轉換為dfa來進行簡化。
非確定的有限狀態自動機nfa
第二章 演算法分析(1)
在這一章,我們將討論 我們將使用下面四個定義 如果存在正常數c和n0使得當n n0時t n cf n 則記為t n o f n 如果存在正常數c和n0使得當n n0時t n cg n 則記為t n omega f n t n h n 當且僅當t n o h n 和t n h n 如果對所有的常數c存...
第二章 需求分析
1 了解需求分析概念及需求獲取方法 2 了解需求建模方面 3 結構化分析案例 購銷系統 1.1 需求分析的概念和意義 需求是至使用者對軟體的功能和效能的要求 就是使用者希望軟體能做是麼事情,完成什麼樣的功能,達到什麼效能。需求分析是在計算機系統的軟體功能分配和軟體設計之間重要的橋梁作用的一項軟體工程...
第二章 使用者需求分析
第二章 使用者需求分析 1.需求分析基本方法 1 怎樣獲取使用者需求?a 網路工程面向的是特定行業或特定使用者 如金融行業 使用者提交業務需求書是重要的資訊 b 如果系統整合商與使用者建立長期的合作關係,則在合作過程中可以培養使用者提出需求和表達需求的能力,或者聯合成立需求小組,共同開發需求 c 網...