[英]Is there an alternative to \b and/or negative lookahead for JFLEX?
我正在构建一个扫描仪,但似乎无法找到一种方法来使用 JFlex 和 Regex 来识别“if”或“else”等运算符。 由于 JFlex不完全符合我不能使用字边界或 (?<=\s|^) + (?=\s|$) 因为两者都不是? 或 $ 是允许的。 这个想法是找到正确编写的运算符,而不是 ifo 或 elso。 提前致谢。
这个想法是找到正确编写的运算符,而不是 ifo 或 elso。 提前致谢。
只需使用“if”和“else”,并有另一个匹配ifo
和elseo
的模式(比如标识符),并且在if
和else
的模式之后:
"if" { /* it's an if */ }
"else" { /* it's an else */ }
[a-zA-Z_][a-zA-Z_0-9]* { /* it's an identifier */ }
遵循最大咀嚼规则,这将匹配ifo
和elseo
等输入的标识符规则,并且仅当不再有匹配标识符规则的输入前缀时才匹配“if”和“else”规则。
如果您的语言没有标识符,而ifo
和elseo
只是应该是无效的标记,您可以保留模式并更改操作以将其视为无效标记而不是标识符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.