編譯原理 詞法分析器

2021-07-12 05:13:30 字數 2800 閱讀 7867

(1)從源程式檔案中讀入字元。

( 2)統計行數和列數用於錯誤單詞的定位。

( 3)刪除空格類字元,包括回車、製表符空格。

( 4)按拼寫單詞,並用(內碼,屬性)二元式表示。 (屬性值——token 的機內表示)

( 5)如果發現錯誤則報告出錯

( 6)根據需要是否填寫識別符號表供以後各階段使用

int tag = 0;//設立標誌

一開始本來不想貼**的,畢竟太長了,但不貼**,內容好像又太少了。還是說一下,本**僅供交流、參考之用,建議不要複製貼上。詞法分析器的整個邏輯相對還是很清楚、簡單的。稍微花點時間,並不難寫出來。

順便寫下自己做這個實驗時發現的自己一直存在的錯誤:

多個if和else if以及else語句同時出現時會出現二義性。

如如下**片段:

if(condition1)

if(condition2)

else

在此程式中,執行了第乙個if語句後,若第二個if語句也執行,則不會出錯;但若第二個 if不執行,那麼就會執行else語句,此時else語句裡的**會和第乙個if語句裡的**產生衝突。這個問題可以通過設定乙個標誌tag得到解決:先給tag賦予乙個初值,若執行了第乙個if語句,則修改tag的值,再將tag的初值作為第二個if的判斷條件。

即改為:

inttag = 0;

if(condition1)

if(condition2)

else if(tag == 0)

這樣的話就可以有效避免衝突了。這個技巧還是挺有用的,哈哈。

編譯原理,例 詞法分析器

編譯原理課作業要求自己寫乙個詞法分析器,我嘗試寫了一下。詞法分析 電腦科學中將字串行轉換為單詞 token 序列的過程。進行詞法分析的程式或者函式叫作詞法分析器 lexical analyzer 也叫掃瞄器 scanner 詞法分析器一般以函式的形式存在,供語法分析器呼叫。完成詞法分析任務的程式稱為...

編譯原理(一)詞法分析器

詞法分析器的功能是輸入源程式,輸出單詞符號。單詞符號是乙個程式語言的基本語法符號。程式語言的符號一般可以定義為以下幾種 關鍵字 是由程式語言定義的具有固定意義的識別符號,也稱這些識別符號為保留字或基本字。例如 c 語言中的define do for while if else等 識別符號用來表示各種...

編譯原理之詞法分析器(C C)

從乙個檔案中讀取原始碼,執行後可以直接看到結果,也可在指定檔案中檢視結果。這個詞法分析器只實現了部分關鍵字 字元等的識別,可在key陣列自行新增,種別碼的判別與新增用case更加方便,可寫下試試。include include include include include using namesp...