源**和相關檔案都放在了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...