마지막 수정: 2016-01-31

아희는 한글로 된 난해한 프로그래밍 언어입니다.

주의! 아래의 스펙은 미완성이며 뒷날에 바뀔 수 있습니다.

개요

인터프리터가 아희를 실행하는 방법은 befunge와 비슷합니다. 즉, 코드 공간 안에 커서가 있어서 커서가 위치한 곳에 적혀 있는 명령을 수행하고, 또 그 명령에 따라 커서가 움직이는 것입니다. 하지만, 그 코드가 ASCII가 아니라 한글이라는 점이 다릅니다.

한글은 홀소리와 닿소리로 나눌 수 있습니다. 홀소리는 커서가 이동할 방향을 지정하고, 닿소리는 인터프리터가 수행할 명령을 지정합니다. 받침이 있는 글자는 닿소리가 두 개가 되는데, 이 때 받침은 명령을 보조하는 인자로 작용합니다.

아희에서 쓰이는 저장 공간은 여러 개가 있습니다. 대부분이 스택이고, 큐가 하나 있습니다. 그리고 확장기능과 소통하는 통로가 있는데, 스택과 마찬가지로 씁니다. 집어넣기(push)로 인수를 전달하고 뽑아내기(pop)로 결과를 받아옵니다.

코드

홀소리

각 홀소리의 기능은 다음과 같습니다.

닿소리

각 닿소리의 기능은 다음과 같습니다.

ㅇ 묶음 - 받침은 모두 무시합니다.

ㄷ 묶음 - 셈. 받침은 모두 무시합니다.

ㅁ 묶음 - 저장공간

ㅂ의 경우 ㅇ, ㅎ 외의 나머지 받침이 있으면 그 받침을 구성하는 직선의 수와 원의 수의 합을 집어넣습니다. 받침이 없으면 0을 집어넣습니다.

 
22 3 5 4 4 2 3 4 3 4 4  
4 4 5 5 7 9 9 7 9 9 8 6 4

받침 중에는 1획인 것이 없는데, 1은 2/2나 3-2 같은 셈으로 간단하게 만들 수 있습니다. 예: 반밧나, 밪반타 등.

ㅅ 묶음 - 제어, 저장공간 확장

저장공간

예제

다음은 “Hello, world!”를 출력하는 프로그램입니다.

밤밣따빠밣밟따뿌
빠맣파빨받밤뚜뭏
돋밬탕빠맣붏두붇
볻뫃박발뚷투뭏붖
뫃도뫃희멓뭏뭏붘
뫃봌토범더벌뿌뚜
뽑뽀멓멓더벓뻐뚠
뽀덩벐멓뻐덕더벅

더 많은 코드는 코드를 참고하세요.