2007-01-01から1年間の記事一覧
忘れてた。IrenkaのHackはExport Wizard使って配布可能な形式を作ります。再利用性考えて、ExporterのコアはEclipseに癒着しないように作らなきゃですが、とりあえずそれは後で考えればいいや。誰かがやってくれるかもしれないしね。
メモ。Listは文字列とラベルを同時に表示できないらしい。のでTableを使えとのこと。CheckBox欲しいので、TableをSWT.CHECKで作ればいいとか。
やるとしたらこの辺のキーワード? 端折りに端折って2〜4回くらいですかね。
つまり、こういうことかな。とりあえず保存と復帰だけは確認。
設定を保存する。 - 設計と実装の狭間で。いつもありがとうございます。んで、IWorkbenchPropertyPageの↓を上書きすればOKとかページに共通するボタンをハンドルできげ。 public boolean performOk() public boolean performCancel() protected void perform…
UI作るの嫌いなので先にロジックが深い方を調査してました。好き嫌い言っちゃいけないですけどね。Hackとしてのクラスをプロジェクトから探すダイアログがどの程度でできるのか。とりあえずソースコード表現のものを探す部分から。クラスファイルは別の表記…
プロパティページを試しに作ってみる。ビューとかどうやって作るんだろ…
Eclipseプラグインは拡張ポイントにいろいろと差し込んでワークスペース全体とプラグインを結合しているらしい。 拡張ポイントはそれこそ無数にあるので、「同じ機能を持った小さめのプラグイン」がどの拡張ポイントを利用しているか探す。今回の目標は、「…
広大な世界が見えてきたので、ぶれる前にやりたいことを確認。
とりあえずパースペクティブをPDEへ。 Window > Open Perspective > Other... Plug-in Development OK
まだ「What's New (ようこそ)」が表示された状態。いつになったらPDEパースペクティブに行けるやら。Window > Preferences...
Eclipseのプラグイン導入。
とりあえずダウンロード。 http://www.eclipse.org/downloads/ これまでダウンロードしたことのない "Eclipse for RCP/Plug-in Developers" を入れてみる。
JParsecで遊んでみる。 - 設計と実装の狭間で。 にあるJParsecって過去に一度調べたけどどうなんだろ。勝手なイメージ:
プラグインの勉強。 全く作ったことないので、どうせなら一からメモるかね。明日の午前中に最低限のレベルまで達したいところ。
java.io.Fileがパワーアップしてた。 canExecute setReadable setWritable setExecutable getTotalSpace getFreeSpace getUsableSpace むしろ Map getMetaData() みたいなのが欲しい。keyはOSごとに依存でいいから。
めも。VM越しにプログラム構造を使うときにはどう考えてもProxyが必要。ってのは当然として、実はもっと身近な場面でProxyが必要な感じ。
めも。Hackのパッケージングにあたって、ファイルシステムを一度整理した方がよさげと判断。これまでIrenkaのFSはIWorkspaceRootを単一のルートとする構成だったけど、外部参照してるクラスパスコンテナとかそもそもjarファイルの中身表せないじゃねーかとい…
internal使いすぎですよ。JavaModelManagerが隠匿しすぎ。
めも。クエリ内のプレースホルダを制約パーティショニングして、2つ以上のパーティションができたらそれらはそれぞれ独立している。そしたら別々に制約エンジン走らせて後で直積集合作ると最適っぽい。
めも。クエリでプレースホルダ名をtypoされた時のエラー報告について。
WS @init{ enter(WS); } : { getCharPositionInLine() == 0 }? ( ' ' | '\t' )* '*'+ { $channel = HIDDEN; } | ( ' ' | '\t' )+ { $channel = HIDDEN; } | ( 'r' | '\n' )+ { $channel = HIDDEN; } ; CRでクラッシュするので変だなと思って追いかけてみれば…
メモ。ANTLRのパーサはFOLLOW(1)集合の計算をちゃんとやってる模様。文法全体を計算して「FOLLOW(1) ∩ {EOF} = {}」なルールを作ってしまうと、単体で呼び出せなくなることが判明。その際はNoViableAltExceptionがスローされる。
semantic prediction がうまくいかない。はまってたらこんな時間に。semantic predictionは字句解析器とかにフィールド作っておいて、そのフィールドの値によってDFAの遷移情報とかを捻じ曲げるという趣旨のもので、かなり便利げ。ただ、想定ケースがANTLR作…
ルールの末尾に catch[ExceptionType ] { ... } と書くと、ルール特有のエラー処理を書ける 全体的にエラー処理に統一性がない。細かいことやるならすべて書き直し FIRST集合とFOLLOW集合はある程度自前で計算しなきゃならない エラー発生直後のFOLLOW集合は…
@rulecatchでcatch節を書くと、全体に共通するエラー処理を書ける。 @lexer::rulecatch はないみたい 確認したエラー LexerでTokenizeできない先頭文字を見つけると、NoViableAltException 2文字目以降がmatchできないと MismatchedTokenException 'a'..'z'…
次のクエリをベースに、エラーリカバリの検査。Irenkaで使ってるクエリ言語の機能を半分くらいにしてます。 @when hoge.foo.bar = {@link String}くらいなら書ける。
合成属性と継承属性が使える模様。
ここまでのおさらいで、簡単なインタープリタを。機能は次の2つ。主に変数を導入。関数呼び出しとかは面倒だからスキップ。 変数 = 式; print(式); 前のエントリからどのくらいでできるだろ。
ANTLR(3)で作ったASTを分析。ANTLRが便利だということは分かったけど、(3)くらいから黒魔術気分。