소프트 키워드

소프트 키워드 (Soft Keywords)

Scala 3에는 맥락에 따라 키워드로도, 일반 식별자로도 해석되는 '소프트' 키워드들이 있어요. 이게 어떤 자리에서 어떻게 다르게 읽히는지 정리해 볼게요.

출처: Scala 3 Reference

본문

소프트 수식어(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*에 나타나는 경우 그 밖의 모든 자리에서 소프트 키워드는 일반 식별자로 취급돼요.