2011-08-03 2 views
1

XCode 용 Parsekit을 사용하고 있지만이 문제는 대부분의 파서 생성기에 잘 적용될 수 있습니다. 내가 gammer와 스크립트를 구문 분석하고 잘 작동합니다. 그러나 나는 다음 단계에서 문제를 겪고있다. grmmer를 고려하십시오 :Parsekit을 사용하여 구문 분석 트리 구성

@start = line +; line = tree;

tree = 'tree'fruits branches;

fruits = 'with' 'fruits'Number; branches = ''branches '가있는 숫자;

그리고 스크립트

이 통과 :

나무 가지 그때 implemenet 방법이 일치하는 경우, 과일, 가지 번 일치합니다 (12)

과일 8이 예상된다.

그러나 트리가 두 번 일치합니다. 이유가 무엇입니까? 이것은 내가 원하는 파스 트리를 만들지 못하게한다.

도움 주셔서 감사합니다.

답변

1

ParseKit 개발자가 여기 있습니다. 나는 당신이 실제로이 같은 질문을 할 수 있다고 생각 :

parsekit given unexpected calls to selectors

당신은 내가 그 질문에 만든 코멘트를 읽는다면, 당신이 대답을 찾을 것이라 생각합니다. 그렇지 않으면 알려주세요.

+0

안녕하세요. Todd, 감사하지만 솔루션에 대한 내 머리를 대지 못했습니다. 내가 작업 한 것을 어셈블리의 목표에 저장 하시겠습니까? 내가 본 방식대로 '나무'와 일치하고 패스 트리에 추가하고 '과일'및 '분기'를 일치시켜 어린이 등으로 추가합니다. 어딘가에 대상 솔루션을 사용 하시겠습니까? Parsekit btw에 좋은 작품 :) – FBryant87

+0

나는 대답은 생각하는 당신이 구축하는 추상 트리/그래프의 루트 객체 ("패스 트리"라고 생각합니까?)를 현재 PKAssembly의 타겟으로 저장하는 것입니다. 현재 PKAssembly는 시작하기 위해 생성 한 것이거나 -didMatchXXX : 메소드에 전달 된 것입니다. 구문 분석을 통해 작성중인 "물건"은 항상 현재 어셈블리의 대상이어야합니다. 당신이 구축하고있는 "물건"은 결코 ivar이나 전역 변수가되어서는 안됩니다. –