lex實現擴充套件的pl0語言的詞法分析器(附原始碼)

2021-10-14 09:54:03 字數 1353 閱讀 9047

源**和相關檔案都放在了github上 !github link

設計思路

實驗步驟

源**理解編譯器的工作機制,掌握編譯器的工作原理

掌握詞法分析器生成工具lex的用法

輸出型別:

輔助定義

digit [0-

9]letter [a-za-z]

identifier (|

)*integer

+real -?+

(\.+)(

[ee][-

+][0

-9]+

)?whitespace [

]newline [\n]

return_ [\r]

col_8 [\t]

char

(\'[

^ \n\r\t]\')

string (\".

\")array array\ \[

(1\.\.

)(\,

1\.\.

)*\]\ of\ (integer|real|

char

|string)

t_1 (

[^\t\n\f\v\r ])(

[_?!$@`]+)

(|)+

t_2 (+)

(|)*

識別規則

||

-print_out

('c'

);col = col + yyleng;

}print_out

('c'

); col = col + yyleng;

}print_out

('i'

);col = col + yyleng;

}

使用者子程式

此處子程式借鑑的老師ppt裡的例子

將所需處理的檔名用 ar**傳遞進來

處理以後的結果輸出到檔案中

在教材中,把詞法分析器安排成乙個子程式,每當語法分析器需要乙個單詞符號時就呼叫這個子程式;每呼叫一次,詞法分析器就從輸入串中識別出乙個單詞符號,然後把它交給語法分析器。

因此,生成的詞法分析器需要能夠順序逐個將單詞的屬性和位置(列數、行數)輸出。

單詞按照不同的屬性進行單獨處理。

在**中使用全域性變數file* fout將詞法分析結果輸出到檔案中。

github link

github address:

Linux環境下的針對PL0語言的語法詞法語義分析

摘 要 此次編譯原理課程設計,我利用flex工具進行pl 0語言的詞法分析 自己用c 語言實現了lr語法分析 語義分析以及中間 生成,我選擇的是布林表示式文法,對符合文法的布林表示式能夠產生相應四元式,處理了控制結構的真鏈與假鏈,對錯誤的表示式能夠給出錯誤提示。鑑於flex工具原本來自unix以及個...

Linux環境下的針對PL0語言的語法詞法語義分析

摘 要 此次編譯原理課程設計,我利用flex工具進行pl 0語言的詞法分析 自己用c 語言實現了lr語法分析 語義分析以及中間 生成,我選擇的是布林表示式文法,對符合文法的布林表示式能夠產生相應四元式,處理了控制結構的真鏈與假鏈,對錯誤的表示式能夠給出錯誤提示。鑑於flex工具原本來自unix以及個...

pl0語言的語法分析

實驗內容 1 算術表示式文法 vn 其中 e為開始符號 vt 其中 id代表識別符號,要求是長度不超過10的字母序列 num代表常數,要求是正整數 文法規則集如下 e te e te te t ft t ft ft f e id num 2 實驗步驟 1 按照文法求出每個非終結符的first和fol...