我想使用 Megaparsec 在 Haskell 中解析与此类似的文本。
# START SKIP
def foo(a,b):
c = 2*a # Foo
return a + b
# END SKIP
, where# START SKIP
和# END SKIP
标记要解析的文本块的开始和结束。
与skipBlockComment相比,我希望解析器返回开始和结束标记之间的行。
这是我的解析器。
skip :: Parser String
skip = s >> manyTill anyChar e
where s = string "# START SKIP"
e = string "# END SKIP"
skip
解析器按预期工作。
为了在开始和结束标记内允许可变数量的空白,例如,# START SKIP
我尝试了以下操作:
skip' :: Parser String
skip' = s >> manyTill anyChar e
where s = symbol "#" >> symbol "START" >> symbol "SKIP"
e = symbol "#" >> symbol "END" >> symbol "SKIP"
用于skip'
解析上述文本会出现以下错误。
3:15:
unexpected 'F'
expecting "END", space, or tab
我想了解此错误的原因以及如何修复它。