2009-07-27 11 views
1

私はjavaを使用してオーディオプレーヤーを作成しています。私はfoobar2000に似たタイトルフォーマッターが必要です。例は:タイトルフォーマット用の単純な言語の解析

$if($strcmp(%album artist%,%artist%),%artist%,$if2(%album%,Unknown)) 

又は

[%album%][ '('CD $ifgreater(%totaldiscs%,1,%discnumber%,)')'] 

最初の例では、文字列を返し、それがプレイリストに順次トラックについて同じである場合、それらはグループ化され、第二の例は、アルバム名をフォーマットし、CD番号を追加しますそれが存在する場合。完全な参照はhere

少なくとも機能の一部を必要とするわけではありません。

このような言語のパーサーを作成するのはどれほど難しいですか。 Java用コンパイラコンパイラはありますか?

javaのjavascriptエンジンを使用する方が簡単でしょうか?どのくらいの速さ(数千のトラックを処理する)ですか?

答えて

1

カスタム言語を解析するツールがいくつかあります。一般的なツールの1つは、パーサージェネレータantlrです。

質問に答えるのは難しいですか?はい、そうです。文を構文木に構文解析することは、最初のステップにすぎません。インタプリタを書く必要があり、このfoobar2000タイトルジェネレータの構文はかなり複雑に見えます!

+0

antlrは解決策のようです。私のプログラムは、構成可能なタイトルの書式設定を持たないだろうと思う。 :)おそらく後で。 ありがとうございます。 –

2

FreemarkerVelocityなどのテンプレートエンジンを使用したことがありますか?彼らのマークアップ言語は、あなたが指定したものとまったく同じではありませんが、非常に柔軟です。ただし、エンドユーザー向けの場合は冗長すぎるかもしれません。

+0

ありがとうございますが、私はjavascriptがあまり冗長ではないと思います。 –

+0

おそらく、はい – skaffman

関連する問題