允許在JFlex輸入文件的詞彙規則中使用關鍵字和正則表達式的關鍵是什麼?JFlex正則表達式與詞法規則中的關鍵字
看來
retrieve { action code}
...和
"retrieve" { action code }
...二者匹配包含「檢索」時,第一個是一個正則表達式和第二個是一個關鍵字的輸入。我的意思是所有關鍵字都應該能夠以正則表達式的形式進行解釋,所以看起來好像是多餘的。
允許在JFlex輸入文件的詞彙規則中使用關鍵字和正則表達式的關鍵是什麼?JFlex正則表達式與詞法規則中的關鍵字
看來
retrieve { action code}
...和
"retrieve" { action code }
...二者匹配包含「檢索」時,第一個是一個正則表達式和第二個是一個關鍵字的輸入。我的意思是所有關鍵字都應該能夠以正則表達式的形式進行解釋,所以看起來好像是多餘的。
我不太清楚你的意思是「關鍵字」。根據the "Lexical rules" section of the JFlex User's Manual,您的示例都使用使用正則表達式。
這是真的,在正則表達式retrieve
和"retrieve"
是等價的,但是這只是因爲"..."
符號的唯一效果是禁用的正則表達式元字符,並且沒有在retrieve
的字符是正則表達式元字符開始。 (順便說一下,你也可以換隻部分在引號正則表達式的;因此,例如,retrieve
也相當於r"et"ri"ev"e
)
引號是更加有用的,如果(說)的一個您的語言中的關鍵字是+++***+++
,在這種情況下,您可以編寫以下任一項:
\+\+\+\*\*\*\+\+\+ { action code }
"+++***+++" { action code }
啊哈...然後我誤解了一些東西..正在使用「....」來轉義元字符一般用於正則表達式或僅在這種特定情況下使用?我認爲「不被認爲是正則表達式中具有特殊含義的字符,因此會與實際匹配」。 (所以「檢索」將只匹配「檢索」,而不是作爲正則表達式檢索,因此我得出這樣的結論,它不是一個正則表達式) –
@快速反射:「正則表達式」不是一個單一的單一概念;正則表達式引擎之間有很多不同之處。所以說'''在正則表達式中並不特別有點像'floobet'在編程語言中不是保留字:通常是真實的,但不一定是絕對的(但是可以肯定,我從未見過*以這種方式使用'「'的任何*其他正則表達式語言。) – ruakh
明白了!非常感謝! –
lex/flex/jflex中沒有關鍵字。一切都通過正則表達式完成。 – EJP