/ / Parsen einer einfachen Sprache für die Titelformatierung - Java

Eine einfache Sprache für die Titelformatierung parsen - java

Ich schreibe einen Audio-Player mit Java und möchte einen Titelformatierer ähnlich wie foobar2000. Beispiele sind:

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

oder

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

Das erste Beispiel gibt eine Zeichenfolge zurück, und wenn sie für aufeinanderfolgende Titel in einer Wiedergabeliste identisch ist, werden sie gruppiert. Das zweite Beispiel formatiert den Albumnamen und fügt eine CD-Nummer hinzu, falls vorhanden. Vollständige Referenz ist Hier

Ich brauche nicht alles, aber zumindest einen Teil der Funktionalität.

Wie schwierig ist es, einen Parser für eine solche Sprache zu schreiben. Gibt es Compiler-Compiler für Java?

Wäre es einfacher, die Javascript-Engine von Java zu verwenden? Wie schnell wird sie sein (Verarbeitung von mehreren tausend Titeln)?

Antworten:

1 für die Antwort № 1

Es gibt einige Tools zum Parsen benutzerdefinierter Sprachen. Eines der gängigen Tools ist der Parser-Generator antlr.

Um Ihre Frage zu beantworten, ob es schwierig ist? Ja ist es. Das Parsen der Anweisungen in einen Syntaxbaum ist nur der erste Schritt. Sie müssen noch den Interpreter schreiben, und diese Syntax für den Titelgenerator von foobar2000 sieht ziemlich komplex aus!


2 für die Antwort № 2

Haben Sie darüber nachgedacht, eine Templating-Engine wie Freimarker oder Geschwindigkeit? Ihre Auszeichnungssprachen sind nicht genau das, was Sie angegeben haben, aber sie sind sehr flexibel. Könnte aber zu ausführlich sein, wenn es für Endbenutzer ist.