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

2021-09-25 21:06:49 字數 962 閱讀 1974

摘 要

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

鑑於flex工具原本來自unix以及個人日常習慣,本實驗開發環境選用linux,**在ubuntu16.10中測試通過。

關鍵字:flex;詞法分析;linux;語法分析;中間**生成;真假鏈

引 言 編譯原理是一門實踐性比較強的學科,學習了課本上理論知識,閱讀了書後示例pl/0編譯程式,此次課程設計針對pl/0語言進行了詞法分析、語法分析及布林表示式的中間**(四元式)生成。其中pl/0的詞法分析程式的功能是為語法語義分析提供單詞,把輸入的字串形式的源程式分割成乙個個單詞符號傳遞給語法語義分析;而語法分析的任務是識別單詞符號串行是否符合給定的語法規則。實驗中在語法分析過程中需要用到flex工具,這個工具源於unix和linux,很多同學使用windows還需要配置相關環境,我日常使用linux,因此選用它作為程式設計環境,免去了不必要的麻煩,配置較為方便。

一、實驗目的

實現對布林表示式的詞法分析、語法分析、語義分析並產生四元式中間**,完成真假鏈的回填及合併。

1.1 詞法分析部分

利用c++和flex工具設計編寫乙個詞法分析程式,實現對標誌符、數字、保留字和算符等一系列符號的識別,用於後面做語法分析和語義分析;

1.2 語法分析部分

採用lr(0)語法分析方法,設計、開發如下文法描述語言的語法分析程式,實現對詞法分析程式所提供的單詞序列進行語法檢查和結構分析,加深課堂相關理論教學內容的理解,提高語法分析方法的實踐能力。語法分析完成之後可用於語義分析。

1.3 語義分析部分

基於以上兩步詞法和語法分析的工作,採用一邊歸約一邊建立語義棧並做語義分析的方法,分析給出的布林表示式是否符合相應文法,最後產生四元式 ,實現真假鏈的回填及合併 。

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

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

源 和相關檔案都放在了github上 github link 設計思路 實驗步驟 源 理解編譯器的工作機制,掌握編譯器的工作原理 掌握詞法分析器生成工具lex的用法 輸出型別 輔助定義 digit 0 9 letter a za z identifier integer real ee 0 9 wh...