ANTLR如何创建一个;“其余部分”;代币
我在ANTLR中定义了非常简单的DSL,如下所示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
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)+代码>
(您的测试输入中散布了不应该解析的;
。您确定这就是您正在解析的输入吗?)