(nodeHead: nodeBody)
구문을 사용하는 DSL 용 파서를 작성하고 있습니다. 문제는 nodeBody
에 괄호가 포함될 수 있다는 것입니다. 는 JParsec의 between
운영자는 좋은 해결책이 있었어야했는데, 아직 다음 코드는 실패JParsec를 사용하여 괄호 안에 텍스트 구문 분석
public void testSample() {
Parser<Pair<String,String>> sut = Parsers.tuple(Scanners.IDENTIFIER.followedBy(Scanners.among(":")),
Scanners.ANY_CHAR.many().source()
).between(Scanners.among("("), Scanners.among(")"));
sut.parse("(hello:world)");
}
그것은 내가 ANY_CHAR
에 IDENTIFIER
을 변경할 때 실패하지 않습니다, 그래서 여기에 문제가 가정 그 두 번째 파서 튜플은 너무 탐욕 스럽다. 또는 JParsec이 본문을 적용하기 전에 파서간에 적용 할 수 있습니까?
모든 아이디어가 매우 유용합니다. 구문 규칙은 마지막 문자는 항상 ")"이 될 것입니다 경우
질문에 대답하지 말고 대답으로 남겨주세요. – rorypicko
규칙은 마지막 문자가 ")"이어야한다는 것입니다. 감사. –
코드 스 니펫으로 답변을 업데이트했습니다. 나는 그것을 검증하지 않았지만 그것은 생각이다. –