2013-11-28 4 views
0
3.8. Optional Sequence: 
[RULE] 

    Square brackets enclose an optional element sequence: 

     [foo bar] 

    is equivalent to 

     *1(foo bar). 

위의 섹션은 RFC5234입니다.선택적 시퀀스 규칙 설명

이것은 선택적 시퀀스 규칙 [foo bar]1*1(foo bar)과 같을뿐만 아니라 1*1(bar foo)과 같기 때문입니다. 위의 예는 기본값이 0, 즉 0*1(foo bar)과 일치합니다.

그러나 []은 일반적으로 다른 것을 의미합니다. 그래서 다른 한편으로는 [foo bar](foo) 또는 (bar)을 의미해야한다고 생각합니다.

누구나 나를 혼란스럽게 할 수 있습니까?

답변

1

RFC는 ABNF 문법의 구문과 의미를 정의하며 인용 된 텍스트는 선택적 시퀀스 구문의 의미를 정의합니다. 정의에 따르면 정확합니다. ABNF 형태의 서열 그룹에서 괄호는 (foo bar)foo을 의미하고 바로 다음에 bar이 뒤 따른다는 것을 의미한다. 앞에있는 숫자 구문은 반복을 나타내며, 별표는 최대 발생 횟수와 최소 발생 횟수를 구분합니다. 최소값은 0입니다. 그래서

*1(foo bar) 

즉시, 즉 시퀀스는 선택 제로 적어도 대부분을 한번에 나타나는 bar 다음 foo의 시퀀스를 의미

0*1(foo bar) 

동일하다. 옵션 부품 형식 문법에 아주 자주 있기 때문에, 즉시 적어도 제로 대부분 한 번에 나타납니다 bar 다음 foo의 순서를 의미, 즉

[foo bar] 

그들을위한 특별한 약식 구문이있다. 어떤 구문 구조가 일반적으로 의미하는 것은 중요하지 않으며, 명세는 세계에 반영되지 않으며, 자체 규약을 정의합니다.