lowstruct 매뉴얼←↑→
0.0.1 · 마크다운 매뉴얼에서 생성됨

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
end
server 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십육진·이진 정수
0755755 — 팔진 표기는 없습니다
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-MIX1 "one" . 이나 1 2.0 .한 문장에는 한 종류
E-LOWS-ORDERa 1 b 2 .경로마다 문장 하나
E-LOWS-DUP같은 키를 두 번한 번만 씁니다
E-LOWS-SHAPEa 1 . 과 a b 2 . 을 함께키는 값이나 키 가운데 하나만 담습니다
E-LOWS-SEALED블록을 다시 열거나 밖에서 더함블록의 키는 블록 안에 둡니다
E-LOWS-TAGtext·note 를 키로 씀, 잘못된 heredoc 첫 줄키 이름을 바꿉니다
E-LOWS-BOM · E-LOWS-CR · E-LOWS-UTF8파일 인코딩BOM 없는 UTF-8, 줄 끝은 LF 나 CRLF 로 저장합니다

코드 전체와 각 코드가 가리키는 자리는 명세 5 절에 있습니다.