編譯原理實驗講義

來源:互聯網
上載者:User
 

編譯原理實驗講義

ver 0.4

實驗一 C_minus語言詞法分析器的設計(6學時)

【目的】 設計一個簡單的詞法分析器,從而進一步加深對詞法分析器工作原理的理解。

【要求】

1、該個詞法分析器要求至少能夠識別以下幾類單詞:

a. 關鍵字:else if int return void while共6個,所有的關鍵字都是保留字,並且必須是小寫;

b. 標識符:識別與C語言詞法規定相一致的標識符,通過下列Regex定義:ID = letter (letter | digit)*;

c. 常數:NUM=(+ | - |ε)digit digit*(.digit digit* |ε)(e(+ | - |ε) digit digit* |ε),letter = a|..|z|A|..|Z|,digit = 0|..|9,包括整數,如123, -123, +123等;小數,如123.45, +123.45, -123.45;科學計數法表示的常數,如+1.23e3,-2.3e-9;

d. 專用符號:+ - * / < <= > >= == != = ; , ( ) [ ] { } /* */;

2、分析器的輸入為由上述幾類單詞構成的程式,輸出為該段程式的機內表示形式,即關鍵字、運算子、界限符變為其對應的機內符,常數使用二進位形式,標識符使用相應的標識符表指標表示。

3、詞法分析器應當能夠指出來源程式中的詞法錯誤,如不可識別的符號、錯誤的詞法等。

【方法與參考】

首先給出所有單詞的正規式(或正規文法)表示,然後將其轉化為NFA,再將NFA確定化、最小化,得到最簡的c,根據DFA編寫詞法分析器的代碼。

【實驗環境和工具】 本實驗不限定現所使用的開發工具以及運行環境。

實驗二遞迴下降分析器的設計(6學時)

【目的】 使用遞迴子程式法設計一個文法剖析器,理解自頂向下分析方法的原理,掌握手工編寫文法剖析器的方法。

【要求】

1、使用遞迴下降分析演算法分析運算式文法:

exp ::= exp addop term | term

addop ::= + | -

term ::= term mulop factor | factor

mulop ::= * | /

factor ::= (exp) | number

其中number可以是多位的十進位數字串(整數即可),因此這裡還需要一個小的詞法分析器來得到number的值。

2、該詞法分析器以子程式形式出現,當需要進行詞法分析時進行調用;

3、能夠識別正確和錯誤的運算式;

4、在進行文法分析的過程中,計算輸入運算式的值。

【方法與參考】 首先將上述文法改寫成EBNF形式,根據遞迴下降分析演算法基本思想編寫程式。

【實驗環境和工具】 本實驗不限定現所使用的開發工具以及運行環境。

實驗三算符優先分析法分析器的設計(6學時)

【目的】 設計一個算符優先分析器,理解優先分析方法的原理。

【要求】 使用算符優先分析演算法分析下面的文法:

E’ → #E#

E → E+T | T

T → T*F | F

F → P^F | P

P → (E) | i

其中i可以看作是一個終結符,無需作詞法分析。具體要求如下:

1.         如果輸入符號串為正確句子,顯示分析步驟,包括分析棧中的內容、優先關係、輸入符號串的變化情況;

2.         如果輸入符號串不是正確句子,則指示出錯位置。

【方法】 首先構造算符優先關係表,然後根據算符優先分析演算法編寫程式。

【實驗環境和工具】 本實驗不限定現所使用的開發工具以及運行環境。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.