1. 程式人生 > >[原始碼和文件分享]基於有限自動機的詞法分析器構造

[原始碼和文件分享]基於有限自動機的詞法分析器構造

一、目標

本次實驗的主要目的是對自定義的程式語言的詞法分析器程式構造,我從 C 語言當中選擇了部分具有代表性的子集,實現詞法分析器,主要是對編譯原理課程中學習的從正則達式轉化為 NFA,再從 NFA 轉化為 DFA 以及後續的程式碼生成的過程有更深刻的認識。同時,也希望對於在編譯原理課程中所體現出的電腦科學當中的一些樸素而優美的思想有更多的體會。

二、內容概述

本報告主要描述了一個簡單的詞法分析器構造過程,包括最終成品的功能概要,實現過程中的理論推導,具體的核心演算法和資料結構的描述,以及個人的收穫和體會。

三、實驗環境

  • 作業系統 Win8.1
  • 實驗的編譯器 eclipse
  • 編碼格式 Utf-8

3.1 語言定義

3.1.1 記號定義

3.1.1.1 保留字

我選擇了 C 語言當中一部分具有代表性的保留字,同時為了保持整個編譯原理課程實驗的延續性和後續語義分析的實驗內容,選擇的保留字能夠涵蓋程式設計中的順序、分支、和迴圈結構,這樣也可以很好的對正則表示式當中的三種基本運算連線、或、閉包運算形成很好的對應,除此之外,選擇了能夠形成對函式呼叫,變數宣告進行支援的部分保留字。具體選擇的保留字有如下幾個:

else, if,int,double,char,do,continue,break,float, return, void, while,for

3.1.1.2 特殊符號

  • 算術運算子:+、-、*、/

  • 比較運算子:<、<=、>、>=、==、!=

  • 分割符號:;、,

  • 括號:()、[]、{}

  • 數字:支援整數int,浮點數doule、float、char


參考文件和完整的文件和原始碼下載地址:

https://www.write-bug.com/article/1359.html