在涵盖 JFlex 输入文件中的词法规则的部分中允许同时使用关键字和正则表达式有什么意义?
它似乎
retrieve { action code}
...和
"retrieve" { action code }
...两者都匹配包含“检索”的输入,第一个是正则表达式,第二个是关键字。我的意思是所有关键字都应该能够以正则表达式的形式解释,因此允许两者似乎是多余的。
我不太确定您所说的“关键字”是什么意思。根据JFlex User's Manual的“词汇规则”部分,您的两个示例都使用正则表达式。
确实,正则表达式retrieve
和"retrieve"
是等价的,但这只是因为"..."
符号的唯一作用是禁用正则表达式元字符,并且其中的所有字符都不retrieve
是正则表达式元字符。(顺便说一句,您也可以将正则表达式的一部分用引号括起来;因此,例如,retrieve
也等价于r"et"ri"ev"e
.)
如果(例如)您的语言中的一个关键字是 ,则引号更有用+++***+++
,在这种情况下,您可以编写以下任何一种:
\+\+\+\*\*\*\+\+\+ { action code }
"+++***+++" { action code }