검색 여닫기
검색
메뉴 여닫기
518
228
4
2천
noriwiki
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
특수 문서 목록
파일 올리기
환경 설정 메뉴 여닫기
notifications
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
user-interface-preferences
한국어
개인 도구
로그인
Backus-Naur form 문서 원본 보기
noriwiki
문서 공유하기
다른 명령
←
Backus-Naur form
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
문서의 원본을 보거나 복사할 수 있습니다.
'''배커스-나우르 표기법'''(Backus–Naur form), 약칭 '''BNF'''는 [[문맥 자유 문법]]을 나타내기 위해 만들어진 표기법이다. [[존 배커스]]와 [[페테르 나우르]]의 이름을 따서 부른다. BNF는 기본적으로 다음의 문법을 사용한다. <syntaxhighlight lang="bnf"> <기호> ::= <표현식> </syntaxhighlight> * 기호는 [[말단 기호]]가 될 수 없다. * 표현식은 다른 기호의 조합, 또는 여러 가지의 표현식 중 하나를 사용한다는 의미로 |를 사용한다. * 다른 표현식으로 정의되지 않은 기호는 자동적으로 [[말단 기호]]가 된다. * 기호가 아닌 상수에는 따옴표를 붙여서 구별한다. * <code>::=</code>는 왼쪽의 기호가 오른쪽의 기호로 치환됨을 의미한다. == 예시 == 예를 들어, 간단한 Arithmetic expression을 BNF 표기법으로 나타내면 다음과 같다. <syntaxhighlight lang="bnf"> expr :: = "(" expr "+" expr ")" // addition | "(" expr "-" expr ")" // subtraction | num // number num :: = "1" | "2" | ... | "42" ... // number </syntaxhighlight> 여기서 expr이라는 variable은 집합 즉, addtion, subtraction 그리고 number로 구성된 연산자 정의의 집합으로 구성된다. * expr은 다음 세개의 조합으로 구성된다. * 1. expr + expr * 2. expr - expr * 3. expr은 <num> * <num>은 정수중의 하나이다. 이를 [[Scala]]로 변환하면 다음과 같다. <syntaxhighlight lang="scala"> trait Expr case class Num(num: Int) extends Expr case class Add(left: Expr, right: Expr) extends Expr case class Sub(left: Expr, right: Expr) extends Expr </syntaxhighlight>
Backus-Naur form
문서로 돌아갑니다.