EBNF의 기능은 간단하지만 실제 표기법은 몇 가지 다른 형태로 나타날 수 있습니다. 나는 ISO/IEC 14977 : 1996(E)이라는 용어와 표기법을 사용할 것입니다 (Google을 사용하는 경우 PDF로 제공됨).
정규식 a+
은 터미널 문자열 (§5.2) 다음에 반복 시퀀스 (§5.6)가옵니다. EBNF 형식은 다음과 같습니다
"a", {"a"}
정규 표현식 a((xa)*ya)
은 좀 더 복잡하다. 처음에 a(ya)
만 보면 터미널 문자열 뒤에 그룹화 된 시퀀스 (§5.4)가 있습니다. 그 결과는 다음과 같습니다
"a", ("y", "a")
자체로 표현식 (xa)*
는 두 개의 터미널 - 문자열의 시퀀스를 포함하는 반복 시퀀스입니다. 그것은 혼자과 같습니다
{"x", "a"}
당신은 완전한 표현의 EBNF 양식을 얻기 위해 앞의 두 항목을 결합 할 수 있습니다 : 마지막 표현은 두 개의 추가 개념을 소개
"a", ({"x", "a"}, "y", "a")
을 구체적으로 정의 - 목록 (§5.10)과 선택 - 순서 (§5.5). 서브 표현 (bb|(p)*d)
에는 정의 목록이 있습니다. 혼자 표현식에 대한 EBNF는 다음과 같이 옵션 때문에
[("b", "b" | {"p"}, "d")]
: 당신이 표현식 (bb|(p)*d)?
이 확장 옵션 정량을 포함하면
는
("b", "b" | {"p"}, "d")
, 다음에 EBNF를 업데이트 시퀀스는 그룹화 구성의 역할을하므로 불필요한 시작 그룹 기호 및 끝 그룹 기호를 제거하여 다음을 얻을 수 있습니다.
["b", "b" | {"p"}, "d"]
위에서 사용 된 단계를 결합하여 세 번째 정규 표현식에 대한 EBNF 양식을 얻을 수 있습니다.
"e", {"e"}, ["b", "b" | {"p"}, "d"], "c"
정확히 무엇입니까? 해당 컨텍스트에서 열 1의 표현식이 열 2와 동일합니까? – NeronLeVelu
@ NeronLeVelu..Yes..for the first two..ebnf는 정규 표현식과 같으며 마지막 문장은 ebnf와 같은 정규 표현식입니다. 수정이 도움이 될 것입니다. 감사 –