SKKOA; LTW는 Starter Kit with Korean Oriented Architecture; Language to Write를 뜻하며, 한국어 기반 문법을 사용하는 교육용 프로그래밍 언어이다.
이 저장소는 다음을 포함한다.
- SKKOA; LTW 소개 웹사이트
- 정적 HTML 문서 웹 페이지와 Markdown 문서 원문
- 브라우저용 문법 미리보기 / 예제 실행 시뮬레이터
- C++17로 작성된 x86-64용 NASM 기반 CLI 컴파일러
- Windows 전용 데스크톱 IDE
SKKOA Studio - 다운로드 설치 시 함께 제공되는 표준 모듈(
stack.koa,queue.koa,structures.koa)
수동 빌드에 필요한 도구:
- C++17 컴파일러
- CMake 또는 C++17 직접 빌드 환경
- NASM
- GCC 또는 Clang
- x86-64 Windows, Linux, macOS 환경
웹사이트의 Download 버튼은 Windows IDE 설치 파일 SKKOA-Studio-Setup-x64.exe를 기본으로 내려받는다. CLI 컴파일러용 운영체제별 파일은 /download/ 페이지에서 선택할 수 있다.
-
SKKOA Studio IDE:
/download/studio/에서 Windows 10/11 x64용 설치 관리자를 받을 수 있다. -
Windows:
skkoa-windows.exe가 UI에서 설치 위치와 설정을 받은 뒤 SKKOA; LTW CLI, MSYS2 GCC, NASM을 함께 설치한다. 명령줄 설치가 필요하면skkoa-windows.cmd또는skkoa-windows.ps1을 사용할 수 있다. -
macOS:
skkoa-macos.command가 Xcode Command Line Tools, Homebrew, NASM을 확인하고 설치한다. -
Linux:
skkoa-linux.sh가 배포판 패키지 관리자로 GCC와 NASM을 설치한다.
설치 파일은 필요한 도구를 함께 준비하므로 별도로 C++ 컴파일러, NASM, GCC를 미리 설치하지 않아도 된다. 인터넷 연결과 OS별 설치 권한은 필요하다. 또한 설치 파일은 표준 모듈을 함께 설치한다.
Linux 터미널에서는 다음처럼 받을 수 있다.
curl -fsSL https://skkoa.toyotech.dev/compiler/download/skkoa-install.sh -o skkoa-install.sh
bash skkoa-install.sh
skkoa hello.koa저장소를 직접 받은 경우에는 아래처럼 수동 빌드할 수 있다.
cd compiler
cmake -S . -B build
cmake --build build
./build/skkoa examples/hello.koa -o hello
./helloSKKOA; LTW는 가져오기 "파일.koa" 문법으로 다른 파일을 가져온다.
가져오기 "stack.koa"
가져오기 "queue.koa"
다운로드 설치 후에는 아래 모듈을 바로 사용할 수 있다.
stack.koa:정수스택,스택초기화,스택넣기,스택빼기,스택보기,스택비었나,스택가득찼나,스택크기queue.koa:정수큐,큐초기화,큐넣기,큐빼기,큐보기,큐비었나,큐가득찼나,큐크기structures.koa: 스택과 큐를 한 번에 가져오는 묶음 모듈
현재 스택과 큐는 정수 전용 모듈이다. 값을 저장할 배열은 사용자가 준비하고, 구조체는 위치와 크기 같은 상태를 보관한다.
가져오기 "stack.koa"
시작
변수 stack: 정수스택
변수 data: 정수[5]
스택초기화(stack, 5)
스택넣기(stack, data, 10)
스택넣기(stack, data, 20)
출력 스택빼기(stack, data)
끝
모듈 검색 순서:
- 가져오기를 작성한
.koa파일의 폴더 SKKOA_LIB_PATH환경 변수에 들어 있는 폴더SKKOA_HOME/libSKKOA_INSTALL_ROOT/lib- 기본 설치 위치: Windows
%LOCALAPPDATA%\SKKOA\lib, Linux/macOS$HOME/.skkoa/lib - 개발용 현재 작업 폴더의
lib,compiler/lib
확장자를 생략하면 .koa를 자동으로 붙여서 한 번 더 찾는다. 예를 들어 가져오기 "stack"도 stack.koa를 찾는다. 같은 모듈을 여러 번 가져와도 한 번만 포함한다.
./build/skkoa examples/hello.koa --emit-asm -o hello.asm
./build/skkoa examples/function.koa --emit-ast입력은 정수, 논리, 실수, 문자, 포인터 값을 공백이나 줄바꿈으로 구분해 순서대로 읽는다. 문자열 변수는 다음 줄 전체를 읽으므로 문자열 안의 띄어쓰기를 보존한다.
시작
변수 left: 정수
변수 right: 정수
변수 name: 문자열
입력 left
입력 right
입력 name
출력 left + right
출력 name
끝
위 프로그램에는 아래처럼 값을 한 번에 넣을 수 있다.
10 32
Daniel Kim
온라인 컴파일러의 Console 입력창도 같은 규칙으로 공백과 줄바꿈이 섞인 입력을 한 번에 받을 수 있다.
.koa파일 읽기- 토큰화, 파싱, AST 생성, 의미 분석
- 정수 변수와 상수
- 실수, 문자, 문자열 변수
- 정수 산술/비교 연산
- 실수 산술/비교 연산
- 문자열 결합
- 논리 값과 논리 연산
- 문자열 리터럴 출력
- 정수/논리/실수/문자/문자열/포인터 입력, 공백/줄바꿈 기반 묶음 입력
- 조건문,
동안반복문 반복 i: 0부터 10까지횟수 반복- 반복문 안의
중단,계속 - 정수, 실수, 논리, 문자, 문자열, 포인터, 배열 매개변수 함수
- 레지스터 범위를 넘는 함수 매개변수
- 구조체 변수, 필드 읽기/쓰기, 구조체 참조 매개변수, 같은 타입 구조체 복사
- 고정 크기 배열과 배열 리터럴 초기화/재대입
- 배열 길이 조회 함수
배열길이 주소(x),값(p)포인터 읽기와값(p) = ...포인터 쓰기할당(크기),해제(p)기본 동적 메모리 호출- 문자열 표준 함수
길이,비교,부분문자열 가져오기 "파일.koa"모듈 가져오기stack.koa,queue.koa,structures.koa표준 모듈- NASM 어셈블리 생성과 실행 파일 링크
- 표준 자료구조 모듈은 현재 정수 스택과 정수 큐를 우선 제공한다.
- 스택과 큐는 내부 저장 배열을 구조체 필드로 숨기지 않고, 사용자가 정수 배열을 함께 넘기는 방식이다.
- 구조체 배열, 구조체 값 반환, 구조체 리터럴은 현재 제한한다.
- 모듈은 별도 네임스페이스 없이
가져오기 "파일.koa"형태로 소스를 병합한다.
cd compiler
./tests/run_tests.sh