Giter Club home page Giter Club logo

kemonofriendslanguage's Introduction

Kemono Friends Language - 슥語2(SuGGoi2)

Title Logo

Fun! Awesome! Programming Language!
즐겁다! 굉장하다! 프로그래밍 언어!
たのしい! すごい! プログラミング 言語!

Welcome to ようこそジャパリパーク!
うー!がぉー!

Hello, World!

  • English
# Print Function
friends English
    '0'
    tanoshi!
    "!dlroW ,olleH"
    uwa~
    omoshiro!
    sugoi!
    wai~
# Main Function
youkoso
    sandstar English
  • Korean
# Print Function
프렌즈 Korean
    '0'
    타노시!
    "!dlroW ,olleH"
    우와~
    오모시로!
    스고이!
    와이~
# Main Function
요코소
    샌드스타 Korean
  • Japanese
# Print Function
フレンズ Japanese
    '0'
    たのし!
    "!dlroW ,olleH"
    うわ~
    おもしろ!
    すごい!
    わい~
# Main Function
ようこそ
    サンドスタ Japanese

Spec

[Syntax]
Token : [a-z, A-Z, 0-9, !, ?, -, ~, _]
Code : {Token}{Not Token}{Token}...
Comment : #...[\n, \0]
Command : {Token}

[Interpreter]
'h' = Head : index of 'Command' to execute.
'[p]' = Memory : dynamic array of 1 byte.
'p' = Pointer : index of byte in 'Memory'
'r' = Register : store 1 byte.

[Command]
"..."
    "Hi" : [p]='H' → p+=1 → [p]='i'
'...'
    '0 42' : [p]=0 → p+=1 → [p]=42
ta(-/~)noshi(!) : increase p or [p]
    ta--noshi : [p]+=1 → [p]+=1
    ta~-noshi : [p]*=2 → [p]+=1
    ta-noshi! : [p]+=1 → p+=1
sugo(-/~)i(!) : decrease p or [p]
    sugo--i : [p]-=1 → [p]-=1
    sugo~-i : [p]/=2 → [p]-=1
    sugo-i! : [p]-=1 → p-=1
u(-)wa(~) : jump
    uwa~ : if [p]==0 then move h to wa(-)i~
    u-wa~~ : if [p]==1 then move h to wa(-)i~~
wa(-)i(~) : jump
    wai~ : if [p]!=0 then move h to u(-)wa~
    wa-i~~ : if [p]!=1 then move h to u(-)wa~~
nanikore(?) : input
    nanikore? : [p]=input
    nanikore?? : [p]=input → p+=1 → [p]=input
omoshiro(!) : output
    omoshiro! : output=[p]
    omoshiro!! : output=[p] → p+=1 → output=[p]
la(la) : copy [p]
    la : [p+1]=[p] → p+=1
    lala : [p+2]=[p] → p+=2
    la la : this is two 'Command' that la and la.
mya(mya) : copy [p]
    mya : [p-1]=[p] → p-=1
    myamya : [p-2]=[p] → p-=2
    mya mya : this is two 'Command' that mya and mya.
shaberu : r=[p]
shabetta : [p]=r
youkoso : declare main function
friends {Token} : declare function named {Token}
sandstar {Token} : call function named {Token}

kemonofriendslanguage's People

Contributors

neurowhai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

kemonofriendslanguage's Issues

la 명령어 수정

la 명령어를 좀 바꿔서
lalala 하면 현재 위치에서 우측으로 3번째 메모리에 값을 복사하는걸로 하자.
따라서 기존 la처럼 우측으로 3번째 까지 모두 복사하려면
la la la하면 됨.
좌측으로 가는 명령어도 필요할듯.

인코딩

현재는 아마 euc나 949가 쓰였을텐데 유니코드로 갈아타는게 어떨까 싶다.
또 갈아탄다면 아스키와 호환이 좋은 utf-8을 할지 utf-16을 할지 공부해봐야 함.

문법, 명령어 설명 필요

[Syntax]
Token : [a-z, A-Z, 0-9, !, ?, -, ~, _]
Code : {Token}{Not Token}{Token}...
Comment : #...[\n, \0]
Command : {Token}

[Interpreter]
'h' = Head : index of 'Command' to execute.
'[p]' = Memory : dynamic array of 1 byte.
'p' = Pointer : index of byte in 'Memory'
'r' = Register : store 1 byte.

[Command]
"..."
    "Hi" : [p]='H' → p+=1 → [p]='i'
'...'
    '0 42' : [p]=0 → p+=1 → [p]=42
ta(-/~)noshi(!) : increase p or [p]
    ta--noshi : [p]+=1 → [p]+=1
    ta~-noshi : [p]*=2 → [p]+=1
    ta-noshi! : [p]+=1 → p+=1
sugo(-/~)i(!) : decrease p or [p]
    sugo--i : [p]-=1 → [p]-=1
    sugo~-i : [p]/=2 → [p]-=1
    sugo-i! : [p]-=1 → p-=1
u(-)wa(~) : jump
    uwa~ : if [*]==0 then move h to wa(-)i~
    u-wa~~ : if [*]==1 then move h to wa(-)i~~
wa(-)i(~) : jump
    wai~ : if [*]!=0 then move h to u(-)wa~
    wa-i~~ : if [*]!=1 then move h to u(-)wa~~
nanikore(?) : input
    nanikore? : [p]=input
    nanikore?? : [p]=input → p+=1 → [p]=input
omoshiro(!) : output
    omoshiro! : output=[p]
    omoshiro!! : output=[p] → p+=1 → output=[p]
la(la) : copy [p]
    la : [p+1]=[p] → p+=1
    lala : [p+2]=[p] → p+=2
    la la : this is two 'Command' that la and la.
mya(mya) : copy [p]
    mya : [p-1]=[p] → p-=1
    myamya : [p-2]=[p] → p-=2
    mya mya : this is two 'Command' that mya and mya.
shaberu : r=[p]
shabetta : [p]=r
youkoso : declare main function
friends {Token} : declare function named {Token}
sandstar {Token} : call function named {Token}

일단 이렇게 짜봤는데 어떨지...

일본어 지원

일본어 토큰 추가는 쉬운데 지금 한글이나 일본어는 멀티바이트로 표현되기 때문에 사용 못하는 문자가 생김.
C발 C#이였으면 인코딩 걱정 안하는데.

함수 호출시 메모리 백업

함수 호출시 현재 포인터 다음 위치부터 끝까지 메모리를 백업(콜스택 사용) 해놓고 반환시 덮어씌우는 방식으로 복구시키자.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.