comment

주석

나루 위키
둘러보기로 가기 검색하러 가기

주석은 그 자체로 의미를 가지지 않고 코드의 설명에만 사용되는 토큰이다.

모든 주석은 다른 토큰과 겹치지 않는 두 글자 --로 시작되어 처음으로 나오는 개행까지 이어진다. 따라서 어느 다른 토큰도 --로 시작할 수 없고(중간에 --가 들어갈 수는 있다), 다른 코드와 같은 줄에 위치한 -- 앞에는 공백을 두는 걸 권장한다.

-- 이 줄은 아무 것도 실행하지 않는다.

a := 3 -- `a := 3` 뒤의 내용이 주석이다.

-- 만약 -+-가 개별 토큰이었다면,
b := 3 -+--4
-- ^ 위에서 `-+--`는 `-+-` 뒤에 `-` 토큰이 있는 걸로 해석되고, 따라서 주석이 아니다.

여러 줄 주석은 지원되지 않는다. 한 줄 주석을 여러 번 사용해야 한다.

주석은 문법적으로는 개행과 동일하며, 따라서 구분자로 쓰이거나 무시된다. 다만 일부, 특히 --|로 시작하는 주석은 문서화 주석으로서 기계적으로 해석될 수 있으며, 여기서 나는 문제는 문서화 경고로 보고된다.

논의

한 줄 주석 문법은 루아와 동일하다.

여러 줄 주석은 (엄밀히 말하면 한 줄 안에서도 쓰일 수 있으므로 어폐가 있지만 아무튼) 많은 언어에서 지원하지만 꼭 필요한 것은 아니다. 파이썬이나 셸 스크립트가 여러 줄 주석이 없는 대표적인 언어이며, Zig도 본래 C 스타일 여러 줄 주석을 지원했다 날렸다. 언어적으로만 봐도 몇 가지 문제가 있다.

  • 여러 줄 주석을 지원하게 되면 중첩 가능한지 아닌지를 결정해야 한다. 한 쪽을 쓰다가 다른 쪽으로 넘어 오면 헷갈린다.
  • 현존하는 편집기에서 아주 긴 여러 줄 주석의 문법 하이라이팅을 깨 먹는 경우가 많다. (현재 위치에서 앞뒤로 일정 줄수만큼만 해석하기 때문)
  • 여러 줄 주석의 중요한 용도로 ad-hoc하게 코드를 날리는 게 있는데, 이렇게 날린 코드가 썩는 경우가 많다. 이 문제를 올바르게 해결하려면 파싱까지만 되고 그 이후 컴파일 단계는 제한적으로만 실행되게 하는 별도 문법이 있어야 한다. Dversion(none) { ... } 같은 것. 나루의 경우 static if 표현식이 이 역할을 한다.