語法分析 哈工大編譯原理實驗二

2021-08-11 01:19:12 字數 874 閱讀 7446

1.鞏固對語法分析的基本功能和原理的認識。

2.通過對語法分析表的自動生成加深語法分析表的認識。

3.理解並處理語法分析中的異常和錯誤。

在詞法分析器的基礎上設計實現類高階語言的語法分析器,基本功能如下:

(1)    能識別以下幾類語句:

ø 宣告語句(包括變數宣告、陣列宣告、記錄宣告和過程宣告

ø 表示式及賦值語句(包括陣列元素的引用和賦值)

ø 分支語句:if_then_else

ø 迴圈語句:do_while

ø 過程呼叫語句

(2)如果語法分析器採用的是自頂向下的分析技術,要求編寫程式自動計算

first

集和follow

集,並自動生成**分析表。如果採用的是自底向上的分析技術,要求編寫自動計算

closure(i)

和goto

函式的程式,並自動生成

lr分析表。

(3)具備語法錯誤處理能力,能準確給出錯誤所在位置,並採用可行的錯誤恢復策略。輸出的錯誤提示資訊格式如下:

error at line [行號]:[說明文字]

(4)系統的輸入形式:要求可以通過檔案匯入文法和測試用例,可以通過使用者介面顯示並編輯

測試用例。測試用例要涵蓋「實驗內容」第(

1)條中列出的各種型別的語句,並設定一些語法錯誤。

(5)系統的輸出分為兩部分:一部分是列印輸出語法分析器的

first

集、follow

集和ll(1)

分析表(或

lr分析表)。另一部分是列印輸出語法分析結果

在這裡我就附上我的實驗報告啦~

自我感覺還是不錯的嘻嘻嘻

源**:

哈工大編譯原理實驗1 詞法分析

設計實現類高階語言的詞法分析器,基本功能如下 1 能識別以下幾類單詞 識別符號 由大小寫字母 數字以及下劃線組成,但必須以字母或者下劃線開頭 關鍵字 型別關鍵字 整型 浮點型 布林型 記錄型 分支結構中的if和else 迴圈結構中的do和while 過程宣告和呼叫中的關鍵字 運算子 算術運算子 關係...

編譯原理 語法分析(二)

在第一篇文章中,我們介紹了如何用上下文無關文法描述一種語言的語法,和如何使用推導和規約構造一棵語法分析樹,以及如何對文法進行轉換使之能夠更適用於語法分析。在本篇文章中,我們將介紹如何使用自頂向下的方法進行語法分析,進一步的,我們將介紹一種更高效的 分析方法。為了下文需要和減少重複,我們先給出在下文中...

編譯原理 語法分析 二

在第一篇文章中,我們介紹了如何用上下文無關文法描述一種語言的語法,和如何使用推導和規約構造一棵語法分析樹,以及如何對文法進行轉換使之能夠更適用於語法分析。在本篇文章中,我們將介紹如何使用自頂向下的方法進行語法分析,進一步的,我們將介紹一種更高效的 分析方法。文法 約定 為了下文需要和減少重複,我們先...