且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

ANTLR4语法中第一个解析器规则上带有return声明的问题

更新时间:2023-10-22 10:46:40

您需要在语法中将解析器规则(以小写字母开头)放在词法分析器规则(以大写字母开头)之前.遇到词法分析器规则后,[会触发LEXER_CHAR_SET而不是ARG_ACTION,因此编译器看到的令牌流看起来像是传递了一组应该返回值的字符.

You need to place parser rules (start with a lowercase letter) before lexer rules (start with an uppercase letter) in your grammar. After encountering a lexer rule, the [ triggers a LEXER_CHAR_SET instead of ARG_ACTION, so the token stream seen by the compiler looks like you're passing a set of characters where the return value should be.