ANTLR4文法、一致する入力および生成された解析ツリーを持ちます。どのような種類の量子がその定義に適用されたのか、構文解析木のノードについて調べる方法はありますか?ANTLR4の構文解析ツリーは、文法規則で子が定量化されたかどうか問い合わせます。
例:このような文法を有する:
開始: 'A'( 'B' | 'C')* 'D'。
入力:「ABCD」
入力を解析した後、「スタート」ルールのパースツリーは4端子子供を持つことになります。問題は、第二子と第三子(「b」と「c」)について、彼らが任意であることを知る方法があるかどうかです。オプションの部分項が存在するかどうかを決定する
「オプション」の量指定子は、文法の一部です。したがって、 'b'または 'c'が一致すると見なされると、それらはオプションのサブルールからのものです。私はあなたの問題を理解していません – JavaMan
さて、ここには誤解があります。したがって、目的は、一致する入力で、構文的に正しいままにする必要は必ずしもない部分を見つけることです。つまり、量限定子が?、*、おそらく+の部分を見つけることです。 – Reni