JFLEX 是否有替代 \b and/or 负前瞻的方法?
Is there an alternative to \b and/or negative lookahead for JFLEX?
我正在构建一个扫描器,但似乎找不到使用 JFlex 和正则表达式来识别“if”或“else”等运算符的方法。由于 JFlex 不完全符合 我不能使用字边界或 (?<=\s|^) + (?=\s|$) 因为两者都不 ?或 $ 是允许的。
这个想法是找到正确编写的运算符,而不是 ifo 或 elso。提前致谢。
The idea is to find the correctly written operators not ifo or elso. Thanks in advance.
只需使用“if”和“else”,并有另一个匹配 ifo
和 elseo
的模式(例如标识符),并且出现在 if
和 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
只是被认为是无效标记,您可以保留该模式并更改操作以将其视为无效标记而不是标识符。
我正在构建一个扫描器,但似乎找不到使用 JFlex 和正则表达式来识别“if”或“else”等运算符的方法。由于 JFlex 不完全符合 我不能使用字边界或 (?<=\s|^) + (?=\s|$) 因为两者都不 ?或 $ 是允许的。 这个想法是找到正确编写的运算符,而不是 ifo 或 elso。提前致谢。
The idea is to find the correctly written operators not ifo or elso. Thanks in advance.
只需使用“if”和“else”,并有另一个匹配 ifo
和 elseo
的模式(例如标识符),并且出现在 if
和 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
只是被认为是无效标记,您可以保留该模式并更改操作以将其视为无效标记而不是标识符。