詞法分析與正規表示式 (一)

2021-07-25 22:45:33 字數 626 閱讀 7009

嚴格來說,詞法分析是語法分析的一部分。可是將詞法分析從語法分析中抽離出來,有如下好處。

1. 簡化語法分析器的設計。如果把空白字元和去除注釋這些功能都交給語法分析器來處理,那語法分析器的結構會變得非常簡單。

2. 提高編譯器效率。編譯器耗時最大的部分消耗在詞法分析階段。因為詞法分析涉及到檔案讀操作。而將詞法分析器抽離出來,有利於設計更有效的專門的處理器。

3. 增強編譯器的移植性。與裝置有關的字元以及程式語言的特殊字符集可以限制在詞法分析器中。

乙個詞法分析器的輸入是源**,本質上可以看做是乙個字串。而它的輸出是「記號」流。乙個「記號」由乙個模式來描述。凡是匹配該模式的字串都被標識成相同的記號。而記號的模式通常是乙個正規表示式,或者說正則文法。

在程式語言中,記號的型別包括:關鍵字,操作符,變數識別符號,數值常量,字串常量和運算子。

1. 關鍵字

關鍵字對應的文法非常簡單。例如if關鍵字對應的產生式為

-> if

注意左邊的是非終結符,而右邊的if是由i和f兩個字元(終結符)組成的串。

類似地,我們可以定義其他關鍵字。

2. 操作符

例如乘法運算子對應的產生式為

-> *

注意左邊的是非終結符,而右邊的*是字元(終結符)。

編譯原理 詞法分析02 正規表示式

r r 正規表示式,表示字串的格式。l r r所匹配的串的集合。symbol符號 l r 中的元素稱為符號。alphabet字母表 表示符號的字元的集合。用 sigma 表示。元字元metacharacter,元符號metasymbol 它們非字母表中的字元,是一些特殊意義的字元,比如,如果要匹配這...

正規表示式分析

1.請分析這下面這兩個輸出吧,最好乙個乙個斜槓地分析。system.out.println 8abc8 replaceall 8 8abc system.out.println 8abc8 replaceall 8 8abc 2.為什麼a和b可以有相同的輸出,c和d卻不可以呢?system.out....

編譯原理 詞法分析 之 正規表示式 NFA與DFA

1.正規表示式 正規表示式是一種更緊湊的正則文法,正規表示式 正則文法 nfa dfa他們存在一一對應關係 2.什麼是dfa dfa有如下幾個部分構成,初始狀態 終態 輸入字母表 可以理解成合法的輸入 狀態集 以及狀態轉換表 狀態集與合法輸入笛卡爾積而成,每乙個狀態接收到乙個合法的輸入後都會得到乙個...