我正在使用 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
whereidentifier
解析一个有效的非保留字符串。
现在,我不确定如何表示每一行都是可选的,但如果它存在,仍然会检索它的值