나는 올바른 생각하지 않습니다. 사실, 나는 EBNF가 실제로 유효한 EBNF라고 생각하지 않는다. 질문 How to convert BNF to EBNF에 대한 대답은 ISO/IEC 14977 : 1996, Extended Backus-Naur Form 표준에서 인용 한 유효한 EBNF의 구성 방법을 보여줍니다.
expr --> [-] term {+ term}
기록한다 :
나는 표현을 생각 0의 순서 다음에
이 표현식이
term
선택적인 빼기 부호 다음에,로 구성되어 있다는 것을 의미
expr = [ '-' ] term { '+', term };
, 더 많은 양의 더하기 기호와 term
이 있습니다.
다음 질문 : 어떤 방언의 BNF를 타겟팅하고 있습니까? 상황이 까다로워집니다. 많은 방언이 있습니다. 그러나 가능한 번역은 다음과 같습니다.
<expr> ::= [ MINUS ] <term> <opt_add_term_list>
<opt_add_term_list> ::= /* Nothing */
| <opt_add_term_list> <opt_add_term>
<add_term> ::= PLUS term
여기서 MINUS 및 PLUS는 터미널 ('-'및 '+')입니다. 이것은 매우 까다 롭지 만 최소한의 BNF입니다. 다른 가능한 변환은 같다 :
<expr> ::= [ MINUS ] <term> { PLUS <term> }*
{ ... }*
부분이 없거나 포함 된 패턴 ...
(이 예에서는 그렇게 PLUS <term>
)의 이상을 의미 어디. 아니면 인용 된 문자를 사용할 수도 있습니다 :
<expr> ::= [ '-' ] <term> { '+' <term> }*
그래서 가능한 대안 목록이 계속됩니다. 당신은 일할 BNF의 정의를 살펴 봐야 할 것이며 ISO 표준 EBNF가 될 경우 EBNF에 대해 불평해야합니다. EBNF라고하는 임의의 임의의 BNF 스타일의 언어 일 경우 혼동을 일으키는 이름 일 것입니다. 정의 된 한 사적인 방언은 괜찮지 만 방언을 구속하지 않는 사람들이 정답이 무엇인지 알 수는 없습니다.