다음과 같은 간단한 파서를 사용합니다 (실제로는 좀 더 복잡하지만이 간단한 예는 문제를 똑같이 보여줍니다). name, String과 일치하는 첫 번째 파서를 가지고 있는데, 어떤 이유에서인지 Any으로 변환됩니다. 또한 두 번째 2 목록은 선택 사항이므로 존재할 수도 있고 그렇지 않을 수도 있습니다. 그러나 내 도메인 개체에서 각각의 집합은 비어있는 경우
저는 스칼라의 네이티브 파서 연결자 라이브러리로 작업 중이며, 필자의 입력 내용 중 일부는 파싱하고 싶습니다. 특히, 나는 관심있는 입력 사이의 모든 임의의 텍스트를 버리고 싶습니다. 예를 들어,이 입력과 : object MyParser extends RegexParsers {
val beginToken: Parser[String] = "begin
나는 def과 val과 lazy val 사이의 차이점을 알고 있지만, 파서 결합 자에 대해서는 그 영향에 대해 잘 모르겠습니다. 내가 본 모든 예제는 같은 코드가 들어 내가했던 몇 가지 실험에서 def statement: Parser[Statement] =
ifStatement |
whileStatement |
expression
는 코드를 볼 수 있습니다 오류 : canot compute minmal length of a parser due to occurrence of a moadic bind, use addLength to override
나는 위의 구문 분석기가 같은 방식으로 동작해야한다고 생각했습니다. 이 오류가 발생할 수있는 이유는 무엇입니까? 편집 위의 예는 (문제를
저는 스칼라의 패턴 결합자를 사용하여 로마자 도구를 작성하고 있습니다. 파서 중 하나에서 문자열 값의 일부 집합을 비교하여 해당 값으로 변환 할 수 있기를 원합니다. 즉 Map [String, String]을 사용하여 이러한 값을 변환하지만 별도의 정규 표현식을 사용하지 않고지도의 키와 일치하는 방법을 찾지 못했습니다. object Transliterati
이 질문은 관련 항목 Parsec 및 uu-parsinglib과 관련이 있습니다. 파서 결합자를 작성할 때 컴파일러의 문자 스트림을 처리합니다. 어떻게 든 문자를 구문 분석하고 다시 입력 스트림에 다른 문자를 반환 할 수 있습니까? 는 I 입력을 분석하는 예에 대해 원하는 "테스트 + 5", 구문 분석 t, e, s, t 상기 문자 스트림에 v 문자 뒤로
필자가 찾은 파서 결합 자의 자료는 구성을 통해 복잡한 파서를 구성하는 것을 다루지 만, 라이브러리의 작성된 파서를 조정하여 파서를 정의하는 좋은 방법이 있는지 알고 싶습니다. 원래 라이브러리의 논리를 완전히 복제합니다. 예를 들어, 여기 Real world Haskell import Text.ParserCombinators.Parsec
csvFile
스칼라 파서 연결자 라이브러리를 사용하면 문자가 아닌 줄로 구문 분석 할 수 있습니까? 나머지 줄 - 난 그렇게 in.first 해당 문자열 텍스트의 라인과 in.rest을 것 (in: Reader[String]) => ParserResult[T] 서명을 가지고 내 사용자 지정 파서를하고 싶습니다. 은 내가 파서를 서브 클래스와 문자열로 Elem 모델 유형
처음으로 스칼라 파서 연결자를 사용했습니다. '유형'목록이 있고 다른 유형을 확장 할 수있는이 상황이 있습니다. 그렇다면 유형과 해당 상위 유형 사이에 맵을 작성하기 만하면됩니다. 그렇지 않은 경우 유형을 '객체'로 매핑합니다. (유형 그냥 문자열 이름입니다) 그들은 다음과 같이 기록됩니다 type1 type2 type3 - parentType
또는 t