Megaparsec を使用して、Haskell でこれに似たテキストを解析したいと考えています。
# START SKIP
def foo(a,b):
c = 2*a # Foo
return a + b
# END SKIP
ここで、# 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
このエラーの原因と修正方法を知りたいです。