Я создаю синтаксический анализатор, используя Megaparsec, и я не знаю, какой из подходов лучше всего разбирать структуру, такую как
names a b c
surnames d e f g
, где names
и surnames
- ключевые слова, за которыми следует список строк, и каждая из двух строк является необязательной. Это означает, что также
names a b c
и
surnames d e f g
действительны.
Я могу разобрать каждую строку с чем-то вроде
maybeNames <- optional $ do
constant "names"
many identifier
где identifier
анализирует допустимую незарезервированную строку.
Теперь я не уверен, как выразить, что каждая строка является необязательной, но все же получить ее значение, если оно присутствует