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...