/ / Przetwarzanie prostego języka do formatowania tytułów - java

Przetwarzanie prostego języka do formatowania tytułu - java

Piszę odtwarzacz audio przy użyciu java i chcę formater tytułu podobny do foobar2000. Przykłady to:

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

lub

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

pierwszy przykład zwraca ciąg znaków, a jeśli jest taki sam dla kolejnych ścieżek na liście odtwarzania, są one pogrupowane, drugi przykład formatuje nazwę albumu i dodaje numer cd, jeśli istnieje. Pełne odniesienie to tutaj

Nie potrzebuję wszystkiego, ale przynajmniej część funkcjonalności.

Jak trudno napisać parser dla takiego języka. Czy są jakieś kompilatory kompilatora dla Java?

Czy łatwiej byłoby używać silnika javascript w Javie? Jak szybko to będzie (przetwarzanie kilku tysięcy ścieżek)?

Odpowiedzi:

1 dla odpowiedzi № 1

Istnieje kilka narzędzi do analizy niestandardowych języków. Jednym z typowych narzędzi jest generator parsera Antlr.

Aby odpowiedzieć na twoje pytanie, jeśli jest to trudne? Tak to jest. Przetwarzanie instrukcji w drzewie składni to tylko pierwszy krok. Nadal musisz napisać interpreter, a ta składnia generatora tytułów foobar2000 wygląda na dość złożoną!


2 dla odpowiedzi nr 2

Czy zastanawiałeś się nad użyciem silnika szablonów, takiego jak Freemarker lub Prędkość? Ich języki znaczników nie są dokładnie takie, jak określono, ale są bardzo elastyczne. Może być jednak zbyt gadatliwy, jeśli dotyczy to użytkowników końcowych.