我在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作为标记。 我知道我现在没有语法解析,但是我无法弄明白该怎么做。
HEEELP :)
答案 0 :(得分:0)
如何更改parse
这样的规则:
parse: (datainput | function | Id)+;
(您的测试输入中添加了;
,不应解析。您确定这是您要解析的输入吗?)