2009-07-27 15 views
1

J'écris un lecteur audio en utilisant java, et je veux un formateur de titre similaire à foobar2000. Exemples:Analyser un langage simple pour le formatage de titre

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

ou

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

premier exemple renvoie une chaîne, et si elle est la même pour les pistes successives dans une liste de lecture, ils sont regroupés, deuxième exemple formate nom de l'album et ajoute un certain nombre de cd si cela existe La référence complète est here

Je n'ai pas besoin de tout mais d'au moins une partie des fonctionnalités.

Est-il difficile d'écrire un analyseur pour un tel langage? Existe-t-il des compilateurs de compilateurs pour Java?

Serait-il plus facile d'utiliser le moteur javascript de java? À quelle vitesse sera-t-il (traiter plusieurs milliers de pistes)?

Répondre

1

Il existe certains outils permettant d'analyser les langues personnalisées. L'un des outils communs est le générateur d'analyseur antlr.

Pour répondre à votre question, si c'est difficile? Oui, ça l'est. L'analyse des instructions dans un arbre de syntaxe n'est que la première étape. Vous avez encore besoin d'écrire l'interpréteur, et cette syntaxe du générateur de titres foobar2000 semble assez complexe!

+0

antlr ressemble à une solution. Je suppose que mon programme n'aura pas de formatage de titre configurable. :) peut-être plus tard. Merci. –

2

Avez-vous envisagé d'utiliser un moteur de modélisation tel que Freemarker ou Velocity? Leurs langages de balisage ne sont pas exactement ceux que vous avez spécifiés, mais ils sont très flexibles. Peut-être trop verbeux si c'est pour les utilisateurs finaux, cependant.

+0

merci mais je suppose que javascript serait moins verbeux. –

+0

Très probable, oui – skaffman

Questions connexes