2009-03-04 7 views
7

私は小さなテキストエディタプロジェクトに取り組んでおり、いくつかの言語の基本的な構文強調表示を追加したいと考えています)。学習経験として、私は人気のあるまたは人気のないJavaレクサーパーサーの1つを追加したかったのです。私は単純なプロジェクト(ANTLR、DIYなど)用のJava指向のレクサーパーサー

どのようなプロジェクトをお勧めしますか? Antlrはおそらく最もよく知られていますが、かなり複雑で重いようです。

ここに私が知っているオプションがあります。

  1. ANTLR
  2. Ragel(はい、それは入力を処理するためのJavaソースを生成することができます)
  3. (私は、単純なトークンパーサーを作成し、ソースコードをハイライトことができると思います)、それを自分で行います。
+0

ANTLR。間違いない。 –

答えて

8

ANTLRまたはJavaCCは私が知っている2つです。 ANTLRをまずお勧めします。

+0

重すぎるか複雑かと思いますか?Antlrの使用を止めてくれるのはこれだけです。しかし、それは普及しており、非常に安定しているようです。 –

+0

Javaのような言語の解析について話しているのなら、それはちょうど良いことだと思います。利用できるJava文法があるので、ASTを歩いて、あなたが望むものを生成するだけです。 – duffymo

+0

ご存じですか?他のものよりも1つを推薦すれば、両方を使用しなければならないということを意味します。 –

-1

私はあなたがレクサーを必要としないと思います。必要なのは、最初にファイルの拡張子を読み込んで言語を検出し、次に言語キーワードを列挙したxmlファイルからそれらを見つけて強調表示するだけです。 (私はまだ試していない)

+0

いいえ、私は何をやろうとしているのか、少なくとも単純なレクサーが必要になります。さらに、言語に応じて柔軟性があります。 –

1

SableCC

もう一つの興味深いオプションはANTLRを使用していますが、またあなたの言語のためのEclipseのエディタを作成するためのツールが含まれてのXtext、だろう。

0

私はJFlexでこれをやっており、かなり満足していました。しかし、私が強調していた言語は、パーザージェネレータが必要ないほどシンプルなので、あなたの走行距離は変わることがあります。

1

ANTLRは行く方法です。私は手でそれを構築しませんでした。あなたはANTLRのウェブサイト上で見て回る場合にも、それぞれ、

0

JLexCUPはまともなレクサーとパーサジェネレータですなど、grammarsは、Java、XMLのために利用可能であることを見つけることができます。私は現在、両方で私が取り組んでいるプロジェクトのための簡単なスクリプト言語を開発するために使用しています。

1

もう1つのオプションはXtextです。文法のパーサを生成するだけでなく、構文カラーリング、エラーマーカー、コンテンツアシスト、アウトラインビューを備えた完全なエディタも生成します。

3

ANTLRは複雑で重いように見えるかもしれませんが、ANTLRに含まれるすべての機能を使用する必要はありません。それはきれいに階層化されています。私はパーザを開発するのにそれを使用することの大きなファンです。初心者にとっては、優秀なANTLRWorksを使って、作成している文法を視覚化してテストすることができます。トークンをキャプチャし、構文解析ツリーを構築し、プロセスを進めることができるのは本当にうれしいです。

テキストエディタプロジェクトでは、あなたのニーズにきめ細かく対応できるfilter grammarsをチェックします。フィルタ文法では、言語の語彙構造全体を指定する必要はなく、重要な部分(ハイライト、色またはインデックスが必要)だけを指定する必要はなく、言語全体を処理できるようになるまで、さらに追加することができます。

+0

あなたのリンクは本当に役立ちます! – tiboo

2

Googleコードには新しいプロジェクトacacia-lexがあります。自分で書いた、それは単純な(今まで)Javaのレクサーは、javaxアノテーションを使用しているようです。

関連する問題