NeuroWhAI의 잡블로그

[Dev] 슥語2 - 케모노 프렌즈 프로그래밍 언어 본문

개발 및 공부

[Dev] 슥語2 - 케모노 프렌즈 프로그래밍 언어

NeuroWhAI 2017. 3. 17. 18:56


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



    '슥語2'는 '슥어2[스거이]' 또는 '슥고이'로 읽을 수 있습니다.

    다른 공식 명칭은 'SuGGoi2' 입니다.

    '슥'은 슥슥 써내려갈 수 있는 언어라는 의미,

    '語'는 언어라는 의미,

    '2'는 프로토타입 버전에서 한층더 발전했다는 의미입니다.

    절대로 'すっごい'를 의도한 것이 아닙니다.


    브레인퍽 기반이지만 단순한 명령어=단어 1대1 대응에서 벗어났고

    스고--이~한 함수나 편의 기능 지원으로 한결 더 타--노시~한 프로그래밍 생활을 누릴 수 있게 합니다.

    이상으로 X소리


    [인터프리터 소스코드]

    https://github.com/NeuroWhAI/KemonoFriendsLanguage


    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}


    더 많은 공식 예제는 https://github.com/NeuroWhAI/KemonoFriendsLanguage/tree/master/Examples 여기에서 보실 수 있습니다.


    문법 이해안가면 이거랑 예제랑 소스코드 보고 알아서 맞추세요.

    와-이~ 타-노시~~





    Comments