Подсказки для записи синтаксического анализатора файла в Java? [закрытый]

6
задан defectivehalt 18 July 2013 в 19:49
поделиться

12 ответов

Полезно, если вы пытаетесь отобразить индикатор выполнения во время страницы, на обработку которой требуется некоторое время. Поскольку PHP-код не является многопоточным, это невозможно сделать, если обработка приостановлена, выполняя функцию 1.

-121--1420498-

Предоставьте им клиентский «ключ» и попросите программное обеспечение задать небольшой сервлет на вашем веб-сервере, является ли продукт действительным в настоящее время для клиента с этим ключом.

-121--4716471-

Этого и копания в википедии для связанных статей , вероятно, будет достаточно.

2
ответ дан 8 December 2019 в 04:29
поделиться

Я бы считал, что выполнение этой тяжной задачи является частью миграции для использования Friendly_id. Конечно, вы создали таблицы, но вы еще не закончены! Вы все еще должны выполнять некоторые обновления данных, прежде чем вы по-настоящему мигрируете.

Позвоните за задачу грабли из вашей миграции. Это обновит существующие данные, а новые записи будут обрабатываться вашей логикой приложения в будущем.

-121--4435260-

Поскольку входной отформатирован аналогично HTML , то, вероятно, что ваши данные лучше всего представлены с использованием древовидной структуры, а также, скорее всего, что это XML или аналогично XML.

Если это так, я предлагаю максимальный способ анализа вашего файла - использовать анализатор XML.

Вот некоторые ресурсы, которые вы можете найти полезным:

HTH

6
ответ дан 8 December 2019 в 04:29
поделиться

Есть причина, по которой все предполагают, что вы говорите о XML: изобретение запатентованного текстового формата требуется очень прочно Обоснование перед лицом зрелости и простота наличия анализатора XML.

И ваш вопрос указывает на то, что у вас очень мало предварительных знаний о парсерах (в противном случае вы будете писать ANTLR или Javacc Грамматика вместо того, чтобы задавать этот вопрос) - который является еще одним сильный аргумент против качения вашего собственного, кроме как опыт обучения.

7
ответ дан 8 December 2019 в 04:29
поделиться

Если документ является действительным XML, то любой другой ответ будет работать. Если это не так, вы должны быть в Lex .

2
ответ дан 8 December 2019 в 04:29
поделиться

Я думаю, что Java.util.scanner поможет вам. Посмотрите на http://java.sun.com/javase/6/docs/api/java/util/scanner.html

2
ответ дан 8 December 2019 в 04:29
поделиться

В зависимости от того, насколько сложна ваша "схема", регулярное выражение может быть тем, чего вы хотите. Если есть много вложенных выражений, то, возможно, проще всего конвертировать их в XML или JSON и использовать предварительно собранный парсер.

1
ответ дан 8 December 2019 в 04:29
поделиться

Люди правы в том, что стандартные форматы являются наилучшей практикой, но давайте отложим это.

Предполагая, что приведенный вами пример репрезентативен, задача довольно тривиальна.

Отображается строка с начальным маркером, демаркированным пробелом двоеточия, а затем список разделенных запятыми значений. Разделите сначала двоеточие, а затем используйте split () на детали справа. Обработка кавычек тоже тривиальна.

1
ответ дан 8 December 2019 в 04:29
поделиться

Я настоятельно рекомендую не изобретать колесо и использовать существующее решение, такое как Flatworm , FixedFormat4j или jffp , которые могут всеми. Разделенные значения файлов (лично, я рекомендую Flatworm).

1
ответ дан 8 December 2019 в 04:29
поделиться

Вы можете использовать Neko HTML Parser в некоторой степени. Это зависит от того, как он обрабатывает нестандартный HTML.

0
ответ дан 8 December 2019 в 04:29
поделиться

Если XML действителен, я лично предпочитаю использовать http://www.xom.nu просто потому, что он имеет хорошую модель DOM. Однако, как уже отмечалось, в J2SE есть парсеры.

0
ответ дан 8 December 2019 в 04:29
поделиться

вы должны смотреть на ANTLR, даже если вы хотите написать парсер самостоятельно, ANTLR является отличной альтернативой. Или, по крайней мере, посмотрите на YAML

2
ответ дан 8 December 2019 в 04:29
поделиться

После просмотра вашего примера ввода, я не вижу никакого сходства с HTML или XML:

-barfoob: boobs, foob, "foo bar"

Если это то, что вы хотите разобрать, у меня есть альтернативное предложение, использовать парсер свойств Java (поставляется со стандартным Java), а затем разобрать оставшуюся часть каждой строки, используя ваш собственный пользовательский код. Вам нужно будет несколько рефакторить ваш формат, чтобы это работало, так что все зависит от вас. Свойства

barfoob=boobs, foob, "foo bar"

Java смогут вернуть вам barfoob в качестве имени свойства, а boobs, foob, "foo bar" в качестве значения свойства. Именно здесь вы можете использовать свой пользовательский код для разделения значения свойства на boobs, foob и foo bar.

1
ответ дан 8 December 2019 в 04:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: