사용자가 속성이있는 일부 객체를 정의 할 수있는 간단한 문법이 있습니다. 예를 들어 :ANTLR - 값의 의미/의미를 확인하십시오.
내가 그 간단한 과제를 확인하는 ANTLR에 대한 문법을 만든carpark : my carpark
lots: 100
car: BMW
color: red
wheels: 4
motocycle
age: 4
color: red
carpark : my second carpark
car:...
...
car:...
...
...
.
이제 과제의 순서 나 의미를 확인하는 데 문제가 있습니다. 는 어떻게 '내 두 번째 주차장은'이미 존재하는 경우 확인해야 내가 기존 주차장
carpark: my third carpark
extends: my second carpark
에서 상속 할 수 있습니다 가정 수 있습니다?
또한 내가
car: BMW
color: red
age: 4
//should be allowed as
car: BMW
age: 4
color: red
는 간단한 규칙
cardefinition
: CAR COLON value NEWLINE attributedefinition*
;
attributedefinition
: attributekey COLON value NEWLINE!
;
그러나 것, 다른 사람이 의무적으로 선택하고 순서가 중요하지 않아야 색상과 같은 속성의 일부를 원하는 다음 필수 속성이되지 않을 수 있습니다 정의되어야한다. 나는 mandatoryattributedefinition 같은 추가 규칙을 추가 할 수 있지만, 임의의 순서로 정의를 허용하기 어렵다
그래서 검사의 종류 파서의 일부 또는 나무 파서해야
안녕하세요 바트 키어 (Bart Kiers), 두 가지 모두에 대한 귀하의 도움에 감사드립니다. 곧 나는 너에게 돈을 지불해야 할 것이다) 좋아, 이제 내가 왜이 질문을하고 있니? 나는 이것을하는 많은 다른 방법이 있다고 생각합니다.문제는 실제로 적절한 것입니다. 트리 파서에서 이중 정의를 확인하겠다고 했잖아요. 그래서 당신은 트리를 wlaking하고 트리 파서에있는 그 두 개의 정의를 검사하는 자바 코드를 구현할 것인가? 그리고 확장 된 것과 동일한 것 : '기존 가치 필요'용어? 파서가 수행해야하는 작업과 트리 파서가 수행해야하는 작업을 구분하는 것은 어렵습니다. – Alexander