Potrzebuję szybko zbudować analizator składni dla bardzo uproszczonej wersji języka znaczników html w Javie. W pythonie użyłbym do tego biblioteki pyparsing. Czy jest coś podobnego w Javie? Proszę nie sugerować już bibliotek do parsowania html, moja aplikacja to zadanie szkolne, które zademonstruje chodzenie po drzewie obiektów i serializację tekstu za pomocą wzorca odwiedzającego, więc nie myślę tu w kategoriach realnego świata. Zasadniczo wszystko, czego potrzebuję, to tagi, atrybuty i węzły tekstowe.Czy istnieje biblioteka podobna do pyparsing w Javie?
Odpowiedz
Kolejny dobry parser generator jest ANTLR , to może być to, czego szukasz.
Istnieje wiele opcji wyboru dla obsługi stringów w języku Java. Może bardzo podstawowe są dla Ciebie klasy podstawowe java.util.Scanner
i java.util.StringTokenizer
?
Kolejny dobry wybór to być może biblioteka the org.apache.commons.lang.text
. http://commons.apache.org/lang/apidocs/org/apache/commons/lang/text/package-summary.html
Może być przesada, ale javacc to doskonały generator parserów o wytrzymałości przemysłowej. Używałem tego programu/biblioteki kilka razy, jest to niezawodny i warty nauki, szczególnie jeśli masz zamiar pracować z językami i kompilatorami. Poniżej znajduje się opis programu ze strony internetowej wymienione powyżej:
Java Compiler Compiler [tm] (javacc [tm]) jest najpopularniejszym parser generator do użycia z [tm] aplikacji Java. Generator analizatora składni jest narzędziem, które odczytuje specyfikację gramatyki i konwertuje ją do programu Java, który może rozpoznawać dopasowania do gramatyki. Oprócz samego generatora parsera, javacc zapewnia inne funkcje standardowe związane z pokolenia parsera takich jak budowa drzewa (poprzez narzędzie o nazwie JJTree dołączonego javacc), działania, debugowanie, itp
Lubię JParsec (który właśnie odkryłem dzięki Torsten), ponieważ nie generuje kodu .. . :-) Być może mniej wydajne, ale wystarczające do małych zadań.
Znalazłem podobną bibliotekę, JTopas.
Istnieje dobra lista analizatorów składni (generatorów lub nie) pod numerem Java Source.
JavaCC jest NIESAMOWITY. Sprawdź także książkę Toma Copelanda (Centennial Books) –