이름과 값을 표기하고 긴 표현식을 여러 줄로 나눌 때 이 페이지를 보세요. 줄바꿈이 문장을 끝내는 경우와 표현식을 이어 주는 경우를 구분할 수 있습니다.
여러 줄 표현식 실행하기
첫 프로그램에 따라 토파즈를 설치한 뒤, 다음 코드를 lexical-layout.tpz로 저장하세요.
let 준비 = true
let 보관 = false
let 누락 = null
let 상태 = "ready"
let 합계 =
40 +
2
print("{상태}: {준비}, {보관}, {누락}, {합계}")파일을 저장한 폴더에서 검사하고 실행하세요.
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는 제공하지 않습니다.
묶이는 순서는 연산자와 표현식, 타입 표기는 타입에서 이어서 보세요. 다른 표기가 거부되면 금지·유예 형식을 확인하세요.