У меня есть текстовый файл, который я пытаюсь проанализировать. Файл выглядит так:
A_1: - A_10:
Some text.
----------
Some more text.
__________
B_1: - B_5:
Still more text - it may contain dashes as well.
----------
Even more text. Could be multiple sentences with newlines.
Like this.
__________
и т. Д.
Я пытаюсь разделить разбор / токенизацию между bison
и flex
. Мне удалось проанализировать заголовок (A_1: - A_10:
), используя следующие регулярные выражения в flex
:
[ \t]+ ; // ignore whitespace
[A-Z]_[0-9]+(_[0-9]+)? { ... return ID; }
в сочетании с правилом в моей грамматике для объединения двух идентификаторов:
header: ID ':' '-' ID ':'
Однако следующий фрагмент текста вызывает некоторые проблемы. Я почти уверен, что мне нужно включить условия запуска в лексере (например, чтобы игнорировать только пробелы при разборе заголовка). Я пытался определить токен TEXT и проанализировать все это до ----------
как один токен. Все еще не могу понять, разумно ли это делать.
Другая возможность, о которой я могу подумать, - это иметь в грамматике правило, которое объединяет текстовый сегмент с использованием токенов, таких как WORD, SPACE, DASH, NEWLINE и любой другой возможный символ. Имеет ли это смысл?
Так что теперь я застрял, пытаясь разобрать эти сегменты текста. Я использую правильные инструменты для работы. Я буду признателен за вашу помощь, спасибо.