編譯原理 簡單計算器 詞法分析 語法分析 含原始碼

2021-06-25 08:01:31 字數 1126 閱讀 7774

參考文件:

這個計算器原始碼我上傳到csdn上來,共享出來供有興趣的同學參考

之前大學的時候,編譯原理課程有乙個做計算器的任務,當時沒有做,只顧做乙個漂亮計算器介面。

想來當時是買櫝還珠了,有點小遺憾,覺得編譯原理沒有實踐,沒有理解透徹。

趁這週末有空,就把編譯器重新做一做,下面是做出來的效果:

1. 界定實現範圍

考慮主要是簡單實踐,所以只實現 正整數與浮點數的 + - * / ()

2. 實現詞法分析器

分析出這幾種詞語,其他情況,認為是異常

enum enumtokentype

;struct calctoken

;union tokendata

;3. 實現語法分析器

思路: 使用分塊思路把內容按優先順序分塊,先使用'(' 和 ')'分塊,然後使用'*' 和 '/'號分塊,分塊結束;計算時從左往右計算就可以了。

匹配內容:

exp -> term

exp -> term + exp     +-從左到右依此執行

exp -> term - exp

term -> factor

term -> factor * term  */次優先,內部先左後右

term -> factor / term   

factor -> number

factor -> (exp)()最優先

// 思路: 使用分塊思路把內容按優先順序分塊,先使用()分塊,然後使用*/號分塊,分塊結束;計算時從左往右計算就可以了。

enum enumproctype

;struct procsubnode;

struct procnode

;enum enumprocsubnodetype

;struct procsubnode

;class csyntaxnodeanalysis

;這個計算器原始碼我上傳到csdn上來,共享出來供有興趣的同學參考。

編譯原理之詞法分析 語法分析 語義分析

詞法分析 lexical analysis或scanning 和詞法分析程式 lexical analyzer或scanner 詞法分析階段是編譯過程的第乙個階段。這個階段的任務是從左到右乙個字元乙個字元地讀入源程式,即對構成源程式的字元流進行掃瞄然後根據構詞規則識別單詞 也稱單詞符號或符號 詞法分...

編譯原理 詞法分析器

1 從源程式檔案中讀入字元。2 統計行數和列數用於錯誤單詞的定位。3 刪除空格類字元,包括回車 製表符空格。4 按拼寫單詞,並用 內碼,屬性 二元式表示。屬性值 token 的機內表示 5 如果發現錯誤則報告出錯 6 根據需要是否填寫識別符號表供以後各階段使用 int tag 0 設立標誌 一開始本...

編譯原理之語法,語義,詞法分析

詞法分析 lexicalanalysis 或scanning 和詞法分析程式 lexicalanalyzer 或scanner 詞法分析階段是編譯過程的第乙個階段。這個階段的任務是從左到右乙個字元乙個字元地讀入源程式,即對構成源程式的字元流進行掃瞄然後根據構詞規則識別單詞 也稱單詞符號或符號 詞法分...