2017-03-09 12 views
0

私は本当にこのようにANTLRで定義された単純なDSLを持っています。ANTLR "残りの部分"トークンを作成する方法

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をキャッチすることはできませんよということを除いて、としてexpecteに見えますトークンとして。 私は文法の中でこれを行うべき構文解析を持っていないことを知っていますが、それを行う方法を理解することはできません。

HEEELP :)このようなあなたのparseルール変更についてどのように

答えて

0

:。

parse: (datainput | function | Id)+;

を(あなたのテスト入力を解析してはならない;を振りかけているあなたはそれが入力あなただと確信しています再解析しますか?)

関連する問題