编译原理——实验壹预习——TINY语言的词法分析
實(shí)驗(yàn)?zāi)康?br /> 構(gòu)造tiny語言的詞法分析器(掃描器),要求利用第三方的lex工具進(jìn)行構(gòu)造。實(shí)驗(yàn)結(jié)果:構(gòu)造出的掃描器,能夠讀入教材樣例中給出的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.
預(yù)習(xí)要求:
Preview requirements:
1.查閱各種專業(yè)文獻(xiàn),針對任意二種現(xiàn)代程序設(shè)計(jì)語言編譯器的詞法分析技術(shù),找出各自的標(biāo)志性的特征點(diǎn),并加以比較分析和比較,指出其優(yōu)缺點(diǎn),并試圖給出自已的結(jié)論。
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的設(shè)計(jì)目標(biāo)在于生成一個(gè)高性能的掃描器,對處理大量rule 做了優(yōu)化。除了用——C 選項(xiàng)對表格進(jìn)行壓縮外,還有一些option/action 會影響到掃描器的速度。比如JavaScript,就不適合使用flex,JavaScript 正則表達(dá)式字面量和除法操作符的二義性, 很難用 flex 解決, 一般把真正含義的辨清延遲到 parse 階段.
2.請描述自已擬定的實(shí)驗(yàn)計(jì)劃和步驟,以及對輸入和輸出的設(shè)計(jì)。
Please design your experimental plan and procedures, as well as the design of input and output of the SCANNER
3.選擇三方工具,閱讀其使用說明,并嘗試建立起工作環(huán)境。
Choose the LEX tools, read their instructions, and try to establish a working environment.
答:主要采用第三方工具flex進(jìn)行詞法分析。flex用來生成掃描器,其中掃描器就是可以識別文本中詞法模式的程序。具體流程為:flex讀取給定的輸入文件,或標(biāo)準(zhǔn)輸入讀取信息來生成一個(gè)掃描器。信息以正則表達(dá)式和C代碼組成,這種形式稱為規(guī)則。flex生成C源代碼文件lex.yy.c,其中定義了一個(gè)函數(shù)yylex()。這個(gè)文件通過編譯,并用-lfl 鏈接生成可執(zhí)行文件。當(dāng)可執(zhí)行文件被執(zhí)行時(shí),它分析輸入中可能存在的符合正則表達(dá)的內(nèi)容。當(dāng)找到任何一個(gè)與正則表達(dá)式相匹配內(nèi)容時(shí),相應(yīng)的C 代碼將被執(zhí)行。
總結(jié)
以上是生活随笔為你收集整理的编译原理——实验壹预习——TINY语言的词法分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++内存模型和原子类型操作
- 下一篇: 作者:吴城文,男,清华大学计算机科学与技