0, 1, 22 같은 것은 literal인가요? 아니면 constant 인가요?
김우승Literal은 적절한 번역어가 없는 것으로 알고 있습니다. 앞으로 리터럴이라고 하겠습니다. 그리고 constant는 상수로 하죠. 예전 홍민희씨가 C의 널포인터상수와 포인터가 if, while 같은 조건식에서 쓰이는 경우를 IRC에서 말을 꺼내신 적이 있습니다. 당시 정확히 용어를 정립해서 설명하지 못한 저는 꽤 횡설수설했었죠.
지금에 와서 돌이켜 볼 때 0을 리터럴이라고 해야 하는지 상수라고 해야 하는지 모르면서 꼬임이 좀 오래 간 것 같습니다. 이 부분에 대해서 정확히 아시는 분 없으신지요. 아신다면 설명해주시면 감사하겠습니다.
제가 기억하기로는 literal은 문법적인 면을 말할 때 사용하고 constant는 의미적인 면을 말할 때 사용하던 것 같습니다. 예를 들어
3만이 literal이고1+2는 literal이 아니겠지만 둘 다 constant expression일 수 있겠죠.제가 요즘 듣는 수업 교재에서는 리터럴은 값 자체로 표현된 것이라 되어 있네요.
이에 따른다면 리터럴은 문법면보다는 의미면에서 구분을 하는 것 같네요. 뭐 사실 syntax와 semantics를 정확히 구분하기 힘들긴 합니다만 말이죠.