系列 編譯原理 詞法分析

2022-02-20 10:54:04 字數 617 閱讀 3451

作為從被人類理解的文字,到被計算機理解的文字的第一步,詞法分析可通過掃瞄程式將源程式讀入,並進行理解和分割為若干記號。由於掃瞄程式是格式匹配的一種特殊情況,所以需要研究在掃瞄過程中的格式說明和識別方法,其中最主要的就是正規表示式和有窮自動機。

詞法分析的通常做法是:

1. 寫出各類記號的正規表示式。

2. 根據正規表示式構造nfa。

3. 將nfa轉為dfa。

4. 根據dfa就可以實現詞法分析器。

下面根據c-minus的詞法來構造乙個詞法分析器。

以id|num為例

首先寫出id和num的正規表示式

id = letter letter*

num = digit digit*

letter = [a-za-z]

digit = [0-9]

然後利用thompson結構將正規表示式id|num轉換為nfa。

首先構造letter和digit構建機器

接著構造id和num的構建機器

最後構造id|num的nfa

接著再利用子集構造將生成的nfa轉換為dfa

最後根據dfa寫出程式

利用子集構造模擬nfa

最小化dfa的狀態數量

編譯原理詞法分析

編譯原理實驗一 詞法分析練習 include include include define tokenmax 100 define progmax 1000 define k esc 27 void analytics 詞法分析 void scanner 輸入掃瞄 bool isletter cha...

詞法分析(編譯原理)

詞法分析 英語 lexical analysis 是電腦科學中將字串行轉換為單詞 token 序列的過程。進行詞法分析的程式或者函式叫作詞法分析器 lexical analyzer,簡稱lexer 也叫掃瞄器 scanner 詞法分析器一般以函式的形式存在,供語法分析器呼叫。完成詞法分析任務的程式稱...

編譯原理詞法分析

1 注意識別符號和無符號整數的重複問題,本人採用map解決。2 cin ch自動忽略空白字元。include include include include using namespace std struct pairs int isboundaries char ch return 3 case...