如何允许特殊字符,例如 * 或?在 Antlr 的令牌中

How to allow special characters such as * or ? in a token in Antlr

我在我的 antlr 语法中指定一个标记为:

ID : [a-zA-Z0-9\*\?];   // Allow tokens such as Asdf*fdsa

但是我收到 invalid escape sequence \* 错误。如何在 Antlr 允许的令牌字符集中指定特殊字符?

*? 在字符 class 中没有特殊含义,不需要转义。所以只需删除反斜杠就可以了。

如果您希望能够匹配多个字符(如示例中所示),您还需要在字符 class 后添加一个 +