1ステートメントの区切りである";"(セミコロン)や、単なる区切りの","(カンマ)といった文字まで、
1つのノードとしてParseTreeに追加されます。
以前のエントリーで定義した文法クラスで作成したParseTree。 画面右側のParseTreeに"; (Key symbol)"というノードが確認できます。 |
多くの場合、これらのノードはその後の処理において不要なノードであり、
ParseTreeを走査するうえで邪魔なノードになります。
なので、指定した項目をノードに追加しないようにする方法があったら便利ですよね。
そんな「あったらいいなぁ」な方法が、Ironyにはちゃんと用意されています。
方法はとっても簡単です。
文法クラスのコンストラクタでMarkPunctuation()を呼び出して、
ParseTreeに追加しない項目を登録するだけです。
下の例では、";"(セミコロン)をParseTreeに追加しないようにする命令です。
this.MarkPunctuation(";");この命令をコンストラクタに追加した文法クラスでParseTreeを作成してみると…
画面右側のParseTreeから"; (Key symbol)"というノードが消えているのが分かります。
文法が複雑になればなるほど不要なノードが増えてくるので、MarkPunctuation()をうまく使って、
綺麗なParseTreeが作成されるようにしときましょう。
0 件のコメント:
コメントを投稿