-
requirements
- Java (JDK 8+)
- Python 3
- GCC/G++ (C++17 support)
-
run.sh스크립트를 실행하여 파서와 인터프리터를 빌드합니다../run.sh
-
생성된
sekc스크립트로.sekc파일을 실행합니다../sekc <filename.sekc>
상태 변경 (Mutation)
set 키워드를 사용하여 기존 변수의 값을 변경하거나 설정합니다.
set 10 in x
set "Hello" in message
바인딩 (Binding)
=> 연산자를 사용하여 불변 값을 바인딩합니다.
pi => 3.14
x => 10
함수 정의 (Definitions)
define 키워드를 사용합니다. Python과 유사하게 들여쓰기(Indentation)로 블록을 구분합니다.
define add(a, b)
return a + b
이렇게 단일 표현식으로 쓸 수도 있음
define square(x) => x * x
익명 함수 (Anonymous Func)
(x) => x * x
함수 호출
add(10, 20)
square(5)
조건문 (Conditionals)
if x is 10
print "Ten"
(현재 else는 구현되지 않음)
반복문 (Loops)
repeat while 구문을 사용합니다.
repeat while count < 10
print count
set count + 1 in count
break: 루프 종료continue: 다음 반복으로 이동return value: 함수 반환
출력 (Print) 표현식을 평가하여 표준 출력에 출력합니다.
print "Hello World"
print 10 + 20
입력 (Read) 사용자 입력을 받아 변수에 저장합니다.
read input into name
print name
- 산술:
+,- - 논리:
and,or,not - 비교:
is(동등),is not(부등) - 파이프:
->(값 전달)10 -> print # print(10)과 동일
- Number: 실수형 (Double)
- String: 큰따옴표로 감싼 문자열 (
"Text") - Boolean:
true,false - Null:
null
"모든 것은 함수이자 객체입니다."
별도의 class 키워드 없이, 함수(클로저)를 통해 데이터를 캡슐화하고 객체를 생성합니다. 리액트 훅(React Hook)이나 JS의 팩토리 패턴과 유사합니다.
객체 리터럴 (Object Literal) 데이터 묶음을 표현합니다.
me => { name: "Sekc", age: 1 }
print me.name
상태를 가진 컴포넌트 (Stateful Component) 함수 내부 변수(Closure)를 통해 상태를 관리합니다.
define Counter(start)
# 1. 상태 (State) - 클로저에 의해 캡슐화됨
set start in count
# 2. 메서드 (Methods)
define up()
set count + 1 in count
return count
# 3. 인터페이스 반환 (Return Interface)
return {
increment: up,
current: () => count
}
# 사용 (Usage)
c => Counter(10)
print c.increment() # 11
print c.increment() # 12
싱글톤 (Singleton) 함수를 실행한 결과를 바로 바인딩하면 싱글톤이 됩니다.
GlobalConfig => (define()
return { theme: "Dark" }
)()
구조 분해 (Destructuring) 복잡한 데이터를 직관적으로 풀어서 바인딩합니다.
[x, y] => point
print x
print y