주 메뉴 열기

아희는 Puzzlet Chung이 만든 한글로 쓰는 난해한 프로그래밍 언어이다. 아희의 코드 공간 안에는 커서가 있어서 커서가 위치한 곳에 적혀 있는 명령을 수행하고, 또 그 명령에 따라 커서가 움직인다. 인터프리터가 아희를 실행하는 방법은 befunge와 비슷하다.

문법편집

한글은 홀소리와 닿소리로 나눌 수 있는데 아희 코드의 홀소리는 커서가 이동할 방향을 지정하고, 닿소리는 인터프리터가 수행할 명령을 지정한다. 받침이 있는 닿소리 글자는 명령을 보조하는 인자로 작용한다.

닿소리편집

ㅇ 묶음 : 받침은 모두 무시한다.

  • ㅇ: 없음 명령으로 아무 일도 하지 않는다.
  • ㅎ: 끝냄 명령으로 커서의 실행을 끝낸다. 이 때 현재 선택된 저장 공간에 값이 하나 이상 남아 있으면 ㅁ 명령으로 뽑아낼 수 있는 값을 뽑아내 운영체제에 돌려 준다. 저장 공간이 비어 있으면 0을 돌려준다.

ㄷ 묶음 : 셈. 받침은 모두 무시한다.

  • ㄷ : 덧셈 명령으로 저장공간에서 두 값을 뽑아낸 다음 둘을 더한 값을 저장공간에 집어넣는다.
  • ㄸ : 곱셈 명령으로 저장공간에서 두 값을 뽑아낸 다음 둘을 곱한 값을 저장공간에 집어넣는다.
  • ㅌ : 뺄셈 명령으로 저장공간에서 두 값을 뽑아낸 다음 나중 값에서 먼저 값을 뺀 값을 저장공간에 집어넣는다.
  • ㄴ : 나눗셈 명령으로 저장공간에서 두 값을 뽑아낸 다음 나중 값에서 먼저 값을 나눈 값을 저장공간에 집어넣는다.
  • ㄹ : 나머지 명령으로 저장공간에서 두 값을 뽑아낸 다음 나중 값에서 먼저 값을 나눈 나머지를 저장공간에 집어넣는다.

ㅁ 묶음 : 저장공간

  • ㅁ : 뽑기 명령이다. 지금 저장공간이 스택이라면 맨 위의 값, 큐라면 맨 앞의 값을 뽑아낸다. 통로라면 거기서 값을 하나 뽑아온다.
    • ㅇ 받침이 오면 뽑아낸 값을 10진수로 출력합니다.
    • ㅎ 받침이 오면 뽑아낸 값에 해당하는 코드포인트의 유니코드 문자를 UTF-8로 출력한다.
    • 다른 받침이 오면 뽑아낸 값을 버린다.
  • ㅂ : 집어넣기 명령이다. 지금 저장공간이 스택이라면 맨 위에, 큐라면 맨 뒤에 값을 집어넣는다. 통로라면 값을 하나 보낸다.
    • ㅇ 받침이 오면 표준 입력에서 정수 문자열을 받아 이에 해당하는 값을 지금 저장공간에 집어넣는다.
    • ㅎ 받침이 오면 표준 입력에서 UTF-8로 유니코드 문자를 받아 이에 해당하는 유니코드 코드포인트를 지금 저장공간에 집어넣는다.
    • ㅇ이나 ㅎ이 아닌 받침에 대해서는 각각 상수를 저장공간에 집어넣는다.
2 2 3 5 4 4 2 3 4 3 4 4
ㄱㅅ ㄴㅈ ㄴㅎ ㄹㄱ ㄹㅁ ㄹㅂ ㄹㅅ ㄹㅌ ㄹㅍ ㄹㅎ ㅂㅅ
4 4 5 5 7 9 9 7 9 9 8 6 4
  • ㅃ : 중복 명령이다. 지금 저장공간이 스택이라면 맨 위의 값을 그 값 위에 하나 더 집어넣고, 큐라면 맨 앞의 값을 앞에 하나 더 덧붙인다.
  • ㅍ : 바꿔치기 명령이다. 지금 저장공간이 스택이라면 맨 위 값과 그 바로 아래 값을, 큐라면 맨 앞의 값과 그 바로 뒤 값을 바꾼다.

홀소리편집

  • ㅏ, ㅓ, ㅗ, ㅜ : 커서를 각각 오른쪽, 왼쪽, 위, 아래로 한 칸 옮긴다.
  • ㅑ, ㅕ, ㅛ, ㅠ : 커서를 각각 오른쪽, 왼쪽, 위, 아래로 두 칸 옮긴다.
  • ㅡ : 커서가 가로로 왔으면 그 방향과 크기 그대로, 세로로 왔으면 전에 있던 자리로 옮기고 진행 방향을 뒤집는다.
  • ㅣ : 커서가 세로로 왔으면 그 방향과 크기 그대로, 가로로 왔으면 전에 있던 자리로 옮기고 진행 방향을 뒤집는다.
  • ㅢ : 커서를 전에 있던 자리로 옮기고 진행 방향도 뒤집는다.
  • ㅐ ㅔ ㅒ ㅖ ㅘ ㅙ ㅚ ㅝ ㅞ ㅟ :기능 없음 (커서가 이동하는 방향과 크기는 변하지 않는다.)[1]

예제편집

Hello, world!편집

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

같이 보기편집

각주편집

외부 링크편집