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