2012-02-08 2 views
1

FParsec을 사용하여 문자열 리터럴을 구문 분석하고 싶습니다.FParsec을 사용하여 문자열 리터럴을 파싱 하시겠습니까?

let string = between (pstring "'") (pstring "'") (manySatisfy isLetter) 

하지만이 후 중지 :

'Please, switch off your mobile phone' 

내가 현재하고있는 중이하면 다음과 같다 : - (작은 따옴표 내 경우) "문자열 리터럴"에 의해 나는 개폐 따옴표 사이에 뭔가 의미 첫 번째 문자가 소모되었습니다. 욕심을 갖도록 할 방법이 있습니까?

+1

FParsec 튜토리얼은 http://www.quanttec.com/fparsec/tutorial.html#parsing-string-data에서 문자열 리터럴을 구문 분석하는 방법을 설명합니다. –

답변

7

이미 욕심이 많습니다. manySatisfy isLetter은 입력 스트림에서 문자 시퀀스를 파싱합니다.

문제는 문자가 아니기 때문에 파서가 , 또는 공백으로 실패하는 것입니다. 그것은 사용하여 고정 될 수있다 :

더 명시 적으로
manyChars (noneOf "'") 

또는 것은 사용 :

manySatisfy ((<>) '\'') 

대신.

+0

'manySatisfy'와 같은 문자열 구문 분석기를 사용하는 것이 'manyChars'와'satisf'의 조합입니다. – pad

+0

네가 맞아, 나는'manySatisfy'가'string'을 반환한다는 것을 잊었다. – Guvante