ANTLR如何创建一个;“其余部分”;代币

ANTLR如何创建一个;“其余部分”;代币,antlr,Antlr,我在ANTLR中定义了非常简单的DSL,如下所示 grammar Transformer; fragment Digit : [0-9]; Amp:'\''; Left:'('; Right: ')'; Comma: ','; Id: [A-Za-z][a-zA-Z0-9]+; Int: '-'? Digit+; WS: [\n\r\t]+ ->skip; FuncStart: '>'; DataStart: '#'; parse: (datainput | function

我在ANTLR中定义了非常简单的DSL,如下所示

grammar Transformer;
fragment  Digit : [0-9];
Amp:'\'';
Left:'(';
Right: ')';
Comma: ',';
Id: [A-Za-z][a-zA-Z0-9]+;
Int: '-'? Digit+;
WS: [\n\r\t]+ ->skip;

FuncStart: '>';
DataStart: '#';


parse: (datainput | function)+;
qoutedtext: Amp .*? Amp;
datainput: DataStart Id;
function: FuncStart Id Left param (Comma param)* Right;
param: (datainput|function|qoutedtext|Int);
解析此文本时

#Id;>ToUpper(#Name);ThisShouldEndUpAsAToken>FillLeft(#EmpNo,20,'abc')
这是我得到的“树”:

这棵树看起来和预期的一样,只是我没能抓住作为标记的ThisShouldEndUpAsAToken tekst。 我知道我的语法中没有任何语法分析可以做到这一点,但我不知道如何做到这一点


heelp:)

像这样更改
解析规则怎么样:

parse:(数据输入|函数| Id)+

(您的测试输入中散布了不应该解析的
。您确定这就是您正在解析的输入吗?)