루아의 블록 주석에 대한 사소한 오해

류광, 2007/04/28 20:01
루아의 블록 주석을 --]]로 닫는 것은 필수가 아니라 관례입니다.

LUA 강좌 - C,C++ 을 아는사람을 위한. 루아의 시작..에서 되엔자앙(hdd340)님은 --[[ ... --]]보다는 --[[ ... ]]-- 가 더 그럴싸 했을 거라고 하셨는데요. 약간의 오해가 있습니다. 블록 주석을 여는 기호열이 --[[인 것은 맞습니다만 닫는 기호열은 그냥 ]]입니다.

블록 주석을 닫을 때 ]] 앞에 --를 붙이는 것은 블록 주석을 좀 더 편하게 활성화, 비활성화하기 위한 관례일 뿐입니다. 예를 들어, 다음처럼 디버깅 등의 목적으로 임시로 일부 코드를 블록으로 감쌌다고 합시다.

--[[ 블록 주석의 시작
  call_some_fishy_func() -- (1) 실행되지 않음
--]]

나중에 (1)을 다시 활성화시킨다고 하면, --[[ 와 --]]를 삭제할 필요 없이 --[[에 -하나만 추가하면 됩니다.

---[[ 이제는 그냥 한 줄의 주석
  call_some_fishy_func() -- (1) 실행됨
--]] 역시 그냥 한 줄의 주석

---[[는 블록 주석의 시작이 아니라 한 줄 주석의 시작을 뜻하는 --에 -[[라는 주석 내용이 붙은 형태이므로 (1)의 코드는 더 이상 주석의 일부가 아닙니다. 다시 블록 주석으로 바꾸려면 ---[[를 --[[로 바꾸기만 하면 되고요.

추가로, --[[ ... ]]-- 도 가능합니다.

--[[ 블록 주석의 시작
  call_some_fishy_func()
]]-- (2)

(2)는 블록 주석을 닫은 다음에 한줄 주석을 시작한 것이니까요... 단, 이런 형태에서 --[[를 ---[[로 바꾸면 (2)는 ]]라는 코드에 한 줄 주석이 붙은 형태가 되어서 구문 오류가 됩니다. (]]는 유효한 루아 문장이 아니므로).

기본적으로 --[[ ... ]]는 줄바꿈이나 기타 특수 문자가 포함된 문자열 리터럴을 " ... " 대신 [[ ... ]]로 감싸서 표기하는 것과 같은 메커니즘입니다. 5.1에서 [==[ ... ]==] 형태의 구문도 지원하게 되었는데 블록 주석 역시 같은 형태의 구문을 지원하게 되었다는 점을 봐도 내부적으로 같은 해석 루틴을 사용할 가능성이 아주 큽니다. 물론 결정적인 증거는 루아 구현 코드를 보면 나오겠지만요...

되엔자앙 님은 제가 번역한 루아를 이용한 민첩하고 효과적인 게임 개발를 참고하셨다고 하는데 해당 부분에 블록 주석을 반드시 --]]로 닫아야 한다는 말은 없지만, 예제에 왜 --]]를 썼는지에 대해서는 설명이 없어서 생긴 오해인 것 같습니다. 이런 류의 오해는 조만간 Programming in Lua 2nd ed.의 번역서가 나오면 상당히 해소가 될 것입니다. 두 책의 관계는 제 번역서의 부록 A 루아 보충 앞 부분에 밝혀두었습니다...

top
의견 # + 4

Trackback Address :: http://occamsrazr.net/tt/trackback/120

comments powered by Disqus

(2013년 11월 10일자로 블로그에도 DISQUS 시스템을 도입했습니다. 기존 의견의 수정, 삭제, 댓글 추가는 여전히 가능합니다.)

  1. 되엔자앙 2007/09/17 16:05 PERMALINKMODIFY/DELETE REPLY

    구글에서 제가 저를 뒷조사 하다보니 이곳에 오게 됐습니다 ^^
    제가 깊이있게 관찰하고 작성한 글이 아니라 송구합니다.
    정리를 하며 학습을 하면 머리에 쏙쏙 들어올것 같아 쓴 글이었는데 제 무지함이 홀라당 밝혀졌네요 ㅎㅎㅎ
    나중에서야 [Programming in lua] 책을 통해 알게 됐던 부분인데 다시한번 머리에 쏙쏙 들어오네요 ^^

  2. 류광 2007/09/17 18:10 PERMALINKMODIFY/DELETE REPLY

    안녕하세요~ 답글로 달려니 로그인을 해야 하더라고요. 블로그에 쓰셨더라면 트랙백을 걸었을 텐데 아쉬웠습니다...

  3. 최익필 2011/01/09 20:29 PERMALINKMODIFY/DELETE REPLY

    꽤 오려전 글이지만, 루아에서 주석 운용법을 배울수 있었습니다.
    이 포스트를 올려 주셔서, 감사합니다.


  4. 류광 2011/01/11 17:26 PERMALINKMODIFY/DELETE REPLY

    제가 이런 글을 썼었군요 :) 돌이켜보면 루아 주요 라이브러리 소개 등 루아 관련 글쓰기 계획이 몇 가지 있었는데 전혀... 올해에는 조금씩이라도 해보겠습니다 :)