메타 문법(metasyntax) 은 다른 문법을 설명하는 문법입니다.
컴퓨터 과학을 공부한 사람은 이 설명을 보고 즉시 ‘배커스-나우르 표기법 확장(EBNF, Extended Backus-Naur Form)’을 떠올렸을 겁니다.
단순한 개념에는 어울리지 않게 거창한 이름이죠.
이 장에서는 메타 문법을 써서 자바스크립트 제어문의 문법을 간결하게 표기합니다.
필자가 사용할 메타 문법은 단순하고 비공식적입니다.
사실 중요한 건 이 문법이 모질라 개발자 네트워크(MDN)의 자바스크립트 문서에서 사용하는 문법이라는 겁니다.
(https://developer.mozilla.org/en-US/docs/Web/JavaScript)
자바스크립트를 공부하다 보면 MDN을 찾아볼 일이 아주 많을 테니, 여기 익숙해지면 도움이 될 겁니다.
이 메타 문법에서 기억할 것은 두 가지뿐입니다.
대괄호([])로 감싼 것은 옵션이고, 생략 부호(…)는 ‘여기 들어갈 내용이 더 있다’ 는 뜻입니다.
단어는 플레이스홀더로 사용하며 그 의미는 문맥에서 알 수 있습니다.
예를 들어 statement1과 statement2는 두 개의 서로 다른 문이고 expression은 어떤 값이 되는 것이며, condition은 참 같은 값 또는 거짓 같은 값으로 취급할 표현식입니다.
TIP 블록 문도 문이므로, 문을 쓸 수 있는 곳에는 항상 블록 문도 쓸 수 있습니다.
우리는 이미 몇 가지 제어문에 익숙하니 그들의 메타 문법부터 봅시다.
while 문
while(condition)
statement
condition 이 참 같은 값이면 statement를 실행합니다.
if … else 문
if (condition)
statement1
[else
statement2]
condition이 참 같은 값이면 statement1을 실행하고, 그렇지 않고 else 부분이 있다면 statement2를 실행합니다.
do … while 문
do
statement
while(condition);
statement는 최소한 한 번 실행하고, condition이 참 같은 값인 동안 반복해서 실행합니다.
for 문
for([initialization]; [condition]; [final-expression])
statement
루프에 들어가기 전에 initialization을 실행합니다.
condition이 true인 동안 statement를 실행하고, final-expression을 실행한 다음 condition을 다시 체크합니다.