我有以下代码(或类似的,无论如何):
fragment COMMA : ',' ;
fragment OP : '(' ;
fragment CP : ')' ;
expression
: ID
| call
;
call
: ID OP expression (COMMA expression)* CP
;
但是当我尝试一个示例表达式时,例如:foo(bar, baz)
,我得到一个错误,更具体地说是token recognition error at: '('
。当我使它们成为正常规则而不是片段时,可以将逗号和括号添加到解析树中。我想使用COMMA和括号来匹配规则,但我不想在解析树中使用它们。无论如何,为什么片段不起作用?