我想分析輸入的字符串這樣引號的字符串:"this is \"test \" message \"sample\" text"
解析器使用秒差距
現在,我寫了一個解析器解析各個文本不帶任何引號:
parseString :: Parser String
parseString = do
char '"'
x <- (many $ noneOf "\"")
char '"'
return x
這解析簡單的字符串這樣:"test message"
然後我寫了一個解析器引號的字符串:
quotedString :: Parser String
quotedString = do
initial <- string "\\\""
x <- many $ noneOf "\\\""
end <- string "\\\""
return $ initial ++ x ++ end
這個字符串的解析器是這樣的:\"test message\"
有沒有一種方法可以將兩個解析器組合起來,以便獲得所需的目標?解決這個問題的方法究竟是什麼?
爲什麼你想剝去最初和最後的引號,但保留逃避反斜槓完好?我想你會想把輸入''\「ab \\\」c \「」'解析爲'「\」ab \\\「c \」「'(嚴格解析驗證)或者' 「ab \」c「',但似乎你想''ab \\\」c「',這似乎不是很明顯有用。 – dfeuer
@dfeuer沒有特別的理由,只是玩弄Parsec。 – Sibi