Мне нужно быстро создать синтаксический анализатор для очень упрощенной версии HTML-подобного языка разметки на Java. В python я бы использовал для этого библиотеку pyparsing. Есть ли что-то подобное для Java? Пожалуйста, не предлагайте библиотеки для синтаксического анализа html, мое приложение - это школьное задание, которое продемонстрирует обход дерева объектов и сериализацию в текст с использованием шаблона посетителя, поэтому я здесь не думаю в терминах реального мира. В основном все, что мне здесь нужно, это теги, атрибуты и текстовые узлы.




Существует множество вариантов обработки строк в java.
Может быть, вам пригодятся самые базовые классы java.util.Scanner и java.util.StringTokenizer?
Другой хороший выбор - это, возможно, библиотека the org.apache.commons.lang.text.
http://commons.apache.org/lang/apidocs/org/apache/commons/lang/text/package-summary.html
Может быть, это будет излишним для вас, но javacc - отличный генератор парсеров промышленного уровня. Я использовал эту программу / библиотеку несколько раз, она надежна и заслуживает изучения, особенно если вы собираетесь работать с языками и компиляторами. Вот описание программы с указанного выше веб-сайта:
Java Compiler Compiler [tm] (JavaCC [tm]) is the most popular parser generator for use with Java [tm] applications. A parser generator is a tool that reads a grammar specification and converts it to a Java program that can recognize matches to the grammar. In addition to the parser generator itself, JavaCC provides other standard capabilities related to parser generation such as tree building (via a tool called JJTree included with JavaCC), actions, debugging, etc.
Еще один хороший генератор парсеров - ANTLR, возможно, это то, что вы ищете.
Быстрый поиск генераторов парсеров в Java дает JParsec. Я никогда не использовал его, но он вдохновлен библиотекой Haskell, поэтому по определению он должен быть хорошим :-)
Вроде очень интересно, с отходом от генераторов кода ... Спасибо за ссылку.
Мне нравится JParsec (который я только что открыл благодаря Торстену), потому что он не генерирует код ... :-) Возможно, менее эффективен, но достаточно для небольших задач. Я нашел похожую библиотеку JTopas.
На Исходный код Java есть хороший список парсеров (генераторы или нет).
JavaCC УДИВИТЕЛЬНЫЙ. Также посмотрите книгу Тома Коупленда (Centennial Books)