Megaparsecを使用して、これと同様のテキストをHaskellで解析したいとします。 # START SKIP
と# END SKIP
を解析するテキストのブロックの開始と終了をマーク開始と終了の記号を使用してMegaparsecでブロックコメントを解析する
# START SKIP
def foo(a,b):
c = 2*a # Foo
return a + b
# END SKIP
、。
skipBlockCommentと比較すると、パーサーは開始マーカーと終了マーカーの間の行を返すようにします。
これは私のパーサーです。
skip :: Parser String
skip = s >> manyTill anyChar e
where s = string "# START SKIP"
e = string "# END SKIP"
skip
パーサーは意図したとおりに動作します。
# START SKIP
のために私は、次の試してみた、開始と終了のマーカー内の空白の可変量を可能にするには:上記のテキストを解析する
skip'
を使用し
skip' :: Parser String
skip' = s >> manyTill anyChar e
where s = symbol "#" >> symbol "START" >> symbol "SKIP"
e = symbol "#" >> symbol "END" >> symbol "SKIP"
は、次のエラーが発生します。
3:15:
unexpected 'F'
expecting "END", space, or tab
私はこのエラーの原因とその修正方法を理解したいと思います。
問題は、パーサーに共通の接頭辞が付いていることです。 ['try'](https://hackage.haskell.org/package/megaparsec-5.1.1/docs/Text-Megaparsec.html#v:try)を見てください。 – Alec