Metadata-Version: 2.1
Name: namu
Version: 0.0.4
Summary: 한글 프로그래밍 언어 '나무'를 실행할 수 있는 패키지입니다.
Home-page: https://repl.it/@prnm789/namupackage
Author: prnm789
Author-email: prnm789@gmail.com
License: UNKNOWN
Description: # 한글 프로그래밍 언어 "나무"
        "나무"는 코딩 입문자가 쉽게 사용할 수 있는 한글 프로그래밍 언어입니다.
        # 도움말
        ## 시작하기
        ### 인터프리터 실행하기
        1. 당연하게도(?) 나무를 실행하기 위해 파이썬을 설치합니다.
        2. 터미널이나 Shell 창에 `pip install namu`를 입력합니다.
        3. 파이썬 파일에
           ```python
           import namu
           namu.interpreter()
           ```
           을 입력하고 실행시키면...!
        4. 콘솔창에서 나무 인터프리터가 실행됩니다!!
        ## 문법
        ### 1. 코드 작성
        나무는 파이썬처럼 하나의 줄에 한 문장을 입력합니다.
        
        #### **줄 구분**
        
        나무는 `CRLF`와 `LF`, `;`(세미콜론)으로 줄을 구분합니다.
        한 줄에는 하나의 문장만이 들어가지만 (), {}, [] 등의 괄호쌍 내부에서는 줄구분을 하지 않습니다.
        따라서 배열 등은 여러 줄에 걸쳐 사용할 수 있습니다.
        
        #### **확장자**
        
        나무는 `.namu`와 `.나무`를 사용하지만 현재는 아무 확장자로 해도 작동됩니다.
        나중에 특정 확장자만 쓸 수 있게 할 계획이 있습니다.
        
        #### **주석**
        
        `#`(샵) 문자 뒤에 있는 코드는 주석으로 처리되어 실행되지 않습니다.
        (단, 인터프리터에서 사용하시면 에러가 납니다.)
        
        ### 2. 값
        현재 나무에서는 5가지의 값들을 지원합니다.
        
        #### **수**
        * 정수: `1`, `12`, `2021`
        * 실수: `0.1`, `3.14`, `10.22`
        
        #### **문자열**
        * 따옴표나 쌍따옴표로 둘러싸여 있는 값은 문자열로 해석됩니다.
          * `'안녕, 세상!'`, `"한글 프로그래밍 언어 나무"`
        
        #### **논리형**
        * 아직 논리형은 구현이 안되있고 `1`과 `0`이 대신하고 있습니다.
        * `참`과 `거짓` 내장 변수가 있는데, `참`은 `1`, `거짓`은 `0`을 반환합니다.
        * 조건문 등에서 사용할 수 있습니다.
        
        #### **없음**
        * 내장 변수 `없음`은 JS에서 `undefined`와 `null`, 파이썬에서 `None`의 역할을 합니다.
        * 내장 변수 `없음`은 0을 반환합니다.
        
        #### **배열**
        * 여러개의 값들을 하나로 묶은 값입니다. 대괄호쌍 안에 쉼표로 구별해 입력합니다.
          * `[1, "이", [3.1, "배열", 참]]`
        * 배열 안의 값은 대괄호를 이용해 접근할 수 있습니다.
          * `[1, "2", "삼"][1]`은 배열의 2번째 원소인 `"2"`입니다.
          * 첫번째 원소의 인덱스는 `0`입니다.
          * 현재 배열의 원소의 내용을 바꾸는 기능(`배열[인덱스] = 값`)은 아직 구현되지 않았습니다.
        
        #### **객체**
        * 아직 구현되지 않았습니다.
        
        ### 3. 연산자
        #### **산술 연산자**
        * 숫자는 `+ - * / ^`로 사칙연산을 할 수 있습니다(^는 거듭제곱입니다.).
          * `28+42`, `10/2*10`, `2+2*2`
        * 또 숫자는 `+ -`로 양수와 음수를 나타낼 수 있습니다.
          * `+29`, `-3`
        * 문자열은 `+`로 문자열을 합치고, `*`로 문자열을 반복할 수 있습니다.
          * `"안녕, " + "세상!"`, `"그" * 4 + " 뭐더라"`
        * 배열은 `+`로 항목을 추가하고, `-`로 항목을 뺄 수 있으며, `*`로 배열에 배열을 합칠 수 있습니다.
          * ```python
            배열 = [1, "이", "three"]
            배열 + "2+2" #[1, "이", "three", "2+2"]
            배열 - 2 #[1, "이", "2+2"]
            배열 * [5, "六"] #[1, "이", "2+2", 5, "六"]
            콘솔에_보여주기(배열) #[1, "이", "2+2", 5, "六"]
            ```
          
        #### **비교 연산자**
        * 값이 같은지는 `==`로, 값이 다른지는 `!=`로 확인합니다.
          * `10 * 10 == 100`, `"가나다" != "라마바"`
        * 숫자는 `< > <= >=`로 비교할 수 있습니다.
          * `1 < 2`, `39 > 29`
        
        #### **논리 연산자**
        * AND 연산자 `&`는 왼쪽과 오른쪽 모두가 참(1)인 경우에만 1(참)로 처리합니다.
          * `참 & 참`, `10 == 10 & 38 < 73`
        * OR 연산자 `|`은 왼쪽과 오른쪽 중 하나라도 참(1)이면 1(참)로 처리합니다.
          * `29>=29 | 87>3`, `"ㄷㄷ" == "ㄷㄷ" | 28 == 39`
        * NOT 연산자 `!`는 1(참)이나 0(거짓)을 반대로 뒤집습니다.
          * `!거짓`, `!27 > 72`
        
        #### **괄호**
        * 괄호를 사용하면 계산 순서를 바꿀 수 있습니다.
          * `2 + 2 * 2`는 `6`, `(2 + 2) * 2`는 `8`
          * `-1 < 2 < 1`는 `0`(거짓), `-1 < (2 < 1)`는 `1`(참)
        ### 4. 변수
        #### **변수 선언**
        * 변수 선언은 `=`을 이용합니다.
          `변수명 = 값` 형식으로 선언하며, 값을 갱신할 때에도 같은 문법을 사용합니다.
        * 변수 이름은 한글, 알파벳, 숫자, `_`(언더바), `$`(달러)를 사용할 수 있습니다.
          숫자는 변수의 첫 글자에 올 수 없으며, 변수명으로 내장 함수나 내장 변수의 이름을 사용할 수 없습니다.
        
        #### **변수 불러오기**
        * 변수는 `변수명`으로 불러옵니다.
        
        #### **예시**
        ```python
        올해 = 2021
        콘솔에_보여주기(올해) #2021
        ```
        
        #### **내장 변수**
        * 내장 변수는 나무에서 기본으로 지원하는 변수로, 수정이 불가능합니다.
        * 내장 변수 목록은 다음과 같습니다.
        
          |이름|값|
          |---|---|
          |`참`|`1`|
          |`거짓`|`0`|
          |`없음`|`0`|
          |`원주율`|`π(3.14159...)`
          
        ### 4. 제어문
        #### **조건문**
        * 나무에서 조건문을 쓸 때에는 `만약` 키워드를 사용합니다.
        * 조건문 형식은 다음과 같습니다.
          ```python
          만약 조건1 라면/이라면
          	#조건1이 1(참)일 때 실행될 내용
          아니면서 조건2 라면/이라면
          	#조건1이 0(거짓)이면서 조건2가 1(참)일 때 실행될 내용
          아니면
          	#조건1과 조건2 모두 0(거짓)이면 실행될 내용
          끝
          ```
          `아니면서`와 `아니면`은 생략 가능하며, `라면`과 `이라면` 둘 다 사용 가능합니다.
        
        #### **반복문**
        * 나무에서 반복문을 쓸 때에는 `반복하기` 키워드를 사용합니다.
        * 반복은 `반복 그만`으로 멈춥니다.
        * 반복문 형식은 다음과 같습니다.
          ```python
          반복하기
          	#반복할 동안 실행될 내용
          	
          	만약 조건1 이라면
          		반복 그만
          	끝
          끝
          ```
        
        ### 5. 함수
        #### **함수 선언하기**
        * 나무에서는 `함수` 키워드로 함수를 선언합니다.
        * 다음은 함수 선언 예시입니다.
          ```python
          함수 함수명(매개변수1, 매개변수2, ...)
          	#함수 내용
          	
          	리턴 리턴값
          끝
          ```
          매개변수는 생략 가능합니다.
          단, 괄호는 꼭 넣어야 합니다.
        
        ##### **리턴**
        * 나무의 함수에서는 `리턴 리턴값`으로 리턴을 합니다.
        
        #### **함수 불러오기**
        * 함수는 `함수명(매개변수1, 매개변수2, ...)`로 불러오며, 매개변수는 생략 가능합니다.
          단, 괄호는 꼭 넣어야 하며 괄호를 넣지 않으면 `<함수 함수명>`이 반환됩니다.
        
        #### **익명 함수**
        * 나무에서 익명 함수를 선언할 때에도 일반 함수를 선언하는 것처럼 `함수` 키워드를 사용합니다.
        * 다음은 익명 함수 선언 예시입니다.
          ```python
          함수명 = 함수(매개변수1, 매개변수2, ...)
          	#함수 내용
        
          	리턴 리턴값
          ```
          마찬가지로 매개 변수는 생략 가능하지만, 괄호는 꼭 넣어야 합니다.
        
        #### **내장 함수**
        * 내장 함수는 나무에서 기본으로 지원하는 함수로, 수정이 불가능합니다.
        * 다음은 나무의 내장 함수 목록입니다.
        
          |이름|설명|
          |---|---|
          |`콘솔에_보여주기(내용)`|`내용`을 콘솔에 보여줍니다.|
          |`콘솔_지우기()`|콘솔의 모든 내용을 지웁니다.|
          |`숫자인가(값)`|`값`이 숫자면 `1`(참), 아니면 `0`(거짓)을 반환합니다.|
          |`문자열인가(값)`|`값`이 문자열이면 `1`(참), 아니면 `0`(거짓)을 반환합니다.|
          |`배열인가(값)`|`값`이 배열이면 `1`(참), 아니면 `0`(거짓)을 반환합니다.|
          |`함수인가(값)`|`값`이 함수면 `1`(참), 아니면 `0`(거짓)을 반환합니다.|
          |`기다리기(초)`|`초`의 값만큼 기다립니다.|
          |`문자열로(값)`|`값`을 문자열로 바꾼 것을 반환합니다.|
          |`실행하기(파일명)`|이름이 `파일명`인 파일을 컴파일하고 실행합니다.|
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.6
Description-Content-Type: text/markdown
