Javaの字句解析、構文解析ツールに、JavaCC(Java Compiler Compiler)というツールがあります。簡単に言うならば、Unixの代表的なツールである、lex/yacc(flex/bison)のJava版ですね。 このJavaCCのパッケージには、jjtreeという構文木(Syntax Tree)を生成するためのコードを自動生成する便利なツールが添付されています。Syntax Treeは、構文を木構造で構成したものであり、Interpreterパターンを利用したコンポジット構造になっています。 jjtreeの特筆すべき点は、、構文木に対する処理を、Visitorへ委譲するように設計しているところです。Visitorの骸骨でも紹介したように、Visitorは、コンポジット構造をしたオブジェクトツリーに対する処理を分離して管理するのに非常に有用な手段です。 このコーナーでは
今回は、パターンを1つだけ紹介します。「Mediatorパターン」です。GoF本では、それぞれのパターンの「目的]「背景」「効果」などが明示されています。私も、ちょっと真似をしてみましょう。複数のオブジェクトを組み合わせてプログラムの機能を実現するという目的において、オブジェクト間の関連がゴチャゴチャになってしまうという背景(問題)があり、Mediatorパターンの採用によって関連をキレイに整理できるという効果があります。説明だけでは、何のことだかわからないと思いますので、具体例をお見せしましょう。 図1[拡大表示](1)をご覧ください。これは、UML(Unified Modeling Language、ユーエムエル)と呼ばれる表記法で記述されたプログラムの設計図です。UMLでは、四角形の中に下線付きで名前を書いてオブジェクトを表し、関連のあるオブジェクトを矢印で結んで示します。ここで関連
Scala言語の普及のために・・・というより自己満足でテキストエディタを作ってみることにしました。 ScalaではJavaのクラスがそのまま使えるので、Swingが使えます。 しかし、いくつか注意が必要です。 ・booleanをBooleanと書かないとワーニングが出る ・instanceofが使えない 代わりにmatchを使う などに気をつける必要があります。 Scalaでは無名関数(クロージャとかラムダとかいうやつ)が使えるので、イベント処理などに役に立ちます。 無名関数を使うと、少しコードが短くなる気がします。 というわけで書いてみたエディタですが、まだファイル保存すらできません。テキスト入力欄ができただけです。 codelogyさんの記事や、 ひしだまさんのホームページのJTextPaneのページを参考にして書いてみました。 一応コードを書いておきます。 import javax.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く