Skip to content

문법 및 연산자 (Syntax & Operators)

Zephyr는 현대적인 시스템 프로그래밍 언어에서 영감을 받은 중괄호 기반 문법을 사용합니다. 대소문자를 구분하며, 문장 종료를 위해 세미콜론(;)이 필요합니다.

주석 (Comments)

Zephyr는 단일 행 및 다중 행 주석을 모두 지원합니다.

zephyr
// 단일 행 주석입니다.

/* 
   다중 행
   주석입니다.
*/

키워드 (Keywords)

다음 단어들은 예약어이므로 식별자로 사용할 수 없습니다:

fnletmutreturnyieldifelse
whileforinbreakcontinuematchstruct
enumtraitimplimportexportcoroutine

식별자 (Identifiers)

식별자는 반드시 문자(a-z, A-Z) 또는 언더스코어(_)로 시작해야 합니다. 그 다음 문자부터는 문자, 숫자(0-9), 또는 언더스코어를 포함할 수 있습니다.

zephyr
let variable_name = 10;
let _privateCounter = 0;
let camelCase = true;

스코프 (Scoping)

Zephyr는 **어휘적 스코프(Lexical Scoping)**를 채택하고 있습니다. 중괄호 {}를 사용하여 새로운 스코프를 생성합니다. 블록 내부에서 선언된 변수는 블록 외부에서 접근할 수 없습니다.

zephyr
let x = 10;
{
    let x = 20; // 외부 x를 섀도잉합니다.
    print(x);   // 20을 출력합니다.
}
print(x);       // 10을 출력합니다.

세미콜론 (Semicolons)

모든 문장은 세미콜론(;)으로 종료되어야 합니다. 이는 변수 선언, 표현식, 블록 내부의 제어 흐름 문장 등을 포함합니다.

zephyr
let a = 1;
let b = 2;
print(a + b);

타입 어노테이션 (Type Annotations)

Zephyr는 타입 추론 기능을 제공하지만, : 문법을 사용하여 타입을 명시적으로 지정할 수도 있습니다.

zephyr
let count: int = 0;
fn add(a: int, b: int) -> int {
    return a + b;
}

any 타입을 사용하면 특정 바인딩에 대한 정적 타입 검사를 우회할 수 있습니다.

zephyr
let dynamic_val: any = 42;
dynamic_val = "이제 문자열입니다";

임포트 및 엑스포트 (Imports & Exports)

Zephyr는 각 파일이 독립적인 모듈인 모듈 시스템을 사용합니다.

임포트 (Imports)

zephyr
import "std/math";                     // 기본 임포트 (모든 export 포함)
import "utils" as u;                   // 네임스페이스 별칭
import { sqrt, abs } from "std/math";  // 명명된 임포트 (전용)

엑스포트 (Exports)

zephyr
export fn greet(name: string) -> void {
    print(f"Hello, {name}!");
}

export struct Point { x: float, y: float }

자세한 내용은 모듈 페이지를 참조하세요.

리터럴 (Literals)

Zephyr에서 기본적으로 지원하는 리터럴 형태입니다:

  • 숫자: 100, 3.14
  • 불리언 및 널: true, false, nil
  • 배열: [1, 2, 3]
  • 포맷팅 문자열 (f-string): f"hp={value}"