visitor-pattern

    5

    1答えて

    私は、専門業務と訪問者パターンを持つ複数の葉ノードクラスを持つ複合パターンを使用しています。この例では、分かりやすくするためにすべての明白なacceptメソッドを除外しました。 interface Command { public int getCost(); } class SimpleCommand implements Command { private int c

    5

    2答えて

    私はこれを見つけましたhttps://gist.github.com/2945472しかし、私はC++ 11に依存しない実装が必要です。私はブーストだけを使用するようにそれを変換して私の手を試しましたが、私はいくつかの問題を抱えています。マップに挿入するとき、私はbad_any_castを取得しています #include <boost/any.hpp> #include <boost/funct

    2

    1答えて

    ExpressionVisitorを使用して、式ツリーを解析して、指定されたパラメータが含まれているかどうかを調べます。一度パラメータを見つけたら、トラバーサルを続行する必要はありません。 は訪問者パターンの一般的な訪問者パターン、具体的にはExpressionVisitorの停止を回避する方法はありますか。 これはこれまで私が持っていたもので、期待どおりに動作しています。しかし、ブーリアンフラグ

    10

    1答えて

    私はASTをナビゲートするためにビジターパターンを書く必要があります。誰かが私にそれを書く方法をもっと教えてもらえますか? 私が理解する限り、ASTの各ノードには何とか呼び出されるvisit()メソッド(?)があります(どこから?)。それで私の理解は終わりです。すべてを簡素化するために 、私はノードのルートは、式は、番号が、OPとツリーはこのようになります持っているとします Root

    3

    1答えて

    自分のプログラミング言語でコードを生成するために、私は訪問者パターンを使用しています。代入文を処理するためのより良い方法を探したいと思います。 私の仮想マシンをベースに登録し、各式ノードは、ちょうど私がバイナリ式ノードを訪問するときに、私は次のようなコードを実行するグ​​ローバルスタックにレジスタ番号をPUSH訪れている:私はすることができます。このコードで static void visit_b

    2

    1答えて

    私は数式を表すツリーを持っています。私は式ツリーの値を計算するために訪問者パターンを実装すると考えましたが、C++ではメソッドが同一であっても、型はそうではないので、訪問者を受け入れるメソッドがすべてのサブクラスになければならないので、自分自身を繰り返したくさんあります。 class Node { virtual void Acccept(Visitor *visitor) = 0;

    1

    1答えて

    私は成熟前の最適化が悪いことを認識しています。しかし私のアプリでは、多くのアナリティクスやクラッシュ報告の第三者ツールがあります。彼らはコード全体に広がっています。 Answers、Crashlytics、newRelic、Kochava、adobe analyticsなどを使用しています。ビジターパターンを使用してこれらの訪問者のそれぞれを訪問者にし、これらの可視を使用してすべてのJavaファイ

    0

    2答えて

    私は基本的な設計上の問題を指摘することを単純化しています。 は、私はこのような階層構造を持っている:BRA、BRB、BRC、RRA、RRBとRRCが訪問する必要があるクラスがある R <-- interface / \ / \ / \ BR RR <-- abstract classes /| \ /| \

    0

    1答えて

    複雑な文法のためにC#でAST(抽象構文木)を実装していますが、この質問を簡単にするために、私は非常に単純な文法を使用します。 はこの文法を考えてみましょう: rules Expr ::= Term "+" Term | Term ; rules Term ::= Ident | Integer ; 私はbnfcを使用してパーサ/レクサを生成し、私はコードの一部を解