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)*;