日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

编译原理实验一预习报告

發布時間:2025/3/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 编译原理实验一预习报告 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

實驗一 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的語法被分為三個部分: {definitions} %% {rules} %% {user subroutines}definitions:LABEL REGULAR_EXPRESSION LABEL是這里類字符串的名稱,REGULAR_EXPRESSION則是匹配這種字符串的正則表達式。 下面是網上找到的正則表達式的語法: | 或 [] 括號中的字符取其一 - a-z表示ascii碼中介于a-z包括a.z的字符 \ 轉義(flex不能識別除字母外的字符) * 0或多個字符 ? 0或1個字符 + 1或多個字符 ^ 除此之外的其余字符 . 除\n外的所有字符,等價于^\n

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 回車后進入。沒有報錯,文件夾出現新文件,說明配置成功

總結

以上是生活随笔為你收集整理的编译原理实验一预习报告的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。