/ / Analyser un langage simple pour le formatage du titre - java

Analyser un langage simple pour le formatage du titre - java

Je suis en train d’écrire un lecteur audio avec java et je veux un formateur de titre similaire à foobar2000. Voici des exemples:

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

ou

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

le premier exemple renvoie une chaîne, et si elle est identique pour les pistes séquentielles d'une liste de lecture, elles sont regroupées, le deuxième exemple formate le nom de l'album et ajoute un numéro de CD s'il existe. La référence complète est ici

Je n'ai pas besoin de tout, mais au moins de certaines fonctionnalités.

Comme il est difficile d'écrire un analyseur syntaxique pour un tel langage. Existe-t-il des compilateurs de compilateur pour Java?

Serait-il plus facile d’utiliser le moteur javascript de java? Quelle sera sa vitesse (traitement de plusieurs milliers de pistes)?

Réponses:

1 pour la réponse № 1

Il existe des outils pour analyser les langues personnalisées. Un des outils communs est le générateur d'analyseur syntaxique 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 devez toujours écrire l'interprète, et cette syntaxe du générateur de titre foobar2000 semble assez complexe!


2 pour la réponse № 2

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