編譯原理入門(三) 詞法分析簡介

2021-08-28 17:24:27 字數 820 閱讀 2823

詞法分析的主要任務:1.對源程式的**進行從左到右的逐行掃瞄,識別出各個單詞,從而確定單詞的型別。

2.將識別出的單詞轉換為統一的機內表示——詞法單元(token)形式,token:《種別碼,屬性值》

第二點看不懂沒事,先說說什麼是詞法單元形式,token是乙個鍵值對,key是種別碼,什麼是種別碼?請看下圖便會知曉。

當我們寫**時,是不是需要用到這些單詞型別,現在是不是有一種似懂非懂的感覺。

上圖中種別碼大概分為一詞一碼、一型一碼、多詞一碼等。

一詞一碼:例如當你寫 if 這個詞的時候便可以從已經寫好的種別內容中找到該詞並確定它的型別,也就是該詞預先就定義好的。

多詞一碼:在定義變數時,變數名是我們自己定義的,你不能從種別內容中找到該詞,所以會用乙個集合把該詞存入其中,也就是並沒有預先定義的詞。

一型一碼:不能從種別內容中找到你定義該常量的值,但是能找到你定義該值的型別。

總結上面的種別碼:一對一則表示在種別內容中預先定義好的,多對一則表示在種別內容中沒有預先定義,是使用者自己定義的。

token:《種別碼,屬性值》,種別碼就是型別,屬性值就是值,類似map中的key,value的形式。 

下圖是詞法分析後得到的token序列(使用的是巨集定義,後面會解釋),下圖中,沒有value的則表示是預先在種別內容中定義好的。

好了,此部分內容便到此結束,下面繼續看語法分析。

編譯原理 入門總結

入門教程在 手把手教你做乙個 c 語言編譯器 19年嘗試學了一下,中途看不懂放棄了。20年底從頭再看一遍,經過一年的知識積累,在仔細研讀之下,終於算是學懂了。此文中記錄了我在最初學習時遇到的問題,和最終的解決方法記錄下來,希望對讀者有所幫助。虛擬機器涉及的知識是比較綜合性的,是乙個難點。虛擬機器的原...

編譯原理詞法分析

編譯原理實驗一 詞法分析練習 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 詞法分析器一般以函式的形式存在,供語法分析器呼叫。完成詞法分析任務的程式稱...