r
r:正規表示式,表示字串的格式。
l(r)
r所匹配的串的集合。
symbol符號
l(r)中的元素稱為符號。
alphabet字母表
表示符號的字元的集合。用 ∑ (sigma)表示。
元字元metacharacter,元符號metasymbol
它們非字母表中的字元,是一些特殊意義的字元,比如,*. 如果要匹配這類符號,則需要使用轉義符號\。
escape character轉義字元
一般使用\表示,用於匹配元字元。
空串empty string
不包含任何字元的串,但它仍然是乙個匹配。用ε(eplsilon)表示
空集empty set
表示正規表示式無任何匹配。
regular definition正則定義
即正規表示式的名字。
正規表示式是以下中的一種:
基本正規表示式由單個字元a(其中a在正規字元的字母表 ∑ 中),以及元字元ε或元字元 φ。 分別表示為:
r|s格式的表示式:其中r和s均是正規表示式。在這種情況下:l(r|s) = l(r)|l(s)。
rs格式的表示式:其中r是正規表示式。在這種情況下:l(rs) = l(r)l(s)。
r格式的表示式:其中r是正規表示式。在這種情況下:l(r) = l(r)*。
(r)格式的表示式:其中r是正規表示式。在這種情況下:l((r)) = l(r),因此,括號並不改變語言,它們只調整運算的優先順序。
注意到這個定義中,|,*,(,),φ,ε均為元字元。
nat = [0-9]+ #自然數
signednat = (+|-)?nat #有符號數
number = signednat("."nat)?(e signednat)? #數字,包含整數,小數,正負數,指數
reserverd = if | while | then | repeat | do ...
letter = [a-z]
digit = [0-9]
identifier = letter(letter|digit)*
)*} #匹配
whitespace = (newline | blank | tab | comment) *
編譯原理 詞法分析 之 正規表示式 NFA與DFA
1.正規表示式 正規表示式是一種更緊湊的正則文法,正規表示式 正則文法 nfa dfa他們存在一一對應關係 2.什麼是dfa dfa有如下幾個部分構成,初始狀態 終態 輸入字母表 可以理解成合法的輸入 狀態集 以及狀態轉換表 狀態集與合法輸入笛卡爾積而成,每乙個狀態接收到乙個合法的輸入後都會得到乙個...
詞法分析與正規表示式 (一)
嚴格來說,詞法分析是語法分析的一部分。可是將詞法分析從語法分析中抽離出來,有如下好處。1.簡化語法分析器的設計。如果把空白字元和去除注釋這些功能都交給語法分析器來處理,那語法分析器的結構會變得非常簡單。2.提高編譯器效率。編譯器耗時最大的部分消耗在詞法分析階段。因為詞法分析涉及到檔案讀操作。而將詞法...
正規表示式 02
捕獲組也就是pattern中以括號對 分割出的子pattern。至於為什麼要用捕獲組呢,主要是為了能找出在一次匹配中你更關心的部分。group 0 於group 等價,表示整個正規表示式的匹配字串,group 1 等價於第乙個括號內的表示式返回的字串,以此類推。捕獲組可以通過從左到右計算其開括號來編...