Skip to content

nunalang/nuna

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

47 Commits
 
 
 
 
 
 

Repository files navigation

nuna

(우리의 가상) 누나 언어 v0.4

명세

변수 (variables)

누나 언어는 하나의 스택을 갖습니다.
내부 변수를 제외한 모든 변수는 이 스택에 저장됩니다.
스택의 아이템은 스택 번호(index)값(variable)로 구성되며 이때 값은 부호있는 정수형(signed integer)을 의미합니다.

변수 가르키기 (variable pointer)

누나 언어는 pointer라는 내부 변수를 갖습니다.
이는 현재 가르키고 있는 스택 번호를 의미합니다.
언어를 실행할때 pointer값은 0으로 초기화됩니다. 이는 아무 스택 번호도 가르키지 않음을 의미합니다.
pointer스택 번호가 같은 아이템을 현재 값이라고 합니다.
pointer - 1스택 번호가 같은 아이템을 이전 값 혹은 앞의 값이라고 합니다.

키워드 (keywards / operations)

,

스택에 1을 값으로 하는 아이템을 추가하고 pointer값에 1을 더합니다.
뒤에 .이 있을경우 .의 개수만큼을 값으로 합니다. 예제

,

현재 값에 1을 곱합니다.
뒤에 .이 있을경우 .의 개수만큼을 곱합니다. 예제

현재 값에 1을 뺍니다.
뒤에 .이 있을경우 .의 개수만큼을 뺍니다. 예제

현재 값에 1을 더합니다.
뒤에 .이 있을경우 .의 개수만큼을 더합니다. 예제

POP 작업을 수행합니다.
이때 POP작업이란 현재 값을 없는것(like undefined or None)으로 하고 포인터에서 1을 빼는 것을 의미합니다.
이 작업은 스택의 길이를 1만큼 줄입니다. 예제

이전 값을 의미합니다.
. 대신 사용할 수 있습니다. 예제

이전 값에서 현재 값을 뺍니다.
이전 값은 없는 것(like undefined or None)으로 합니다. 예제

현재 값에 1을 제곱합니다.
뒤에 .이 있을경우 .의 개수만큼을 거듭제곱합니다.
로 시작한 문장은 으로 끝나야 합니다. 예제

아무런 행동을 하지 않습니다.
로 시작한 문장을 끝낼때 사용합니다.

💕

이전 값에서 현재 값을 더합니다.
이전 값은 없는 것(like undefined or None)으로 합니다. 예제

!

현재 값을 UTF-8 인코딩 출력합니다.
대부분의 구현체가 출력으로 stdout을 사용합니다.

그 외

, , , , , ., , , , , , 💕, !가 아닌 다른 문자들은 문법 오류입니다.

.를 요구하지 않는 키워드에서 .를 사용할 경우 .는 무시됩니다. 예제

.를 요구하는 키워드에서 .가 사용되지 않은 경우 1으로 간주합니다.

이전 값을 요구하는 키워드를 사용할때 이전 값이 없을 경우 0으로 간주합니다. 예제

예제

눈나..흐.....읏..나주..거....흐...읏...
누..나..나...흐....읏..나주..거....💕
눈나.....나..흐...읏나.....주거...💕
누나..흐..읏나.......주..거......응읏..!

눈나..으흐읏
누으나.....주..흐....읏나....응
누나.....나..주...읏나......응!
  • @pmh-only님이 제작하셨습니다
  • 출력 결과: 누나

구현체

2021년 3월 13일 기준 구현체 목록입니다.

릴리즈 목록 (releases)

tag status released at contributors main commit
v0.4 stable 2021.03.17 @pmh-only, @Akiacode a4c922d
v0.3 stable 2021.03.07 @hui1601, @pmh-only, @Akiacode, @franknoh, @pl-Steve28-lq 0ee138b
v0.2 outdated 2021.02.23 @AkiaCode 96f8362
v0.1 unsupported - - -