본문 바로가기

방송통신대학교

BNF에서 EBNF로! do-while문, 문장들, 논리식을 EBNF로 이해하고 구문도표로 표현하기

728x90
반응형
728x170

(1) BNF로 표현된 다음 세 개의 구문을 하나의 EBNF로 합쳐 표현하고 그렇게 표현한 이유를 설명하시오.
<do-while문> ::= do { <문장들> } while <논리식> ;
<문장들> ::= <문장> <문장들> | <문장>
<논리식> ::= True | False

(2) (1)에서 답한 EBNF 표현을 구문 도표로 표현하고 그렇게 표현한 이유를 설명하시오.

 

 

안녕하세요, 여러분! 코딩이란 거창한 단어를 들으면 어떤 생각이 드나요? "아, 어렵다", "헤어나올 수 없는 미로" 같은 생각이 들 수도 있겠죠. 하지만 오늘은 그런 걱정을 한켠에 두고 재미있게 문제를 해결해보는 시간을 가져보려고 합니다. 뭐, 힘들다고 느끼면 그냥 코딩 대신에 코딩 이야기를 들어도 되니까요. 😄

(1) BNF로 표현된 다음 세 개의 구문을 하나의 EBNF로 합쳐 표현하고 그렇게 표현한 이유를 설명하시오.

먼저 문제에서 주어진 BNF(Bachus-Naur Form) 구문을 보겠습니다.

<do-while문> ::= do { <문장들> } while <논리식> ;
<문장들> ::= <문장> <문장들> | <문장>
<논리식> ::= True | False

이것을 EBNF(Extended Bachus-Naur Form)으로 표현하면 다음과 같습니다.

<do-while문> ::= "do" "{" <문장들> "}" "while" <논리식> ";"
<문장들> ::= <문장> { <문장> }
<논리식> ::= "True" | "False"

그렇게 표현한 이유

  1. 중괄호({})의 사용: EBNF에서는 중괄호를 사용하여 "0번 이상 반복"을 간결하게 표현할 수 있습니다. <문장들><문장> { <문장> }으로 표현함으로써 코드가 간결해집니다.
  2. 명확한 키워드 표현: "do", "while" 등의 키워드와 특수문자(예: ;)를 따옴표(" ")로 감싸 명확하게 표현했습니다. 이렇게 하면 키워드와 문법 기호를 명확하게 구분할 수 있습니다.

(2) (1)에서 답한 EBNF 표현을 구문 도표로 표현하고 그렇게 표현한 이유를 설명하시오.

구문 도표를 여기에 직접 그릴 수는 없지만, 대신 설명을 드리겠습니다.

  1. do-while문: "do" → "{" → "문장들" → "}" → "while" → "논리식" → ";" 순서로 화살표를 그립니다.
  2. 문장들: "문장"에서 시작하여 중괄호 안에 "문장"으로 다시 돌아갈 수 있는 화살표를 그립니다. 이렇게 하면 문장이 0번 이상 반복될 수 있음을 표현합니다.
  3. 논리식: "True"와 "False" 중 하나를 선택할 수 있도록 화살표를 그립니다.

그렇게 표현한 이유

  1. 시각적 이해: 구문 도표는 복잡한 구문을 눈으로 쉽게 이해할 수 있게 해줍니다.
  2. 로직의 명확성: 구문 도표를 통해 어떤 구성 요소가 어떻게 연결되는지 명확하게 볼 수 있습니다. 이를 통해 코드의 로직을 쉽게 파악할 수 있습니다.
  3. 디버깅 용이성: 만약 코드에 문제가 발생했을 때, 구문 도표를 참고하면 문제의 원인을 빠르게 찾을 수 있습니다.

그럼 오늘은 여기까지입니다. 재미있게 읽어주셔서 감사합니다! 프로그래밍 세계의 문이 닫힌 것이 아니라, 아직 열려 있습니다. 누구나 들어올 수 있어요. 그러니까, 두려워하지 마시고 한 발짝 들어와 보세요! 😊

728x90
반응형
그리드형