2013-07-22 7 views
1

확장 BNF에 대해 질문이 있습니다.확장 BNF 문제

(* Extended BNF grammar *) 
min = 5; 
max = 10; 
value = integer; (* How can I set the range rule: `min <= value <= max`? *) 

두 번째 질문 : ISO/IEC 14977 읽은

name = letter, { letter | decimal digit }; 
(* The common length of the comment line must be not more than 128 characters. 
But I don't know the name's length. How can I set this restriction? *) 
     comment line = ';', name, ' ', 128 * [ character ], new line; 

: 완전히 1996 (E)를하지만, 답을 찾을 수 없습니다.

감사합니다.

답변

0

내가 알기로는 BNF/EBNF 파서만으로는 할 수 없지만 일부 후 처리와 함께 사용할 수 있습니다.

트릭은 제약 사항을 신경 쓰지 않고 EBNF 규칙으로 텍스트를 구문 분석하는 것입니다. 나중에 추상 구문 트리 (AST)를 얻을 때 Javascript (또는 구문 분석에 사용하는 언어)를 사용하여 노드별로 노드를 통과하고 제약 조건을 테스트합니다.