Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

로드맵 #1

Open
18 of 25 tasks
RanolP opened this issue Oct 28, 2023 · 0 comments
Open
18 of 25 tasks

로드맵 #1

RanolP opened this issue Oct 28, 2023 · 0 comments

Comments

@RanolP
Copy link
Member

RanolP commented Oct 28, 2023

v0.1.0

간단한 브론즈 문제를 풀 수 있다. ✅
  • 정수의 입출력을 할 수 있다
    • 입력 구문 구현
    • 출력 구문 구현
  • 정수의 사칙연산을 할 수 있다
    • 표현식 구현
      • 사칙연산 구현
  • psl 런타임과 함께 C로 컴파일할 수 있다
    • 코드젠 구현
    • 런타임 구현

v0.1.1

조건문을 사용할 수 있다. ✅

v0.1.2

반복문을 사용하여 n번째 피보나치 수를 구할 수 있다.. ✅

v0.1.3

함수를 선언하고, 호출할 수 있다. ✅
  • 함수를 선언할 수 있다.
  • 선언한 모든 함수는 forward decl되고, 구현이 top-level로 추출되는 코드젠을 구현한다.
  • 함수를 호출할 수 있다.

v0.2.0

핵심 목표: 타입 체크가 되고, 오류 메시지를 볼 수 있다.

  • diagnostics crate를 분리한다
  • 컴파일러 diagnostics 시스템을 구현한다.
  • Visitor 작성 구조를 개선한다
  • TypeCheckPass를 만든다

v0.3.0

핵심 목표: 표준 라이브러리가 존재할 수 있다.

세부 목표

  • 모듈 시스템을 구현한다.
  • 정의되지 않은 외부 심볼에 접근할 수 없도록 한다.
  • 일부 테스트용 std를 구현한다. (min, max 등)

아직 순서 안 정한 것

  • 입출력에 파서 콤비네이터를 사용할 수 있다
    • 내장 파서 콤비네이터인 skip_whitespace, eof, 문자 리터럴 등을 사용할 수 있다
  • 자명한 경우에 한해 변수 타입 추론(auto)를 사용할 수 있다
  • 문자열을 다룰 수 있다
    • utf-8 문자열을 다룰 수 있다
  • 벡터를 다룰 수 있다
    • 상수 제너릭으로 벡터를 배열만큼의 비용만으로 쓸 수 있다
    • numpy식 reshape 고려
  • 레퍼런스를 만들 수 있다
  • 제너릭을 사용할 수 있다
    • 상수 제너릭을 사용할 수 있다
  • 부동 소숫점을 사용할 수 있다
  • bigint/bigdecimal을 사용할 수 있다
  • 다형성을 사용할 수 있다
  • for 문을 사용할 수 있다
  • 구조체를 사용할 수 있다
  • 람다를 사용할 수 있다
  • inline(always) 등의 attribute를 사용할 수 있다
  • typealias를 만들 수 있다
  • 비주얼 디버깅을 할 수 있다
  • directive를 지정할 수 있다 (i/o 버퍼 크기 등)
  • const 표현식을 사용할 수 있다
  • extern, compiler intrinsic을 적절히 기술할 수 있다
  • language server가 존재한다
    • 커스텀 타입 +는 배경색이 다르게?
  • Jupyter Notebook에서 사용할 수 있다
@RanolP RanolP pinned this issue Nov 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant