如何编写规则以在ANTLR中定义方法

如何编写规则以在ANTLR中定义方法,antlr,antlr4,Antlr,Antlr4,我正在用ANTLR创建一个DSL,我想定义以下语法 // study without parameters study() // study with a single parameter study(x = 1) // study with several parameters study(x = 1, x = 2) 在我的语法中,它允许以下输入:study(x=1x=2) 您的语法允许学习(x=1x=2)因为assign*匹配x=1x=2。如果您不想允许这样的输入,您应该删除assign

我正在用ANTLR创建一个DSL,我想定义以下语法

// study without parameters
study()
// study  with a single parameter
study(x = 1)
// study with several parameters
study(x = 1, x = 2)
在我的语法中,它允许以下输入:
study(x=1x=2)


您的语法允许
学习(x=1x=2)
因为
assign*
匹配
x=1x=2
。如果您不想允许这样的输入,您应该删除
assign*
选项。要允许空参数列表,只需将括号之间的所有内容设置为可选:

study: 'study' '(' (assign (',' assign)*)? ')' NEWLINE;

你能更具体地说明问题是什么吗?
study: 'study' '(' (assign (',' assign)*)? ')' NEWLINE;