소프트 키워드
소프트 키워드 (Soft Keywords)
Scala 3에는 맥락에 따라 키워드로도, 일반 식별자로도 해석되는 '소프트' 키워드들이 있어요. 이게 어떤 자리에서 어떻게 다르게 읽히는지 정리해 볼게요.
본문
소프트 수식어(soft modifier)는 infix, inline, opaque, open, transparent라는 식별자들을 말해요.
소프트 키워드(soft keyword)는 소프트 수식어이거나, as, derives, end, extension, throws, using, |, +, -, * 중 하나예요.
소프트 수식어는 바로 뒤에 하드 수식어(hard modifier)나 정의를 시작하는 키워드 조합 (def, val, var, type, given, class, trait, object, enum, case class, case object)이 오면 그 정의의 수식어 후보로 취급돼요. 두 단어 사이에는 줄바꿈 토큰과 소프트 수식어가 여러 개 와도 괜찮아요.
그 외의 경우 소프트 키워드는 다음과 같은 상황에서 특별히 다뤄져요.
inline— 뒤에 표현식을 시작할 수 있는 어떤 토큰이 오는 경우derives— 확장 절(extension clause) 뒤, 또는 클래스·트레이트·오브젝트·enum 정의의 이름(과 아마 파라미터) 뒤에 오는 경우end— 문(정의나 최상위 표현식) 다음 줄의 시작에 오는 경우extension— 문의 시작에 오면서 바로 뒤에(나[가 오는 경우using— 파라미터 목록이나 인자 목록의 시작에 오는 경우as— 이름을 바꾸는(renaming) import 절에서|— 대안(alternative)에서 두 패턴을 나눌 때+,-— 타입 파라미터 앞에 오는 경우*— 와일드카드 import에서, 파라미터의 타입 뒤에 오는 경우, 또는 가변 인자 스플라이스x*에 나타나는 경우 그 밖의 모든 자리에서 소프트 키워드는 일반 식별자로 취급돼요.