rokdocs
v0.1

1.9. 진리값과 센티넬 리터럴

rok 에는 키워드의 형태를 띠지만 실제로는 값을 의미하는 세 가지 리터럴이 있습니다. 문법적으로는 다음과 같이 정의됩니다.

sentinel_lit    ::= "true" | "false" | "none"

1.9.1. 진리값 리터럴

진리값 리터럴은 다음과 같이 표기합니다.

true
false

진리값 리터럴은 정확히 두 개의 토큰 true 와 false 로 이루어집니다. 이 두 이름은 키워드 의 예약 목록에 포함되어 있어 식별자로 재사용할 수 없습니다. 평가되는 타입은 표준 라이브러리의 진리값 타입 (bool) 이며, 정확한 정의는 타입 시스템에서 다룹니다.

1.9.2. 센티넬 리터럴: none

센티넬 리터럴은 다음과 같이 표기합니다.

none

none 은 값의 부재를 표현하는 단일 리터럴입니다. 다른 언어의 null, nil, None, undefined 에 해당하는 자리를 차지하며, 키워드로 예약되어 있어 식별자로는 쓸 수 없습니다. 어떤 합 타입의 빈 자리를 채우는지는 문맥이 결정하며, 그 의미론은 타입 시스템 사양에서 정의합니다.

1.9.3. 어휘적 분류

세 리터럴은 어휘 구조 의 진리값 / 센티넬 리터럴 분류에 속합니다. 키워드 토큰 종류와 별도로 분류되는 까닭은, 이들이 값의 자리에 등장하는 토큰이며 구문 분석기가 리터럴이 올 자리에서 받아들이기 때문입니다.

어휘 단계에서는 다음만을 보장합니다. true, false, none 은 항상 같은 토큰 종류로 분리되며, 식별자나 다른 키워드로 재해석되지 않습니다.

1.9.4. 도입하지 않는 리터럴

다른 언어에서 흔히 보이는 다음 리터럴들은 어휘 단계에서 별도 토큰으로 도입하지 않습니다. 부동소수의 무한대와 NaN 은 표준 라이브러리 상수로 제공하며, "비어있음" 의 또 다른 형태인 undefined, null, nil 은 모두 none 으로 단일화합니다. 또한 unit 값 (()) 은 어휘 단계가 아니라 표현식 단계에서 빈 튜플 표기로 등장합니다.

리터럴 종류가 적을수록 학습 비용과 도구 표면이 작아진다는 점을 기억해 두시기 바랍니다.

GitHub에서 이 페이지 고치기