Antlr4 安特利普雷泽。如何写出语法中的特例?

Antlr4 安特利普雷泽。如何写出语法中的特例?,antlr4,Antlr4,我想分析以下示例: class A { private int main(i<a) { } } 如果我这样修改语法: params : '(' ')' | '(' param_list ')'; 将显示预期的错误 你的语法模棱两可(而且不完整,因为这里没有给出表达规则)param_list有一个空alt,与'('')部分相同。另外,在参数列表中不需要左递归。相反,请尝试以下方法: params: '(' param_list? ')'; param_list: type

我想分析以下示例:

class A {
    private int main(i<a) {
    }
}
如果我这样修改语法:

params : '(' ')' | '(' param_list ')';

将显示预期的错误

你的语法模棱两可(而且不完整,因为这里没有给出表达规则)
param_list
有一个空alt,与
'('')
部分相同。另外,在
参数列表中不需要左递归。相反,请尝试以下方法:

params: '(' param_list? ')';
param_list: type ID (',' type ID)*;
params: '(' param_list? ')';
param_list: type ID (',' type ID)*;