私の parsec パーサーで、あなたの助けが必要なばかげた状況が発生しました。
| で区切られたストロング/文字のシーケンスを解析する必要があります。文字。したがって、a|b|'c'|'abcd' となる可能性があります。
に変換する必要があります
[a,b,c,abcd]
' ' 文字列内を除き、スペースは使用できません。さて、私の素朴な試みで、a'a|'bb' のような文字列を [a'a,bb] に解析できるが、aa|'b'b' を [aa,b'b] に解析できない状況になりました。 .
singleQuotedChar :: Parser Char
singleQuotedChar = noneOf "'" <|> try (string "''" >> return '\'')
simpleLabel = do
whiteSpace haskelldef
lab <- many1 (noneOf "|")
return $ lab
quotedLabel = do
whiteSpace haskelldef
char '\''
lab <- many singleQuotedChar
char '\''
return $ lab
では、パーサーに | が続く場合に 'a stoping' を考慮するように指示するにはどうすればよいでしょうか。または空白?(または、これにいくつかの ' char カウントを入れます)。入力はユーザーが生成したものなので、\'-ing 文字に頼ることはできません。