Skip to content

Commit

Permalink
리드미, 줄랭 도큐먼트 등 문서 수정 중
Browse files Browse the repository at this point in the history
  • Loading branch information
zihasoo committed Dec 17, 2023
1 parent 8e6209f commit 93f021e
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 17 deletions.
42 changes: 27 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,38 +18,50 @@ LLVM을 기반으로 동작해 LLVM Infrastructure의 강력한 도구들을 활
## 목차

1. [시작하기](#시작하기)
2. [줄랭의 문법](#줄랭의-문법)
3. [코드 예시](#코드-예시)
4. [알려진 문제](#알려진-문제)
5. [줄랭 컴파일러](#줄랭-컴파일러)
6. [문법 지원 현황](#문법-지원-현황)
7. [참고 자료](#참고-자료)
2. [코드 예시](#코드-예시)
3. [알려진 문제](#알려진-문제)
4. [줄랭 컴파일러](#줄랭-컴파일러)
5. [문법 지원 현황](#문법-지원-현황)
6. [참고 자료](#참고-자료)

## 시작하기

빌드된 줄랭 컴파일러는 [다운로드 페이지](https://github.com/zihasoo/Zul-lang/releases) 를 참고하세요.

- 윈도우에서 줄랭 컴파일러를 실행했을 때 `msvcp140.dll이 없어 코드 실행을 진행할 수 없습니다`
와 같은 오류가 발생한다면 `microsoft visual c++ 2015-2019 redistributable`가 없는 것입니다.
대부분의 윈도우 프로그램이 해당 패키지를 요구하기 때문에 설치하는 것이 좋습니다.
[Microsoft Visual C++ 재배포 가능 패키지 다운로드](https://learn.microsoft.com/ko-kr/cpp/windows/latest-supported-vc-redist?view=msvc-170)
에서 설치 가능합니다.

줄랭 컴파일러의 코드를 수정하고, 빌드하고 싶다면 LLVM을 설치해야 합니다. 또한 cmake, C++ 빌드 시스템, C/C++ 컴파일러가 필요합니다.
줄랭 컴파일러의 코드를 수정하고, 직접 빌드하고 싶다면 LLVM을 설치해야 합니다. 또한 cmake, C/C++ 빌드 시스템, C/C++ 컴파일러가 필요합니다.
자세한 내용은 [줄랭 세팅 방법](./zullang_TMI.md#줄랭-세팅-방법)을 참고하세요.

## 줄랭의 문법
줄랭의 문법에 대한 설명은 [줄랭 Documentation](./zullang_documentation.md) 에서 확인하실 수 있습니다.

## 코드 예시:

"안녕 세상!"을 출력하는 가장 기본적인 줄랭의 코드 형태입니다. `시작` 함수가 프로그램 진입점이 됩니다.

```
ㅎㅇ 시작() 수:
출("안녕 세상!")
```

입력받은 숫자 번째의 피보나치 수를 출력하는 줄랭 코드입니다.

```
ㅎㅇ 피보나치(숫자: 수) 수:
ㅇㅈ? 숫자 <= 1:
ㅈㅈ 숫자
ㅈㅈ 피보나치(숫자 - 1) + 피보나치(숫자 - 2)
ㅎㅇ 시작() 수:
숫자: 수
입(숫자)
출(피보나치(숫자))
```

줄랭으로 구현한 퀵 정렬 알고리즘입니다. 기본적으로 C라이브러리와 링킹이 되기 때문에,
아래의 clock과 rand처럼 선언만 해준다면 C언어의 함수를 쉽게 사용할 수 있습니다.

줄랭의 주석은 //를 사용합니다. 다른 언어와 비슷한 줄 주석으로, //부터 줄 끝까지가 무시됩니다.

```
ㅎㅇ clock() 수
ㅎㅇ rand() 수
Expand Down
3 changes: 3 additions & 0 deletions zullang_TMI.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,9 @@
-DLLVM_DIR을 꼭 넣어주어야 합니다. 만약 릴리즈와 디버그 두 개의 빌드를 하려고 한다면, 릴리즈로 빌드할 때는 DLLVM_DIR에 릴리즈로 빌드한
LLVM의 경로를, 디버그로 빌드할때는 디버그로 빌드한 LLVM의 경로를 넣어주면 됩니다.

가끔 "Undefined symbols for architecture ~~" 로 시작하는 링커 에러가 뜨는 경우가 있는데,
이는 `-fno-rtti` 컴파일 옵션을 넣어주면 해결됩니다. cmake 옵션으로 넣어줘야 하므로 위의 명령에 `-DCMAKE_CXX_FLAGS=-fno-rtti`를 추가하면 됩니다.

이렇게 하면 모든 세팅이 끝나게 됩니다. LLVM을 빌드하는 것은 직접 명령어를 실행해서 진행하고, 줄랭 자체는 CLion같은 IDE를 통해
빌드 설정을 하는 것을 추천드립니다.

Expand Down
7 changes: 5 additions & 2 deletions zullang_documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@
## ㅎㅇ 키워드: (하이)

함수 또는 구조체를 정의할 때 사용하는 키워드입니다.
아래처럼 ()를 사용하면 함수, 그렇지 않으면 클래스입니다.
아래처럼 ()를 사용하면 함수, 그렇지 않으면 클래스입니다.
(클래스는 아직 지원되진 않지만, 미래의 사용을 위해 문법이 예약되어 있습니다.)

- `ㅎㅇ 함수이름():`
- `ㅎㅇ 클래스이름:`
Expand Down Expand Up @@ -101,7 +102,7 @@ c = 'a' (글자)

입 함수는 `입(a,b,c)` 과 같은 형식으로 사용하고, 이는 `scanf("%lld %lf %c", &a, &b, &c)` 와 똑같이 작동합니다.
줄랭 컴파일러가 정적 타입 추론 기능으로 포멧 문자열을 자동 생성하고, 실제 코드를 scanf 호출 구문으로 치환합니다.
따라서 `입(a)`도 가능하고, `입(a,b,c,d,e, .....)` 처럼 인자를 계속 넣을 있습니다.
따라서 `입(a)`도 가능하고, `입(a,b,c,d,e, .....)` 처럼 인자를 계속 넣을 수도 있습니다.

출 함수도 비슷합니다. `출(a,b,c)` 을 사용하면, `printf("%lld %lf %c\n", a, b, c)` 로 변환됩니다.
`출()`처럼 아무것도 넣지 않으면 `printf("\n")`로 추론되기 때문에, 빈 줄만 출력됩니다.
Expand All @@ -113,6 +114,8 @@ c = 'a' (글자)

배열은 기본적으로 %p로 추론되고, '글자' 배열만 예외적으로 %s로 지정되어 있습니다.

'논리' 자료형은 %u로 추론되긴 하나, C언어에는 1비트 자료형이 없기 때문에 printf와 scanf가 정상 작동하지 않습니다. 사용하지 않는 것을 권장합니다.

## 변수 생성:

변수 생성은 3가지 방법으로 할 수 있습니다.
Expand Down

0 comments on commit 93f021e

Please sign in to comment.