2011-11-20 7 views
4

내가 두 규칙이있는 나무 꼭대기 문법이 작동하지 않습니다. 이 규칙을 먼저 쓰면 "5"가 숫자로 인식되고, 그 규칙을 두 번째로 쓰면 nil이 반환됩니다. 마찬가지로, "A"는 그 규칙을 먼저 넣으면 ID로 인식되고, 그 규칙을 초로두면 nil을 반환합니다. 이 두 규칙이 어떤 식 으로든 겹치는 방식을 이해할 수 없습니다. 그것은 나를 미쳤다!간단한 규칙

treetop 또는 정규 표현식에 대해 내가 이해하지 못하는 부분이 있습니까? 귀하의 도움에 미리 감사드립니다.

답변

6

Treetop은 첫 번째 규칙을 "기본 규칙"으로 간주합니다. 하나가 일치 할 때까지 정의한 모든 규칙을 적용하려고하지 않습니다. 주 규칙 만 적용되며 일치하지 않으면 실패합니다.

grammar RCFAE 
    rule expression 
     num/identifier 
    end 

    rule num 
     [0-9]+ <Num> 
    end 

    rule identifier 
     [a-zA-Z] [a-zA-Z]* <ID> 
    end 
end 
+0

이 마법처럼 일했다 :

당신이 원하는 일을하려면이 같은 납입 또는 식별자가 될 수있는 주요 규칙을 추가해야합니다! 정말 고마워. – timichanga