0
文法を書こうとしていますが、if文に式を書くことができます。antlr4文法非貪欲
私の文は以下のようなものになる場合: [X == 1]の場合、[いくつかのものを行う]
式は任意のPythonの式であると考えられます。
以下のような貪欲でないマッチを使用すると、表現の一部として '['または ']'をどのように指定できますか?リストの理解は私の文法の問題になります。
stmt : ifval
| ....
;
ifval : IF expr body ;
expr : LBRACK expr? RBRACK
| NOT expr
| WORD (LBRACK WORD? RBRACK)? // value or array[idx]
| ....
;
body : WORD
| LBRACE stmt* RBRACE
| ....
;
がexpr
ルールは再帰を通して任意およびネストされたブラケットの発生を処理する:
ifval
: (SPACE)* IF (SPACE|WORD)* SQRLBRACE .*? SQRRBRACE (WORD|SPACE)* <blah> <blah>;
WORD : ('a'..'z' | 'A'..'Z'| '_' | '-')+;
NUM : [0-9];
NEWLINE : '\r'? '\n' | '\r';
SPACE : (' ' | '\t') ;
SQRRBRACE: ']';
SQRLBRACE: '[';
わかりません。あなたは、Pythonをターゲットにしているようですが、その言語の文がそのように角括弧を使用しない場合です。 –
私は英語のような文を書くことができる小さな言語を書いていて、 '英語のような'文をPythonに変換します。式を評価するために、ifステートメントを言語に追加する必要がありました。 ifステートメントでは、私はいかなるpythonの表現もサポートしたいと考えていました。私は理にかなってほしい – kgunjikar