2007-01-01から1年間の記事一覧

プラグイン(12) Export Wizard

忘れてた。IrenkaのHackはExport Wizard使って配布可能な形式を作ります。再利用性考えて、ExporterのコアはEclipseに癒着しないように作らなきゃですが、とりあえずそれは後で考えればいいや。誰かがやってくれるかもしれないしね。

プラグイン(11) TableとList

メモ。Listは文字列とラベルを同時に表示できないらしい。のでTableを使えとのこと。CheckBox欲しいので、TableをSWT.CHECKで作ればいいとか。

勉強会?

やるとしたらこの辺のキーワード? 端折りに端折って2〜4回くらいですかね。

プラグイン(10) 保存してみる

つまり、こういうことかな。とりあえず保存と復帰だけは確認。

プラグイン(9) リソースプロパティの保存

設定を保存する。 - 設計と実装の狭間で。いつもありがとうございます。んで、IWorkbenchPropertyPageの↓を上書きすればOKとかページに共通するボタンをハンドルできげ。 public boolean performOk() public boolean performCancel() protected void perform…

プラグイン(8) Hack検索ウィンドウのfeasibility

UI作るの嫌いなので先にロジックが深い方を調査してました。好き嫌い言っちゃいけないですけどね。Hackとしてのクラスをプロジェクトから探すダイアログがどの程度でできるのか。とりあえずソースコード表現のものを探す部分から。クラスファイルは別の表記…

プラグイン(7) プロパティページの骨格

プロパティページを試しに作ってみる。ビューとかどうやって作るんだろ…

プラグイン(6) 拡張ポイントを探す

Eclipseプラグインは拡張ポイントにいろいろと差し込んでワークスペース全体とプラグインを結合しているらしい。 拡張ポイントはそれこそ無数にあるので、「同じ機能を持った小さめのプラグイン」がどの拡張ポイントを利用しているか探す。今回の目標は、「…

プラグイン(5) やりたいことの確認

広大な世界が見えてきたので、ぶれる前にやりたいことを確認。

プラグイン(4) Hello, world!

とりあえずパースペクティブをPDEへ。 Window > Open Perspective > Other... Plug-in Development OK

プラグイン(3) 初期設定

まだ「What's New (ようこそ)」が表示された状態。いつになったらPDEパースペクティブに行けるやら。Window > Preferences...

プラグイン(2) プラグインの導入

Eclipseのプラグイン導入。

プラグイン(1) インストール

とりあえずダウンロード。 http://www.eclipse.org/downloads/ これまでダウンロードしたことのない "Eclipse for RCP/Plug-in Developers" を入れてみる。

JParsec

JParsecで遊んでみる。 - 設計と実装の狭間で。 にあるJParsecって過去に一度調べたけどどうなんだろ。勝手なイメージ:

プラグイン(0)

プラグインの勉強。 全く作ったことないので、どうせなら一からメモるかね。明日の午前中に最低限のレベルまで達したいところ。

java.io.File

java.io.Fileがパワーアップしてた。 canExecute setReadable setWritable setExecutable getTotalSpace getFreeSpace getUsableSpace むしろ Map getMetaData() みたいなのが欲しい。keyはOSごとに依存でいいから。

DOM Element Proxy

めも。VM越しにプログラム構造を使うときにはどう考えてもProxyが必要。ってのは当然として、実はもっと身近な場面でProxyが必要な感じ。

Irenka File System

めも。Hackのパッケージングにあたって、ファイルシステムを一度整理した方がよさげと判断。これまでIrenkaのFSはIWorkspaceRootを単一のルートとする構成だったけど、外部参照してるクラスパスコンテナとかそもそもjarファイルの中身表せないじゃねーかとい…

JavaCore/Eclipse

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がスローされる。

はまった件(2)

semantic prediction がうまくいかない。はまってたらこんな時間に。semantic predictionは字句解析器とかにフィールド作っておいて、そのフィールドの値によってDFAの遷移情報とかを捻じ曲げるという趣旨のもので、かなり便利げ。ただ、想定ケースがANTLR作…

ANTLR(8) - Parserのエラー処理

ルールの末尾に catch[ExceptionType ] { ... } と書くと、ルール特有のエラー処理を書ける 全体的にエラー処理に統一性がない。細かいことやるならすべて書き直し FIRST集合とFOLLOW集合はある程度自前で計算しなきゃならない エラー発生直後のFOLLOW集合は…

ANTLR(7) - Lexerのエラー処理

@rulecatchでcatch節を書くと、全体に共通するエラー処理を書ける。 @lexer::rulecatch はないみたい 確認したエラー LexerでTokenizeできない先頭文字を見つけると、NoViableAltException 2文字目以降がmatchできないと MismatchedTokenException 'a'..'z'…

ANTLR(7) - Mini Irenka Query

次のクエリをベースに、エラーリカバリの検査。Irenkaで使ってるクエリ言語の機能を半分くらいにしてます。 @when hoge.foo.bar = {@link String}くらいなら書ける。

ANTLR(6) - 属性文法

合成属性と継承属性が使える模様。

ANTLR(5) - インタープリタ

ここまでのおさらいで、簡単なインタープリタを。機能は次の2つ。主に変数を導入。関数呼び出しとかは面倒だからスキップ。 変数 = 式; print(式); 前のエントリからどのくらいでできるだろ。

ANTLR(4) - ASTの分析

ANTLR(3)で作ったASTを分析。ANTLRが便利だということは分かったけど、(3)くらいから黒魔術気分。