Skip to content

Nyanlang/nyanfmt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Auto formatter for nyanlang 🐱

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages