냥랭 언어를 위한 자동 코드 포맷터입니다.
기본적으로 냥랭 언어 위키의 코드 컨벤션 문서를 기준으로 작성되었으나, 문서만 가지고는 구현에 불명확한 부분이 많아 아래와 같이 수정하였습니다.
- [
?
또는!
] 뒤에 [?
나!
가 아닌] 임의 종류의 토큰이 온다면, 그 두 토큰 사이에 공백을 삽입한다.
예시:냥!??,!냐
->냥!?? ,! 냐
- [
.
또는,
또는~
또는-
] 뒤에 [냥
또는냐
]가 온다면, 그 두 토큰 사이에 공백을 삽입한다.
예시:~냥냥..-냐
->~ 냥냥..- 냐
- 종류가 같을 필요 없이 [
냥
또는냐
] 가 6번 이상 반복된다면, 5개 단위로 나눠 사이사이에 공백을 삽입한다.
예시:냥냐냐냥냐냥냐냥냥냥냐냥?냐
->냥냐냐냥냐 냥냐냥냥냥 냐냥? 냐
- 그 외의 모든 경우, 토큰 사이의 공백을 제거한다.
냥 ~?냥 냥? ?냥냥냥 냥냥냥 -? ??- !- ?? .? 냐.
냥~? 냥냥?? 냥냥냥냥냥 냥-??? -! -?? .? 냐.
nyanfmt는 현재까지는 CLI 형태로 배포됩니다.
다음의 설명을 참고하여 사용해 주세요.
nyanfmt ./파일명.nyan
nyanfmt ./파일명.nyan --write
또는
nyanfmt ./파일명.nyan > ./파일명.nyan
현재 본 프로젝트는 완성되지 않은 상태입니다.
본 프로젝트의 완성도가 궁금하시거나, 어디서부터 기여하면 될지 잘 모르겠다면 아래 체크리스트를 확인해 주세요.
(?) 표시는 해당 항목을 진지하게 계획하지 않고 있거나, 추후 취소될 가능성이 높은 계획입니다.
- 파서 작성
- 기본 명령어 지원
- 디버그 심볼 지원
- 주석 지원
- 포맷팅 규칙
- 기본 포맷팅 구현
- 주석 포맷팅 구현
- 줄바꿈 지원
- 포맷팅 규칙 문서화
- 설정 지원
- 코드 폭 설정
- 인식할 수 없는 문자 제거 여부 설정
- 주석 위치 설정
- CLI
- 포맷팅 결과 저장 기능
- CLI 명령 문서화
- CLI에 Brainfuck 번역 기능 내장
- 여러 파일 / 디렉토리 단위 포맷팅
- Stdin 입력
- IDE 지원
- VScode
- Prettier Plugin(?)
- Dprint Plugin
냥랭에 관심이 있으신 분들 모두의 기여를 환영합니다.
특히 잘못 해석된/구현된 문법 파서, 포맷팅 규칙 등이 발견되는 경우 언제든지 이슈를 열어 주세요!
- Rust 개발 환경을 준비합니다.
- 해당 저장소를 클론합니다.
git clone https://github.com/abiriadev/nyanfmt cd nyanfmt
- 다음 명령을 실행해 빌드합니다.
cargo build --release
- 다음 명령을 실행해 실행합니다.
cargo run --release