2017-01-15 8 views
2

대체 파서를 사용할 때 어떤 파서가 입력과 일치하는지 얻기위한 옵션이 있습니까?FParsec 대안 파서가 입력을 파싱하는 중

내 입력 문자열 firstPart 항상 번호 여기

{firstPart_number} {secondPart_operator_symbol} {thirdPart} 

포맷

아래와 같을 수 있고, 두 번째 부분은 운영자를 파싱 대안 파서 및 thirdPart는 (번호 문자열리스트)도 대체한다. 내 차별 조합 형식의 인스턴스를 만들 수 파서에 따라

내 차별 노동 조합부터

1 + 2 
5 * 3 
1 in {2,45,6} 

는 다른 유형의 수 있습니다 입력, 내가 알고 싶은 샘플 일치 파서 입력 그래서? 내 첫 번째 부분은 동일 걸쳐 파서하지만 두 번째와 세 번째 파서이다 FParsec,이 상황을 처리하는 방법

다른 및 사용하여 해당 인스턴스화 유형에 기반 |>>

+0

전체 코드가 아닌 관련 간단한 코드 조각을 보여줄 수 있습니까? 그러면 어떻게 연결되는지 볼 수 있습니다. 대체 파서를 올리시겠습니까? 자신이 제공 한 설명만으로 코드를 그리는 것은 어렵습니다. – rmunn

+0

내가 가지고있는 한가지 생각은 각 대안 파서가'| >>'연산자로 싸여있을 수 있다는 것입니다. 'pOperator = (pstr "*"| >> OpTimes) <|> (pstr "+"| >> OpPlus) <|> (pstr "in"| >> OpIn)'과 같은 것입니다. 그러나 나는 더 좋은 제안을 줄 수 있도록 당신의 코드를보고 싶습니다. – rmunn

답변

0

내 현재의 문제는 대안 시도 파서를 사용하여 해결되었다. 시도가 일치하지 않으면 다시 시도하고 다음 대체 파서가 입력을 다시 구문 분석하여 일치합니다