允许在JFlex输入文件中的词法规则部分中使用关键字和正则表达式有什么意义?
似乎
retrieve { action code}
...和
"retrieve" { action code }
...两者都匹配包含“retrieve”的输入,第一个是正则表达式,第二个是关键字。我的意思是所有关键字都应该能够以正则表达式的形式进行解释,因此允许这两种关键字似乎是多余的。
答案 0 :(得分:1)
我不太确定你的意思是“关键字”。根据{{3}},您的示例中的两个都使用正则表达式。
正则表达式retrieve
和"retrieve"
确实是等价的,但这只是因为"..."
表示法的唯一效果是禁用正则表达式元字符,而retrieve
符号中没有任何字符{1}}首先是正则表达式元字符。 (顺便说一句,你也可以用引号标记正则表达式的 part ;例如,retrieve
也等同于r"et"ri"ev"e
。)
如果(例如)您的语言中的某个关键字为+++***+++
,则引号会更有用,在这种情况下,您可以编写其中任何一个:
\+\+\+\*\*\*\+\+\+ { action code }
"+++***+++" { action code }