《编译原理》实验预习报告——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.
?
答:
flex的設計目標就是生成一個高性能的掃描器。它已經對處理大量rule 做了優化。除了用-C 選項進行表格壓縮之外,還有一些option/action 會影響到掃描器的速度。
比如JavaScript,就不適合使用flex作為詞法分析器,JavaScript 正則表達式字面量和除法操作符的二義性, 很難用 lex 解決, 一般只用 lex 做很少的事情, 然后把真正含義的辨清延遲到 parse 階段.
?
?
2.請描述自已擬定的實驗計劃和步驟,以及對輸入和輸出的設計。
Please design your experimental plan and procedures, as well as the design of input and output of the SCANNER
?
答:
?
3.選擇三方工具,閱讀其使用說明,并嘗試建立起工作環境。
Choose the LEX tools, read their instructions, and try to establish a working environment.
?
答:
我們采用flex進行詞法分析。flex是一個用來生成掃描器(scanners)的工具,其中掃描器就是可以識別文本中詞法模式的程序。具體流程為:flex讀取給定的輸入文件,或標準輸入(當沒有給定文件名時)讀取信息來生成一個掃描器。信息以正則表達式和C代碼組成,這種形式稱為規則(rule)。flex生成C源代碼文件lex.yy.c,其中定義了一個函數yylex()。這個文件通過編譯,并用-lfl 鏈接生成可執行文件。當可執行文件被執行時,它分析輸入中可能存在的符合正則表達的內容。當找到任何一個與正則表達式相匹配內容時,相應的C 代碼將被執行。
總結
以上是生活随笔為你收集整理的《编译原理》实验预习报告——TINY语言的词法分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《编译原理》实验报告——TINY语言的词
- 下一篇: 《软件工程》实验报告——需求获取与分析