В настоящее время я использую регулярные выражения для разбора текстового отчета с целью извлечения различной информации. Хотя этот подход работает, становится все труднее поддерживать регулярное выражение. Мне интересно, может ли Antlr предоставить лучший способ выполнить задачу в долгосрочной перспективе. Кстати, я раньше не использовал Antlr.
AFAIK, Antlr в основном используется для разбора языков, но мой отчет не является языком. С другой стороны, в отчете используется несколько шаблонов, и поэтому я могу использовать регулярные выражения для извлечения информации.
Подробнее о моем текстовом отчете: отчет состоит из нескольких разделов, и я заинтересован только в некоторых разделах, игнорируя остальные. Например, есть раздел дампа потока:
===Start===
(some text I do not care about.)
thread <thread-number> <owning-proc-name> <proc-id>
<resource-owned-by-thread> (optional line)
...
===End===
А затем есть закрытый раздел приложения:
===Start===
(some text I do not care about, followed by the stack trace of the app)
<app-name>
<stack-layer1>
<stack-layer2>
...
===End===
Что я надеюсь получить при разборе отчета, так это объект данных с методами получения для различных частей данных в отчете.
Подходит ли это для Antlr или я должен искать в другом месте? Большое спасибо!