언어 기초

어휘 구조와 레이아웃

이름, 리터럴, 주석, 줄바꿈이 토파즈 소스 파일을 이루는 방식을 살펴봅니다.

.tpz 파일의 각 줄은 그럴듯해 보이는데 어디서 한 항목이 끝나는지, 어떤 표기가 이름이나 리터럴이 되는지 헷갈릴 때 이 페이지를 보세요. 토파즈는 유니코드 이름을 받아들이며, 완성된 줄은 대개 하나의 완성된 항목으로 봅니다. 괄호나 대괄호 안, 또는 이어질 것이 분명한 연산자 뒤에서는 별도의 줄 연결 문자를 쓰지 않고 표현식을 다음 줄로 이어 갑니다.

완전한 소스 파일부터 실행하기

다음 코드를 lexical-layout.tpz로 저장하세요.

TOPAZ
let ready = true
let archived = false
let missing = null
let 상태 = "ready"

let total =
    40 +
    2

print("{상태}: {ready}, {archived}, {missing}, {total}")

검사한 뒤 실행합니다.

BASH
topaz check lexical-layout.tpz
topaz run lexical-layout.tpz

출력은 다음과 같습니다.

출력
ready: true, false, null, 42

다섯 바인딩에는 네 가지 리터럴 계열이 나옵니다. 불리언 truefalse, 값이 없음을 나타내는 null, 문자열, 10진수입니다. 상태는 평범한 식별자입니다. let, true, false, null 같은 키워드는 영어 철자를 그대로 쓰지만, 직접 짓는 이름에는 유니코드 문자와 밑줄, 첫 글자 뒤의 숫자, 이모지를 사용할 수 있습니다.

파서가 줄바꿈을 읽는 방식

앞의 네 바인딩은 각 줄에서 완성되므로 줄바꿈이 최상위 항목을 나눕니다. total=+가 줄 끝에 있으므로 아직 오른쪽 값이 더 필요합니다. 따라서 세 줄이 하나의 표현식이 됩니다.

소괄호, 대괄호, 레코드 중괄호, 매개변수 목록처럼 구분자 안에 있는 목록에서는 줄바꿈이 공백처럼 작동합니다. 반면 일반 블록, match 본문, concurrent 본문은 문장 목록이므로 완성된 줄이 항목을 끝낼 수 있습니다. 긴 표현식의 해석이 조금이라도 모호하다면 들여쓰기에 기대지 말고 소괄호로 묶으세요. 들여쓰기는 사람이 읽는 모양을 정하고, 구분자와 연결 규칙이 실제 구조를 정합니다.

하려는 일권장 표기
완성된 최상위 항목이나 블록 문장 끝내기다음 항목을 새 줄에서 시작
산술식이나 파이프라인 이어 쓰기앞줄 끝에 연산자를 남김
인수나 컬렉션 목록을 여러 줄로 쓰기목록 구분자 안에서 줄바꿈
묶이는 범위를 확실히 드러내기전체 표현식을 소괄호로 묶음

문장을 쓸 수 있는 곳에서는 세미콜론을 명시적 구분자로 쓸 수 있지만, 정본 토파즈 예제는 세미콜론을 생략합니다. if나 시간 제한이 있는 concurrent 뒤에서 줄을 바꾸고 else를 써도 같은 표현식으로 이어집니다.

이름, 주석, 문자열

식별자는 유니코드 문자, _, 이모지로 시작하고 그 뒤에 유니코드 숫자를 포함할 수 있습니다. _ 하나만 쓰면 일반 값이 아닙니다. 패턴에서는 값을 버리는 와일드카드이고, 파이프라인 호출 인수에서는 자리표시자입니다. _internal처럼 뒤에 글자가 더 있으면 일반 식별자입니다.

한 줄 주석은 //, 블록 주석은 /* ... */로 씁니다. 블록 주석은 중첩되지 않습니다. 정수와 부동소수점 리터럴은 10진수이며, 다른 진법이나 숫자 사이의 밑줄 구분자는 정본 표기가 아닙니다.

큰따옴표 문자열은 \n 같은 이스케이프와 {expression} 보간을 지원합니다. 여러 줄 문자열은 큰따옴표 세 개로 감쌉니다. 닫는 구분자 앞의 공백·탭 접두사가 각 비어 있지 않은 줄에서 제거될 정확한 들여쓰기를 정합니다. 토파즈는 유니코드 스칼라 순서를 그대로 보존하며 암묵적으로 정규화하지 않습니다.

흔한 실수 고치기

새 문장처럼 보이는 줄의 맨 앞에 이항 +-를 두지 마세요. 이 토큰은 단항 연산자로도 시작할 수 있습니다. 앞줄 끝에 연산자를 남기거나 전체 표현식을 소괄호로 묶으면 뜻이 분명해집니다.

문자열에는 s[i], s.length, 슬라이스 문법을 쓸 수 없습니다. s.scalars()로 스칼라를 얻으세요. 문자열과 템플릿에서 이 선택을 실행 예제로 볼 수 있습니다.

토큰은 가장 긴 유효 표기를 우선하므로 ..., .., ..<, ?., 후위 ?가 서로 구분됩니다. 작은따옴표 문자열, 문자 리터럴, 중첩 블록 주석, 문자열 직접 슬라이스, 문자소 클러스터 API, 암묵적 유니코드 정규화는 현재 표면에 없습니다.

값을 만드는 식은 연산자와 표현식, 추론과 타입 표기는 타입에서 이어서 보세요. 익숙한 표기가 거부되면 금지·유예 형식을 확인하세요.