내부에 주석이있는 텍스트를 나타내는 데이터 구조가 있다고 가정합니다. 따라서 문자열attoparsec의 조건부 미리보기
"Text, {-comment-}, and something else"
코멘트 청크 및 E
에 대한
T "Text, " (C "comment" (T ", and something else" E))
파서로 인코딩 할 수 있었던 것처럼
data TWC
= T Text TWC -- text
| C Text TWC -- comment
| E -- end
deriving Show
아주 사소한 :
twcP :: Parser TWC
twcP = eP <|> cP <|> tP
cP :: Parser TWC
cP = do
_ <- string "{-"
c <- manyTill anyChar (string "-}")
rest <- cP <|> tP <|> eP
return (C (pack c) rest)
eP :: Parser TWC
eP = do
endOfInput
return E
구현 이러한 사소한 방법으로 텍스트 청크에 대한 파서를 보내고하는
tP :: Parser TWC
tP = do
t <- many1 anyChar
rest <- cP <|> eP
return (T (pack t) rest)
이 때문에
> parseOnly twcP "text{-comment-}"
Right (T "text{-comment-}" E)
it ∷ Either String TWC
그래서 그것의 욕심이 자연의 텍스트로 코멘트 섹션을 소비하기 위해선, 질문까지 분석의 논리를 표현하는 방법이다 입력 끝 또는 코멘트 섹션까지? 즉, 조건부 미리보기 파서를 구현하는 방법은 무엇입니까? 나는 처음에 약간의 코드를 리팩토링 할
tP = do
t <- many1 anyChar
을 그를 해결하기 전에 :