2016-11-21 8 views
0

私はantlr4に移植しようとしているスクリプト言語を継承しました。スクリプト言語の一部は中括弧を使用して変数を識別します。Antlr 4中かっこの使用

セット{myVariable} = "5";

私は、variableExpressionが新しいですが、Identifierとexpressionがjavaからの単なるコピーであるガイドラインとしてビットを使用しています。私は持っています: variableExpression : '{'識別子 '}' ;

parExpression : '('式 ')' ;

私は {foo} = "5"を設定していると、{が欠落しているというエラーが表示されます。

中括弧を()に変更すると機能します。 !働く$はしません。この仕事をするためにある種の方法で脱出する必要がある特殊文字はありますか?いいえ、中括弧(レガシーコードの問題)の使用を変更することはできません。

私は現在、docとwebを手引きしていますが、誰かがすでに答えを知っている場合はお知らせください。

ありがとうございました!

答えて

1

これらの文字の使用に関する制限はありません{}()!$。例として、簡単な文法を見てみましょう:

WS : [ \r\n\t] -> skip; 
NAME : [a-zA-Z0-9]+; 
STRING : '\"' .*? '\"'; 

script 
    : varDeclaration+ EOF; 

varDeclaration 
    : 'set' variable '=' STRING; 

variable 
    : '(' NAME ')' 
    | '{' NAME '}' 
    | '!' NAME '!' 
    | '$' NAME '$' 
    ; 

この文法は以下のコードを一致させることができます:

set {var1} = "value1" 
set (var2) = "value2" 
set !var3! = "value3" 
set $var4$ = "value4" 

結果ASTは、次のようになります。

enter image description here

関連する問題