언어 기초

어휘 구조와 레이아웃

이름·주석·리터럴을 쓰고, 줄바꿈으로 문장을 끝내거나 표현식을 이어 쓰는 방법을 익힙니다.

이름과 값을 표기하고 긴 표현식을 여러 줄로 나눌 때 이 페이지를 보세요. 줄바꿈이 문장을 끝내는 경우와 표현식을 이어 주는 경우를 구분할 수 있습니다.

여러 줄 표현식 실행하기

첫 프로그램에 따라 토파즈를 설치한 뒤, 다음 코드를 lexical-layout.tpz로 저장하세요.

TOPAZ
let 준비 = true
let 보관 = false
let 누락 = null
let 상태 = "ready"

let 합계 =
    40 +
    2

print("{상태}: {준비}, {보관}, {누락}, {합계}")

파일을 저장한 폴더에서 검사하고 실행하세요.

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

검사가 통과하면 프로그램이 다음 내용을 출력합니다.

출력
ready: true, false, null, 42

앞의 선언 네 개는 각각 한 줄에 들어갑니다. 합계 선언은 세 줄에 걸쳐 있으며 결과는 42입니다. 상태는 유효한 유니코드 이름입니다. let, true, false, null 같은 키워드는 영문 그대로 씁니다.

줄바꿈 위치 고르기

=와 +로 끝난 줄에는 값이 더 필요하므로 합계 표현식이 다음 줄로 이어집니다. 들여쓰기는 코드를 읽기 쉽게 합니다. 컴파일러는 구분자와 연산자를 보고 코드를 묶습니다.

하려는 일쓰는 방법
최상위 선언이나 블록 문장 끝내기다음 항목을 새 줄에서 시작
산술식이나 파이프라인 이어 쓰기앞줄 끝에 연산자를 남김
인수·컬렉션 원소·레코드 필드를 여러 줄로 쓰기구분자 안에서 줄을 바꾸고 항목 사이는 쉼표로 구분
묶이는 범위 드러내기소괄호 추가

소괄호·대괄호·레코드 중괄호 안이나 매개변수·인수 목록에서 줄바꿈은 공백처럼 작동합니다. 블록, match 본문, concurrent 본문에서는 완결된 줄이 한 항목을 끝낼 수 있습니다.

문장 사이는 ;로도 구분할 수 있습니다. 목록 항목 사이는 쉼표로 구분하세요. else를 다음 줄에 써도 앞의 if나 시간 한도가 있는 concurrent 표현식에 이어집니다. 별도의 줄 연장 문자는 필요 없습니다.

이름·주석·리터럴 쓰기

식별자는 합계, 상태처럼 코드에서 쓰는 이름입니다. 유니코드 문자·_·이모지로 시작하고, 그 뒤에는 유니코드 숫자도 올 수 있습니다. _internal은 일반 이름입니다. 단독 _는 패턴에서 값을 버리거나 파이프라인에서 인수 자리를 표시합니다. 변수처럼 읽을 수는 없습니다.

리터럴은 42, true, null, "ready"처럼 값을 직접 적은 표기입니다.

하려는 일표기
줄 끝까지 주석 쓰기// 주석
여러 줄 주석 쓰기/* 주석 */, 블록 주석 중첩은 불가
정수·부동소수점 값 쓰기42, 1.5 같은 10진 숫자
텍스트 쓰기큰따옴표, \n 같은 이스케이프와 {합계} 같은 보간
여러 줄 텍스트 쓰기큰따옴표 세 개

1e21 같은 지수 표기, 다른 진법, 1_000 같은 숫자 구분자는 지원하지 않습니다. 10진 숫자를 모두 적거나 값을 계산하세요.

여러 줄 문자열의 내용은 별도 줄의 닫는 따옴표 앞 공백·탭 배열로 시작해야 합니다. 빈 줄은 예외입니다. 들여쓰기 규칙, 공개판 5.20.3 인터프리터의 동작, 유니코드 스칼라 단위 접근은 문자열과 템플릿에서 보세요. 토파즈는 문자열을 자동으로 정규화하지 않습니다.

예상과 다르게 해석된 코드 고치기

계산이 줄바꿈에서 끊기면 +나 -의 위치를 보세요. 새 문장 앞에서는 값 하나에 적용하는 단항 연산자로 해석될 수 있습니다. 연산자를 앞줄 끝으로 옮기거나 표현식을 소괄호로 묶으세요.

컴파일러는 가장 긴 유효 표기를 하나의 토큰으로 읽습니다. ?.는 선택적 접근입니다. Result 전파 뒤에 필드에 접근하려면 (expr?).field로 쓰세요. 마찬가지로 ...는 나머지 패턴의 ..나 범위 연산자 ..<와 구분됩니다.

문자열에는 큰따옴표를 쓰세요. 작은따옴표 문자열과 문자 리터럴은 지원하지 않습니다. s[i], s.length 대신 s.scalars()에 Array 연산을 적용하세요. 문자열 직접 슬라이스와 문자소 클러스터 API는 제공하지 않습니다.

묶이는 순서는 연산자와 표현식, 타입 표기는 타입에서 이어서 보세요. 다른 표기가 거부되면 금지·유예 형식을 확인하세요.