기능 문서
현재 구현된 주요 기능은 아래와 같습니다.
-
.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] - 모듈은 별도 네임스페이스 없이 소스 파일을 병합합니다.