Skip to content

Latest commit

 

History

History
105 lines (80 loc) · 3.23 KB

README.md

File metadata and controls

105 lines (80 loc) · 3.23 KB

Nyanfmt

냥랭 언어를 위한 자동 코드 포맷터입니다.

포맷 규칙

기본적으로 냥랭 언어 위키의 코드 컨벤션 문서를 기준으로 작성되었으나, 문서만 가지고는 구현에 불명확한 부분이 많아 아래와 같이 수정하였습니다.

  1. [? 또는 !] 뒤에 [?! 가 아닌] 임의 종류의 토큰이 온다면, 그 두 토큰 사이에 공백을 삽입한다.
    예시: 냥!??,!냐 -> 냥!?? ,! 냐
  2. [. 또는 , 또는 ~ 또는 -] 뒤에 [ 또는 ]가 온다면, 그 두 토큰 사이에 공백을 삽입한다.
    예시: ~냥냥..-냐 -> ~ 냥냥..- 냐
  3. 종류가 같을 필요 없이 [ 또는 ] 가 6번 이상 반복된다면, 5개 단위로 나눠 사이사이에 공백을 삽입한다.
    예시: 냥냐냐냥냐냥냐냥냥냥냐냥?냐 -> 냥냐냐냥냐 냥냐냥냥냥 냐냥? 냐
  4. 그 외의 모든 경우, 토큰 사이의 공백을 제거한다.

Examples

포맷 전:

  ~?? ?냥냥냥 냥냥냥 -? ??- !- ?? .? .

포맷 후:

~? 냥냥?? 냥냥냥냥냥-??? -! -?? .? .

Usage

nyanfmt는 현재까지는 CLI 형태로 배포됩니다.
다음의 설명을 참고하여 사용해 주세요.

냥랭 코드 포맷 후 출력하기

nyanfmt ./파일명.nyan

포맷한 코드 저장하기

nyanfmt ./파일명.nyan --write

또는

nyanfmt ./파일명.nyan > ./파일명.nyan

TODO

현재 본 프로젝트는 완성되지 않은 상태입니다.
본 프로젝트의 완성도가 궁금하시거나, 어디서부터 기여하면 될지 잘 모르겠다면 아래 체크리스트를 확인해 주세요.

(?) 표시는 해당 항목을 진지하게 계획하지 않고 있거나, 추후 취소될 가능성이 높은 계획입니다.

  • 파서 작성
    • 기본 명령어 지원
    • 디버그 심볼 지원
    • 주석 지원
  • 포맷팅 규칙
    • 기본 포맷팅 구현
    • 주석 포맷팅 구현
    • 줄바꿈 지원
    • 포맷팅 규칙 문서화
  • 설정 지원
    • 코드 폭 설정
    • 인식할 수 없는 문자 제거 여부 설정
    • 주석 위치 설정
  • CLI
    • 포맷팅 결과 저장 기능
    • CLI 명령 문서화
    • CLI에 Brainfuck 번역 기능 내장
    • 여러 파일 / 디렉토리 단위 포맷팅
    • Stdin 입력
  • IDE 지원
    • VScode
    • Prettier Plugin(?)
    • Dprint Plugin

기여하기

냥랭에 관심이 있으신 분들 모두의 기여를 환영합니다.

특히 잘못 해석된/구현된 문법 파서, 포맷팅 규칙 등이 발견되는 경우 언제든지 이슈를 열어 주세요!

빌드 방법

  1. Rust 개발 환경을 준비합니다.
  2. 해당 저장소를 클론합니다.
    git clone https://github.com/abiriadev/nyanfmt
    cd nyanfmt
  3. 다음 명령을 실행해 빌드합니다.
    cargo build --release
  4. 다음 명령을 실행해 실행합니다.
    cargo run --release