SKKOA; LTW Features

Starter Kit with Korean Oriented Architecture; Language to Write

현재 지원 현재 제한

기능 문서

현재 구현된 주요 기능은 아래와 같습니다.

  • .koa 파일 읽기, 토큰화, 파싱, AST 생성, 의미 분석
  • 정수, 실수, 논리, 문자, 문자열, 포인터 자료형
  • 변수와 상수, 산술/비교/논리 연산
  • 문자열 결합과 문자열 리터럴 출력
  • 정수/논리/실수/문자/문자열/포인터 입력과 출력, 공백/줄바꿈 기반 묶음 입력
  • 만약, 아니면만약, 아니면 조건문
  • 동안 반복문, 반복 i: 0부터 10까지 횟수 반복, 중단, 계속
  • 함수 정의와 호출, 레지스터 범위를 넘는 매개변수, 배열 매개변수, 구조체 참조 매개변수
  • 같은 타입 구조체 변수끼리의 전체 복사
  • 고정 크기 배열, 배열 리터럴 초기화와 재대입
  • 주소(x), 값(p), 할당(크기), 해제(p)
  • 길이, 비교, 부분문자열 문자열 표준 함수
  • 배열길이 배열 길이 조회 함수
  • 가져오기 "파일.koa" 모듈 가져오기
  • stack.koa, queue.koa, structures.koa 표준 모듈
  • NASM 어셈블리 생성과 실행 파일 링크

표준 라이브러리

표준 라이브러리는 자주 쓰는 기능을 미리 준비해 둔 것입니다.

바로 쓸 수 있는 기능

출력 "안녕하세요"
변수 age: 정수
입력 age

입력값은 공백이나 줄바꿈으로 구분해 한 번에 전달할 수 있습니다. 문자열 변수는 다음 줄 전체를 읽어 띄어쓰기를 보존합니다.

문자열 함수

출력 길이("SKKOA; LTW")
출력 비교("A", "B")
출력 부분문자열("SKKOA; LTW", 0, 2)
  • 길이(text): 글자 수를 알려줍니다.
  • 비교(a, b): 같으면 0을 돌려줍니다.
  • 부분문자열(text, start, length): 문자열 일부를 꺼냅니다.

메모리 함수

변수 p: 포인터<정수> = 할당(8)
해제(p)

배열 함수

변수 numbers: 정수[] = [10, 20, 30, 40]
출력 배열길이(numbers)

자료구조

SKKOA; LTW는 설치하면 스택과 큐 모듈을 함께 제공합니다.

가져오기 "stack.koa"
가져오기 "queue.koa"

둘 다 한 번에 쓰고 싶다면 아래처럼 가져올 수도 있습니다.

가져오기 "structures.koa"

스택

스택은 나중에 넣은 값을 먼저 꺼냅니다.

가져오기 "stack.koa"

시작
    변수 stack: 정수스택
    변수 data: 정수[5]

    스택초기화(stack, 5)
    스택넣기(stack, data, 10)
    스택넣기(stack, data, 20)

    출력 스택빼기(stack, data)
    출력 스택빼기(stack, data)
끝
  • 스택초기화(stack, 크기)
  • 스택넣기(stack, data, 값)
  • 스택빼기(stack, data)
  • 스택보기(stack, data)
  • 스택비었나(stack)
  • 스택가득찼나(stack)
  • 스택크기(stack)

큐는 먼저 넣은 값을 먼저 꺼냅니다.

가져오기 "queue.koa"

시작
    변수 queue: 정수큐
    변수 data: 정수[5]

    큐초기화(queue, 5)
    큐넣기(queue, data, 10)
    큐넣기(queue, data, 20)

    출력 큐빼기(queue, data)
    출력 큐빼기(queue, data)
끝
  • 큐초기화(queue, 크기)
  • 큐넣기(queue, data, 값)
  • 큐빼기(queue, data)
  • 큐보기(queue, data)
  • 큐비었나(queue)
  • 큐가득찼나(queue)
  • 큐크기(queue)

컴파일러

SKKOA; LTW 코드는 skkoa 명령으로 실행 파일을 만들 수 있습니다.

skkoa hello.koa

자주 쓰는 명령

skkoa hello.koa
skkoa hello.koa -o hello
skkoa hello.koa --emit-asm
  • 첫 번째 명령은 기본 이름으로 실행 파일을 만듭니다.
  • -o는 실행 파일 이름을 직접 정합니다.
  • --emit-asm은 중간 결과를 보고 싶을 때 사용합니다.

웹 컴파일러

웹 페이지의 컴파일러는 문법을 빠르게 확인하고 예제를 시험해 보는 곳입니다. 실제 실행 파일을 만들려면 다운로드한 skkoa 명령을 사용하세요.

예제

hello.koa

시작
    출력 "안녕하세요, SKKOA; LTW!"
끝

조건문

시작
    변수 score: 정수 = 85

    만약 score >= 80 이면
        출력 "통과"
    아니면
        출력 "실패"
    끝
끝

함수

함수 더하기(a: 정수, b: 정수): 정수
    반환 a + b
끝

시작
    출력 더하기(3, 4)
끝

배열

시작
    변수 numbers: 정수[] = [1, 2, 3]
    출력 numbers[0] + numbers[1] + numbers[2]
끝

제한 사항

  • 표준 자료구조 모듈은 현재 정수 스택과 정수 큐를 우선 제공합니다.
  • 스택과 큐는 저장용 정수 배열을 사용자가 함께 넘기는 방식입니다.
  • 구조체 배열, 구조체 값 반환, 구조체 리터럴은 현재 제한합니다.
  • 배열 전체 대입은 배열 리터럴만 지원합니다. 예: numbers = [1, 2, 3]
  • 모듈은 별도 네임스페이스 없이 소스 파일을 병합합니다.

기능 문서 맨 위로