编译原理实验一预习报告
實驗一 TINY語言的詞法分析
實驗目的
構造tiny語言的詞法分析器(掃描器),要求利用第三方的lex工具進行構造。實驗結果:構造出的掃描器,能夠讀入教材樣例中給出的tiny語言的示例代碼,分解成token輸出。
Experimental Requirement
Build the lexical parser (a scanner) of TINY language, using the Lex tool of third party. The experimental result Scanner can receive the sample program of Tiny language, and output is a sequence of tokes that are defined by regular expression.
預習要求:
Preview requirements:
1.查閱各種專業文獻,針對任意二種現代程序設計語言編譯器的詞法分析技術,找出各自的標志性的特征點,并加以比較分析和比較,指出其優缺點,并試圖給出自已的結論。
Referring to professional literatures, aiming at the lexical analysis technology of any two modern programming language compilers, finds out their respective features, compares them, points out their advantages and disadvantages, and tries to give your Evaluation and conclusions.
詞法分析階段是編譯過程的第一個階段,是編譯的基礎。這個階段的任務是從左到右一個字符一個字符地讀入源程序,即對構成源程序的字符流進行掃描然后根據構詞規則識別單詞(也稱單詞符號或符號)。詞法分析程序實現這個任務。詞法分析程序可以使用Lex等工具自動生成。
組織輸入、掃描、分析、輸出。
對輸入的每個單詞或符號進行分析歸類,主要分析每個詞的詞性如屬于關鍵詞,運算符,變量名,接收字符串形式的源程序,按照源程序輸入的次序依次掃描源程序,在掃描的同時根據語言的詞法規則識別出具有獨立意義的單詞,并產生與源程序等價的屬性字(Token)流
lex是一個產生詞法分析器, Lex常常與yacc語法分析器產生程序。
Lex讀進一個代表詞法分析器規則的輸入字符串流,然后輸出以C語言實做的詞法分析器源代碼。有名的Lex公開源代碼版本是flex,代表"快速的詞法分析器"。因此優點在于速度快,但是必然會失去部分穩定性。
YACC等工具自底向上
JavaCC 是一個詞法分析生成器和語法分析生成器。 詞法分析和語法分析是處理輸入字符序列的軟件構件, 編譯器和解釋器協同詞法分析和語法分析來“解密” 程序文件。
JavaCC產生自頂向下的語法分析器。
詞法規范(如正則表達式、字符串等)和語法規范(BNF范式)書寫在同一個文件里。這使得語法易讀和易維護。
JavaCC可以在任何java平臺V1.1以后的版本上運行。它可以不需要特別的移植工作便可在多種機器上運行。是Java語言”Write Once, Run Everywhere”特性的證明。
2.請描述自已擬定的實驗計劃和步驟,以及對輸入和輸出的設計。
Please design your experimental plan and procedures, as well as the design of input and output of the SCANNER
TINY的程序結構很簡單,它在語法上與A d a或P a s c a l的語法相似:僅是一個由分號分隔開的語句序列。另外,它既無過程也無聲明。所有的變量都是整型變量,通過對其賦值可較輕易地聲明變量(類似F O RT R A N或B A S I C)。它只有兩個控制語句: i f語句和r e p e a t語句,這兩個控制語句本身也可包含語句序列。I f語句有一個可選的e l s e部分且必須由關鍵字e n d結束。除此之外,r e a d語句和w r i t e語句完成輸入/輸出。在花括號中可以有注釋,但注釋不能嵌套。
TINY的表達式也局限于布爾表達式和整型算術表達式。布爾表達式由對兩個算術表達式的比較組成,該比較使用<與=比較算符。算術表達式可以包括整型常數、變量、參數以及4個整型算符+、-、*、/,此外還有一般的數學屬性。布爾表達式可能只作為測試出現在控制語句中——而沒有布爾型變量、賦值或I / O。
flex XXX.l命令將XXX.l文件編譯為一個c文件,將這個c文件編譯運行,得到一個exe文件,用這個程序來解析tiny語言即可。
3.選擇三方工具,閱讀其使用說明,并嘗試建立起工作環境。
Choose the LEX tools, read their instructions, and try to establish a working environment.
配置環境變量:右擊此電腦->屬性->高級系統設置->“高級”一欄下的環境變量 在系統變量Path中增加win_flex_bison的路徑。直接在桌面新建一個test文件夾,里面創建文本文件后改名lex.l打開cmd,同樣方法獲得路徑,輸入cd :路徑,比如我cd C:\Users\Administrator\Desktop\test 回車后進入。沒有報錯,文件夾出現新文件,說明配置成功
總結
以上是生活随笔為你收集整理的编译原理实验一预习报告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hint为什么不显示_英雄联盟手游kda
- 下一篇: 测试两个主机之间的连通性_常用的光缆4种