詞法分析感想

2021-07-23 15:04:04 字數 1096 閱讀 3041

tktable儲存單詞 但要是找是否存在單詞就得乙個個遍歷不方便

於是有了 tk_hashtable表 根據單詞各個字母的ascll碼值 用elf_hash函式

找到相應表中位置,省去了遍歷

tktable是用來儲存單詞,tk_hashtable是用來查詢單詞

詞法分析初始化的時候

就把已定義的關鍵字和標點符號存於單詞表

詞法分析主程式

第一步就進行預處理

忽略掉空白字元,和製表符,換行符及注釋

windows下檔案換行符由 兩個字元組成

\r\n

這個需要特別注意

解析識別符號時

把識別符號插入單詞表tktable

用單詞字串tkstr存一下這個識別符號拼寫

用token 存一下 這個識別符號的編碼

編碼就是 儲存這個識別符號的單詞 在單詞表tktable中位置

比如 int x1;

解析到x1

tkstr.data就存了 x1

token 存了x1在單詞表中的位置

解析數字時

不用把數字插入單詞表tktable

只是用 tkvalue存了一下這個數字的值

然後用 tkstr和sourcestr存了一下這個數字

並把 token 值設定為 tk_cint

解析別的運算子 比如 '+'  '-'

都只是把token 設定成相應的 列舉值

然後就取下乙個字元了

解析字元或字串時

當取到 ' 或 "

因為字元是 '開頭

字串是 " 開頭

就進行字元和字串解析

tkstr存這個字元或字串的拼寫

把引號省略了

sourcestr則連引號也存

token值

字元取tk_cchar

字串tk_cstr

tkvalue 字元取相應的ascll碼值

字串不進行操作

sourcestr用在 get_tkstr(int v)函式

v 一般就是取 token值,就是當前的單詞在單詞表中編碼位置

進行錯誤提示用 或 詞法著色

返回 單詞的拼寫

詞法分析程式

上課沒聽啥,一邊看書,一邊做的。基本上,老師的要求是實現了,能把乙個句子 也可以是一整個程式,但還不完善,由於時間急,很多情況來不及考慮了 中的單詞項分析出它是保留字,還是識別符號,運算子等等。開始是在控制台下做得,也比較純正 lex.h ifndef lex h define lex h incl...

06 05 詞法分析

include include include define keywordsum 11 char scanin 300 scanout 300 用於接收輸入輸出檔名 file fin,fout 用於指向輸入輸出檔案的指標 char keyword keywordsum char singlewor...

詞法分析程式設計

實驗目的 1 理解詞法分析在編譯程式中的作用 2 加深對有窮自動機模型的理解 3 掌握詞法分析程式的實現方法和技術 實驗內容 對下述單詞表定義的語言設計編制乙個詞法分析器。各種單詞符號對應的種別碼如下表 單詞符號 種別編碼 begin1if 2then 3while4do 5end 6l l d 1...