問題タブ [interpreter-pattern]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
design-patterns - なぜインタープリターパターンはダメなのですか?
Steve Yegge による Design Patterns のレビューで、彼は Interpreter Pattern を「冗談」と呼んでいます。彼は続けて、コンパイラの認識がどのように変化したかについて話しますが、インタープリター言語はまだどのように使用されているかについても話していますが、これがどのようにパターンに結びついているかはわかりません。
この無知な学生を啓発したい人はいますか?
design-patterns - インタープリターパターンの例
インタープリターパターンのリアルタイムの例をいくつか知りたいです。「正規表現」の例など、いくつかの繰り返し例を見つけることができます。誰かが私を他の例に向けることができますか?
java - Composite 構造で Interpreter パターンを使用する
Composite、Recursive Descendent Parser、およびInterpreterを使用して式評価器を作成するように依頼されました。
文法は次のとおりです。
割り当ては次のとおりです。
Composite、Recursive Builder、および Interpreter に基づくプロジェクトの目標は、条件式を取得し、構文解析を行い、複合ツリーを構築することです。ツリーから始めて、内部変数の値を含む外部コンテキスト (プロパティ ファイルから読み取られる) に基づいて、条件の結果を評価する必要があります。
さて、私が最初に気付いたのは、InterpreterがComposite構造を使用していることです。そのため、evaluate(:Context)メソッドを使用してComposite構造を拡張することをお勧めします。
周りに聞いてみたのですが、これは課題のやり方ではないと言われました。Compositeツリーから始めて、 Interpreterツリーを構築したようです(作業するツリーが既にあるので、これは私にとってはナンセンスです!)。
そのため、 Composite + Recursive Builderを使用してツリーを構築しました。入力を認識し、問題なくツリーを構築します。
しかし問題は、 Interpreterを自分の構造に適用するにはどうすればよいかということです。
これが私のクラス図です(イタリア語ですが、かなり理解できます)
うまくいけば、Interpreterは文法規則ごとにクラスを使用するので、condクラス、次にtermbなどを作成する必要があります。
しかし、それらをコンポジットにリンクするにはどうすればよいでしょうか?
c++ - インタープリター パターンでのエラー処理
アラビア数字 (1+2) またはローマ数字 (I+II) のいずれかを合計したい場合、次のようなインタープリター パターンを使用します。
(ここから派生したコード: https://en.wikibooks.org/wiki/C%2B%2B_Programming/Code/Design_Patterns#Interpreter )
誤ったクエリ (1+II) が適切に処理されるようにするにはどうすればよいですか? 私が考えることができる唯一の解決策は、どういうわけかキャストを使用することでしたが、それはエレガントな解決策のようには思えません。それとも、パターンをそのように使用すべきではありませんか?
もちろん、このために 2 つの別個の関数を記述することも 1 つのオプションですが、このパターンをより複雑な文脈自由文法に使用したいので、1 つの関数で実行できるかどうかに興味があります。
編集:私の問題もここで説明されています。関連するセクションを引用します。
ただし、言語とそれに付随する文法を導入するには、用語のスペルミスや文法要素の配置ミスがないか、かなり広範なエラー チェックが必要です。
だから私の主な質問:その広範なエラーチェックを最適に設計するにはどうすればよいですか?