編譯原理(一)詞法分析器

2021-07-05 18:16:54 字數 1456 閱讀 9860

詞法分析器的功能是輸入源程式,輸出單詞符號。單詞符號是乙個程式語言的基本語法符號。程式語言的符號一般可以定義為以下幾種:

關鍵字 是由程式語言定義的具有固定意義的識別符號,也稱這些識別符號為保留字或基本字。例如: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 詞法分析器一般以函式的形式存在,供語法分析器呼叫。完成詞法分析任務的程式稱為...