编译原理——实验壹——TINY语言的词法分析
一、 實驗目的
二、 實驗設計
掌握詞法分析器的構造和使用,學會使用 lex 工具來構造詞法分析程序。
1.選擇教材《程序清單2-3 TINY語言中的樣本程序》作為輸入
2.選擇教材中《程序清單2-4》作為輸出并做一些輸入輸出文件格式的改進
3.準備好了實驗所需工具
4.程序設計
4-1:將[0-9]+作為digit 匹配數字
4-2:將read |if| then| repeat | until |write | end 作為keyword 匹配關鍵字
4-3:將[a-zA-Z]+作為letter 匹配單詞字母
4-4:將{[^}]} 作為comment匹配注釋
4-5;將":="|"="|"+"|"-"|""|"/"|">"|"<“作為operator 匹配操作符
4-6:將[” “|\t|\n]+ 作為ignore匹配空格、換行、制表符 進行忽略
4-7:將[”,"|";"]+ 作為other 正常輸出
4-8:將匹配到的token,根據書本給出的格式進行輸出到屏幕上
三、 內容和步驟
1代碼:
2、步驟:
(1)在一個空文件夾內建一個print.l 文件,并鍵入代碼
(2)使用flex命令,對print.l文件進行編譯。生成lex.yy.c文件
(3)使用dev編譯器編譯lex.yy.c文件,生成.exe文件。
3結果:
(1)輸入
(2)過程中
(3)、輸出
四、 實驗結論:
1 理論基礎
(1) 關于LEX工具的使用方法
(2) 掌握LEX輸入文件的格式
LEX輸入文件由3個部分組成:定義集、規則集、以及輔助程序集或用戶程序集。這3個部分由雙百分號分開
(3)了解詞法分析器的內部工作原理
(4)了解TINY語言的基本關鍵字和結構
TINY 的單詞記號分為三種典型類型:保留字、特殊符號和“其他”單詞。保留字一共 8 個,特殊符號包括運算符和界符:分別是四種基本的整數運算符號,兩種比較符號(等號和小于),以及括號、分號和賦值號。除賦值號是兩個字符的長度以外,其余均為一個字符 TINY 的標識符是一個或多個字母的序列。數是一個或多個數字的序列。除了單詞之外,TINY 還要遵循以下詞法規則:注釋應放在花括號{…}中,且不可嵌套;代碼應是自由格式;空白符由空格、制表位和新行組成。
2、分析和總結
問題:編譯lex.yy.c文件時候想使用dos命令發現在windows環境下難以完成,于是下載了devc++編譯器完成該部分任務。
結果:功能良好,可以完成預定的要求。
總結:通過這次實驗,我對詞法分析器有了進一步的了解,可以把理論知識應用于實驗中。通過這次語義分析的實驗, 我對高級語言的學習有了更深的認識 ,了解得更透徹。
3、對工具的評價
作為lex&yacc安裝的集合,unxutils挺方便的,可以滿足基本要求。
總結
以上是生活随笔為你收集整理的编译原理——实验壹——TINY语言的词法分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020小目标
- 下一篇: go语言定义二维数组