ANTLR如何创建"其余部分"代币

时间:2017-03-09 20:40:46

标签: 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)+;
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')

这是"树"我得到: enter image description here

树看起来很像,除了我无法捕获ThisShouldEndUpAsAToken tekst作为标记。 我知道我现在没有语法解析,但是我无法弄明白该怎么做。

HEEELP :)

1 个答案:

答案 0 :(得分:0)

如何更改parse这样的规则:

parse: (datainput | function | Id)+;

(您的测试输入中添加了;,不应解析。您确定这是您要解析的输入吗?)