0

我正在用 JLEX 生成词法分析器。我从此链接中找到了字符串文字的正则表达式,并将其用于与其他表达式相同的 .jflex 文件中。但它给了我这个错误: StringLiteral
= \"(\\.|[^"\\])*\"

谁能帮帮我,谢谢。

4

1 回答 1

1

您复制的正则表达式适用于 (f)lex,它使用的正则表达式语法略有不同。特别是,(f)lex 将"括号类中的普通字符视为普通字符,因此与 ( ) 引号 ( ) 或反斜杠 ( )[^"\\]以外的任何字符类匹配的字符类也是如此。^"\\

但是,在 JFlex 中",无论是括号外还是括号内,都是一个引号字符。所以"字符类中的 是未终止的。因此出现错误消息。

所以你需要反斜杠转义它:

StringLiteral = \"(\\.|[^\"\\])*\"

有关详细信息,请参阅JFlex 手册中有关正则表达式的章节

于 2021-06-15T20:38:23.660 回答