私はZ表記法(ISO UTF版)のantlr4文法に取り組んできました。この仕様ではlex段階と "2段階の"解析が必要です。 あなたは最初にNAME(またはDECORWORD)トークンの束にそれを入れてから、結果のトークンをスペックのパーサー文法のoperatorTemplateルールに対して解析し、適切なトークンを置き換え、最後に新しい変更されたトークンストリームを解析してAST 。ANTLR4の動的演算子の優先順位と結合性は?
私は上記の作業をしていますが、パーサーのルールの優先順位と結合性を動的に設定する方法を理解できないため、解析ツリーが間違っています。
演算子の構文は次のようになります(数字が優先される):私はルール上の関連性を設定するための任意のAPIを見ていないので、私はセマンティック述語、何かのように試してみました
-generic 5 rightassoc (_ → _)
-function 65 rightassoc (_ ◁ _)
:
expression:
: {ZSupport.isLeftAssociative()}? expression I expression
| <assoc=right> expression i expression
;
または
expression:
: {ZSupport.isLeftAssociative()}? expression i expression
| <assoc=right> {ZSupport.isRightAssociative()}? expression I expression
;
しかし、私は、次のルールセットは、相互に-REを残している」取得筆記体[式] "
これはできますか?
連想性がANTLRでどのように指定されているかについては、TDARの70ページを参照してください。 – GRosenberg