詞法分析器的功能是輸入源程式,輸出單詞符號。單詞符號是乙個程式語言的基本語法符號。程式語言的符號一般可以定義為以下幾種:
關鍵字 是由程式語言定義的具有固定意義的識別符號,也稱這些識別符號為保留字或基本字。例如:c++語言中的define、do、for、while、if、else等
識別符號用來表示各種名字,如變數名、陣列名、函式名等
常數 常數一般有整形、實型、布林型、文字型等。
運算子 如:+、-、>、<、*、/等
界符 如:逗號、分號、括號等
詞法分析器所輸出的單詞符號常常表示成二元式(單詞種別,單詞符號屬性值)的形式。
下面是乙個由c++寫成的詞法分析器,使用環境為vs2015:
#include "stdafx.h"
#include
#include
using
namespace
std;
#define max 22
char ch = ' ';
string key[19] = ;
//判斷是否為保留字
bool iskey(string c)
return
false;
}//判斷是否為字母
bool isletter(char c)
//判斷是否為數字
bool isdigit(char c)
//掃瞄文字
void scan(file *fpin)
else
if (isletter(ch))
fseek(fpin, -1l, seek_cur);
if (iskey(arr))
else
cout
<< arr << "\t$普通識別符號"
<< endl;
}else
if (isdigit(ch))
fseek(fpin, -1l, seek_cur);
cout
<< arr << "\t$無符號實數"
<< endl;
}else
switch (ch) ':cout
<< ch << "\t$界符"
<< endl; break;
case
':':
}break;
case
'>':
}break;
case
'<':
}break;
default: cout
<< ch << "\t$無法識別字元"
<< endl;}}
}int main()
cout
<< "分析結果如下:"
<< endl;
scan(fpin);
fclose(fpin);
return
0;}
編譯原理 詞法分析器
1 從源程式檔案中讀入字元。2 統計行數和列數用於錯誤單詞的定位。3 刪除空格類字元,包括回車 製表符空格。4 按拼寫單詞,並用 內碼,屬性 二元式表示。屬性值 token 的機內表示 5 如果發現錯誤則報告出錯 6 根據需要是否填寫識別符號表供以後各階段使用 int tag 0 設立標誌 一開始本...
實驗一 詞法分析器實驗
一 實驗目的 通過詞法分析器,進一步了解詞法之間的關係。二 實驗內容和要求 將輸入的字串通過詞法分析器一一識別出來,同時將該字串或者字元並且和種別碼一起輸出來。三 實驗方法 步驟及結果測試 源程式名 z.c 可執行程式名 z.exe 原理分析及流程圖 採用陣列存放資料,通過字串的比較實現關鍵字的種別...
編譯原理,例 詞法分析器
編譯原理課作業要求自己寫乙個詞法分析器,我嘗試寫了一下。詞法分析 電腦科學中將字串行轉換為單詞 token 序列的過程。進行詞法分析的程式或者函式叫作詞法分析器 lexical analyzer 也叫掃瞄器 scanner 詞法分析器一般以函式的形式存在,供語法分析器呼叫。完成詞法分析任務的程式稱為...