lowstruct 파일 쓰기
English · 한국어
정본은 영문 매뉴얼이고, 이 문서는 그 번역입니다.
이 쪽은 예제로 형식을 익히게 합니다. 규칙은 명세가 정합니다.
문장
문장은 경로(이름 하나 이상), 그 값(리터럴), 그리고 마침표입니다.
title "my-app" .
server port 8080 .
server debug false .경로는 첫 리터럴에서 끝나므로 = 가 필요 없습니다. 두 server … 문장은 port 와 debug 를 담은 server 가지를 만듭니다.
이름은 ASCII 영문자·숫자·_ 로 이루어지고 영문자나 _ 로 시작하며, 대소문자를 가립니다. 예약어는 일곱 개입니다: rem note text do end true false.
블록
do … end 는 공통 앞부분을 한 번만 쓰게 합니다. 아래 두 파일은 같은 나무를 만듭니다.
server do
host "0.0.0.0" .
tls do
cert "a.pem" .
end
endserver host "0.0.0.0" .
server tls cert "a.pem" .블록으로 연 경로는 그 블록의 것입니다. 나중에 다시 열 수도, 블록 밖의 평평한 문장으로 더할 수도 없습니다 (E-LOWS-SEALED). server 에 관한 것은 모두 한 자리에 있습니다. 블록은 64 겹까지 겹칩니다.
같은 종류가 여럿이면 각각 이름을 붙입니다.
remote origin do
url "https://example.invalid/r.git" .
end
remote backup do
url "https://example.invalid/b.git" .
end목록
값이 여럿이면 목록입니다. 괄호도 쉼표도 없습니다. 긴 목록은 여러 줄에 걸쳐 써도 되고, 마침표가 끝을 정합니다.
ports 80 443 8443 .
allow
"10.0.0.0/8"
"192.168.0.0/16"
.한 문장의 값은 모두 한 종류입니다. 1 2.0 은 정수와 부동소수가 섞여서 거부됩니다. 값이 없는 문장(feature_x .)은 빈 목록이며, 그 키가 있다는 표시입니다.
키는 한 번만 씁니다. 같은 문장을 되풀이하면 목록이 되는 것이 아니라 오류입니다(E-LOWS-DUP).
주석
rem 주석은 줄 끝까지입니다
port 8080 . rem 문장 뒤에도 됩니다
note END
여러 줄 주석입니다.
END 만 있는 줄까지는 무엇을 써도 됩니다.
END수
| 적는 것 | 뜻 |
42 -5 +5 1_000_000 | 십진 정수. _ 로 자릿수를 나눕니다 |
0x2A 0b101010 | 십육진·이진 정수 |
0755 | 755 — 팔진 표기는 없습니다 |
1.5 1e3 1.5e-3 | 십진 부동소수. 소수점 앞뒤에 숫자가 있어야 합니다 |
0x1.8p1 | 십육진 부동소수(3.0) |
정수는 −2⁶³ 부터 2⁶⁴−1 까지입니다. 부동소수는 IEEE 754 double 이며 inf·nan 은 없습니다. true 와 false 는 불리언입니다.
문자열
"…" 가 문자열입니다. 한 줄 안에서 닫혀야 합니다. 역슬래시는 닫힌 이스케이프 집합 가운데 하나를 시작합니다.
| 이스케이프 | 값 |
\\ \" \' | 역슬래시, 큰따옴표, 작은따옴표 |
\n \t \r \0 \a \b \f \v | 제어 문자 |
\xNN | 바이트 하나 |
\uXXXX \UXXXXXXXX | 유니코드 코드포인트 |
그 밖의 역슬래시는 오류입니다(E-LOWS-ESCAPE). 잘못 쓴 역슬래시가 조용히 다른 값이 되는 일은 없습니다.
윈도우 경로
역슬래시는 언제나 두 번 씁니다.
windir "C:\\Windows" .
share "\\\\server\\share" ."C:\temp" 는 오류가 아닙니다. \t 가 탭 이스케이프이기 때문입니다. 하지만 뜻한 경로도 아닙니다. 역슬래시는 늘 두 번 쓰십시오.
여러 줄과 원문
text heredoc 은 본문을 적힌 그대로, 이스케이프 없이 담습니다. 태그만 있는 줄에서 끝납니다.
banner text END
Welcome.
Indentation and \backslashes stay as they are.
END
.마지막 본문 줄 뒤의 줄바꿈은 값에 들지 않습니다. heredoc 도 다른 값과 같으므로 문장은 여전히 마침표로 끝납니다.
바이트 문자열과 접두사
접두사 없는 "…" 는 바이트를 담습니다. "\xE9" 는 유효한 UTF-8 이 아닌 바이트 하나입니다. 라이브러리는 바이트와 함께 UTF-8 텍스트로 푸는 도우미를 줍니다. 접두사 둘이 문자열이 담는 것을 바꿉니다.
| 리터럴 | 원소 |
"é" | 바이트(2) |
u"é" | UTF-16 코드 유닛(1) |
U"é" | 코드포인트(1) |
'a', u'é', U'😀' 같은 문자 리터럴은 같은 종류의 원소를 정확히 하나 담습니다.
만나게 될 오류
거부할 때는 줄, 열(글자 단위), 코드를 알려 줍니다.
| 코드 | 흔한 원인 | 고치는 법 |
E-LOWS-UNCLOSED | 빠진 ., end, 닫는 따옴표, heredoc 태그 | 채워 넣습니다 |
E-LOWS-CHARSET | 문자열 밖의 =, [, #, , 나 비 ASCII 글자 | lowstruct 는 이것들을 쓰지 않습니다 |
E-LOWS-ESCAPE | "\q", "\101"(팔진 없음), 잘못된 \u | 위 표의 이스케이프를 씁니다 |
E-LOWS-NUMBER | 숫자 없는 0x, 0o7, 1__0 | 수를 온전히 씁니다 |
E-LOWS-MIX | 1 "one" . 이나 1 2.0 . | 한 문장에는 한 종류 |
E-LOWS-ORDER | a 1 b 2 . | 경로마다 문장 하나 |
E-LOWS-DUP | 같은 키를 두 번 | 한 번만 씁니다 |
E-LOWS-SHAPE | a 1 . 과 a b 2 . 을 함께 | 키는 값이나 키 가운데 하나만 담습니다 |
E-LOWS-SEALED | 블록을 다시 열거나 밖에서 더함 | 블록의 키는 블록 안에 둡니다 |
E-LOWS-TAG | text·note 를 키로 씀, 잘못된 heredoc 첫 줄 | 키 이름을 바꿉니다 |
E-LOWS-BOM · E-LOWS-CR · E-LOWS-UTF8 | 파일 인코딩 | BOM 없는 UTF-8, 줄 끝은 LF 나 CRLF 로 저장합니다 |
코드 전체와 각 코드가 가리키는 자리는 명세 5 절에 있습니다.