Metadata-Version: 2.4
Name: Mowkow
Version: 0.1.0
Summary: Mowkow: A Korean LISP Interpreter
Author-email: Gyun Woo <woogyun@pnu.edu>
Keywords: Korean,LISP,coding,programming,interpreter
Requires-Python: >=3.10
Description-Content-Type: text/markdown

# mowkow
머꼬: 한글 LISP

## 실행 방법
Python 3.10 이상을 설치한 후 다음 명령을 수행합니다.
```
python main.py
```
Windows 운영체제에서는 dist의 mk.exe를 다운로드하셔서 명령 프롬프트에서 다음과 같이 수행합니다.
```
mk.exe
```

종료하려면 그냥 엔터를 입력하면 됩니다.

## 테스트 입력

다음 입력을 수행해 보세요.

```
>  (+ 10 20)
30
>  (그대로 10)
10
>  (그대로 (+ 10 20))
30
>  (그대로 '(+ 10 20))
(+ 10 20)
>  (절댓값 (- 20))
오류: <내장함수 '-'>: 인수 개수 오류입니다.
>  (절댓값 (- 0 20))
20
>  (머 '(1 2 3))
1
>  (꼬 '(1 2 3))
(2 3)
>  (잠시 ((이 2) (삼 3)) (+ 이 삼))
5
>  (정의 (합 수) (만약 (= 수 0) 0 (+ 수 (합 (- 수 1)))))
>  (합 4)
10
>  (정의 합 (람다 (수) (만약 (= 수 0) 0 (+ 수 (합 (- 수 1))))))
>  (합 5)
15
>  (잠시 ((인수 5) (합 (람다 (수) (만약 (= 수 0) 0 (+ 수 (합 (- 수 1))))))) (합 인수))
15
```

## 테스트 프로그램
두 양수를 입력받아 최대공약수와 최소공배수를 구하는 프로그램(`gcd_lcm.mk`)의 예를 보면 다음과 같습니다.
```
(정의 (나머지 가 나)
      (- 가 (* (/ 가 나) 나)))

(정의 (최대공약수 가 나)
      (만약 (= 나 0)
            가
            (최대공약수 나 (나머지 가 나))))

(정의 (최소공배수 가 나)
      (/ (* 가 나) (최대공약수 가 나)))

(정의 가 (읽기))
(정의 나 (읽기))
(쓰기 (최대공약수 가 나))
(쓰기 (최소공배수 가 나))
```
위 프로그램은 다음과 같이 수행할 수 있습니다.
```
> python main.py gcd_lcm.mk
```


## 테스트 코드

테스트 코드 폴더의 테스트 파일 source.mk를 수행하려면 다음과 같이 수행하시면 됩니다.

```
python main.py test_code/source.mk
```

윈도우 실행 파일 mk.exe로 수행하시려면 다음과 같이 수행하시면 됩니다.
```
mk.exe test_code/source.mk
```

## Windows용 배치 파일

머꼬 프로그램 파일은 UTF-8 인코딩으로 작성해야 합니다.
`test_code`의 예제 프로그램도 그렇게 작성된 것입니다.
이를 Windows의 명령 프롬프트(`cmd`) 창에서 보려면 문자 인코딩을 UTF-8 인코딩으로 바꾸어야 합니다.
이때 다음 명령어를 사용하실 수 있습니다.

```
gomk
```

다시 원래 인코딩(code page 949, EUC-KR 호환)으로 명령 프롬프트를 회복하시려면 다음 명령어를 사용하시기 바랍니다.

```
kmog
```

## Authors

* **우균(Gyun Woo)** - *최초 작업* - [Gyun Woo](https://github.com/woogyun)


