JFlex正则表达式与词法规则中的关键词

时间:2012-12-21 18:16:33

标签: java regex lexical jflex

允许在JFlex输入文件中的词法规则部分中使用关键字和正则表达式有什么意义?

似乎

retrieve { action code}

...和

 "retrieve" { action code }

...两者都匹配包含“retrieve”的输入,第一个是正则表达式,第二个是关键字。我的意思是所有关键字都应该能够以正则表达式的形式进行解释,因此允许这两种关键字似乎是多余的。

1 个答案:

答案 0 :(得分:1)

我不太确定你的意思是“关键字”。根据{{​​3}},您的示例中的两个都使用正则表达式。

正则表达式retrieve"retrieve"确实是等价的,但这只是因为"..."表示法的唯一效果是禁用正则表达式元字符,而retrieve符号中没有任何字符{1}}首先是正则表达式元字符。 (顺便说一句,你也可以用引号标记正则表达式的 part ;例如,retrieve也等同于r"et"ri"ev"e。)

如果(例如)您的语言中的某个关键字为+++***+++,则引号会更有用,在这种情况下,您可以编写其中任何一个:

\+\+\+\*\*\*\+\+\+ { action code }
"+++***+++" { action code }