Skip to content

Jihyun3478/saegim-lang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

새김 언어 (Saegim Language)

새김은 한글로만 프로그래밍 할 수 있는 한글 프로그래밍 언어입니다. 표준어와 충청도 방언 버전, 총 2가지 버전을 지원합니다.
'밑바닥부터 인터프리터 만들기 in go' 책을 기반으로 제작했습니다.

지원 방언

확장자 버전 설명
.sg 표준어 Saegim (새김)
.hbg 충청도 방언 Haebolgyeo (해볼겨)

설치

git clone https://github.com/Jihyun3478/saegim-lang.git

사용법

표준어 버전 예제 파일 실행

go run main.go examples/hello.sg

충청도 방언 버전 예제 파일 실행

go run main.go examples/hello.hbg

기본 실행

go run main.go
=============================================
한글 프로그래밍 언어를 직접 사용해 보세요!
=============================================

모드를 선택하세요.
1. 표준어 버전
2. 충청도 방언 버전

선택: 1


 ███████╗ █████╗ ███████╗ ██████╗ ██╗███╗   ███╗
 ██╔════╝██╔══██╗██╔════╝██╔════╝ ██║████╗ ████║
 ███████╗███████║█████╗  ██║  ███╗██║██╔████╔██║
 ╚════██║██╔══██║██╔══╝  ██║   ██║██║██║╚██╔╝██║
 ███████║██║  ██║███████╗╚██████╔╝██║██║ ╚═╝ ██║
 ╚══════╝╚═╝  ╚═╝╚══════╝ ╚═════╝ ╚═╝╚═╝     ╚═╝

표준어 버전 - '새김' 언어

코드를 입력하세요 (종료 - exit)
-------------------------------
>> 변수 이름 = "지현";
>> 출력(이름);
지현
>> exit
안녕히 가세요.

표준어 버전(새김) 실행 영상

_._.mov

충청도 방언 버전(해볼겨) 실행 영상

_._.mov

REPL 모드 주의사항

  • REPL은 한 줄 단위로 파싱합니다.
  • 중괄호({})가 포함된 조건문, 함수 등은 한 줄로 입력해야 합니다.

문법

표준어

키워드 설명
변수 변수 선언
만약 if 조건문
아니면 else
true
거짓 false
함수 함수 정의
반환 return
출력 print (내장 함수)

충청도 방언

키워드 설명
변수 변수 선언
이쪽이에유 if 조건문
저쪽이에유 else
맞어유 true
아녀유 false
함수 함수 정의
도루 return
출력해유 print (내장 함수)

데이터 타입

  • 정수: 42, -10
  • 불리언: , 거짓 / 맞어유, 아녀유
  • 문자열: "안녕하세요"
  • 함수: 일급 객체
  • Null: 값 없음

연산자

산술 연산자

  • + 덧셈
  • - 뺄셈
  • * 곱셈
  • / 나눗셈

비교 연산자

  • < 작음
  • >
  • <= 작거나 같음
  • >= 크거나 같음
  • == 같음
  • != 다름

예제

Hello World

표준어 (hello.sg)

변수 이름 = "홍길동";
출력("안녕하세요, " + 이름 + "!");

충청도 (hello.hbg)

변수 이름 = "홍길동";
출력해유("안녕하세유, " + 이름 + "!");

조건문

표준어

변수 점수 = 85;
만약 (점수 >= 90) {
    출력("A학점");
} 아니면 {
    만약 (점수 >= 80) {
        출력("B학점");
    } 아니면 {
        출력("C학점");
    }
}

충청도

변수 점수 = 85;
이쪽이에유 (점수 >= 90) {
    출력해유("A학점");
} 저쪽이에유 {
    이쪽이에유 (점수 >= 80) {
        출력해유("B학점");
    } 저쪽이에유 {
        출력해유("C학점");
    }
}

함수

표준어

변수 더하기 = 함수(왼쪽, 오른쪽) {
    반환 왼쪽 + 오른쪽;
};

변수 결과 = 더하기(10, 20);
출력(결과);

충청도

변수 더하기 = 함수(왼쪽, 오른쪽) {
    도루 왼쪽 + 오른쪽;
};

변수 결과 = 더하기(10, 20);
출력해유(결과);

재귀 함수 (피보나치)

표준어

변수 피보나치 = 함수(숫자) {
    만약 (숫자 < 2) {
        반환 숫자;
    }
    반환 피보나치(숫자 - 1) + 피보나치(숫자 - 2);
};

출력(피보나치(10));

충청도

변수 피보나치 = 함수(숫자) {
    이쪽이에유 (숫자 < 2) {
        도루 숫자;
    }
    도루 피보나치(숫자 - 1) + 피보나치(숫자 - 2);
};

출력해유(피보나치(10));

패키지 구조

saegim-lang/
├── main.go              # 진입점
├── repl/                # REPL 모드
├── token/               # 토큰 정의
├── lexer/               # 렉서
├── parser/              # 파서
├── ast/                 # AST 노드
├── evaluator/           # 평가기
├── object/              # 객체 타입
└── examples/            # 예제 파일

관련 리포지토리


참고 자료


🔗 링크


제작자

About

한글 프로그래밍 언어 '새김' & 충청도 방언 버전 '해볼겨'를 제작했습니다.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages