在ANTLR4动作中使用问号时,需要在问号前加上括号来消除语法歧义,避免出现错误。以下是一个示例:
错误的写法:
expr: a=INT? {System.out.println("?");};
正确的写法:
expr: a=INT? ({System.out.println("?");})?;
通过在问号前加上括号,ANTLR4会正确地将其解释为“a可能匹配一个整数,然后执行System.out.println('?')”。
上一篇:AntLR4定义解析规则时要求字符不包含空字符串。
下一篇:Antlr4对空字符串匹配的异常