S-JIS[2013-01-17] 変更履歴

EclipseプラグインDMDLエディター(パーサーの利用)

Eclipseプラグイン開発自作DMDLエディターでDmdlParserを使ってみようかと思ったが、無理そう。


概要

キーワードの色付けは出来たが、キーワードを含む単語でも色が付いてしまったりする。
これ以上はちゃんと構文解析しないと難しそう。
しかしパーサーを自作するのは大変なので、Asakusa Framework本体のDMDLのパーサー(DmdlParser)を利用しようと思った。

が、結論から言うと、駄目そう(苦笑)


DmdlParserの使用例

一応、DmdlParser#parse()を呼び出すだけ(判定には使わない)コードを書いてみた。


AsakusaFW 0.4.0だとDmdlParserはasakusa-dmdl-core-0.4.0.jarに入っているので、通常のJavaプロジェクトならこのjarファイルをビルドパスに加えればよい。
Eclipseプラグイン開発プロジェクトでも、コンパイルだけなら同じくビルドパスに加えればいいが、実際にプラグインをテスト実行するにはビルドパスは関係ない。

プラグインが使用するライブラリー(jarファイル)は、以下のようにして追加する。

  1. プラグインプロジェクトにライブラリーを置くディレクトリー(例:lib)を作成する。
  2. そのディレクトリー内にjarファイルを置く。(どこからかコピーしてくる)
  3. マニフェストエディターランタイムクラスパスでjarファイルを追加する。

これで、テスト実行時の環境にjarファイルが追加される他、ビルドパスにも追加される。

AsakusaFWのjarファイルはMavenのリポジトリーにある。(Windows7の場合、C:\Users\ユーザー\.m2\repository
AsakusaFW 0.4.0のDmdlParserの場合は、依存ライブラリーも含めて以下のjarファイルが必要。


DMDLPartitionScannerで、試しにDmdlParserを実行してみる。

import java.io.StringReader;

import jp.hishidama.eclipse_plugin.dmdl_editor.Activator;

import org.eclipse.core.runtime.ILog;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.text.IDocument;

import com.asakusafw.dmdl.model.AstScript;
import com.asakusafw.dmdl.parser.DmdlParser;
import com.asakusafw.dmdl.parser.DmdlSyntaxException;
	@Override
	public void setPartialRange(IDocument document, int offset, int length, String contentType, int partitionOffset) {
		ILog log = Activator.getDefault().getLog();

		{
			String text = document.get();

			DmdlParser parser = new DmdlParser();
			try {
				AstScript ast = parser.parse(new StringReader(text), null);
				log.log(new Status(Status.INFO, Activator.PLUGIN_ID, "AST=" + ast));
			} catch (DmdlSyntaxException e) {
				log.log(new Status(Status.INFO, Activator.PLUGIN_ID, "parse error", e));
			}
		}

		super.setPartialRange(document, offset, length, contentType, partitionOffset);
	}

document.get()で、ファイル全体のテキストが取得できる。
これをDmdlParser#parse()に渡せば解析される。


Eclipseプラグインへ戻る / Eclipseへ戻る / 技術メモへ戻る
メールの送信先:ひしだま