├── .envrc ├── .gitignore ├── dist └── .gitignore ├── parser ├── README.md ├── parser └── parser.go ├── interpreter ├── README.md ├── go.mod └── main.go ├── scripts ├── bf │ ├── hello_world.bf │ ├── ayumu.bf │ └── rinachan_board.bf ├── hello_world.aiscream ├── ayumu.aiscream └── rinachan_board.aiscream ├── flake.nix ├── LICENSE ├── flake.lock └── README.md /.envrc: -------------------------------------------------------------------------------- 1 | use flake -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .direnv -------------------------------------------------------------------------------- /dist/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /parser/README.md: -------------------------------------------------------------------------------- 1 | bfファイルからaiscreamファイルに変換することができます。 -------------------------------------------------------------------------------- /interpreter/README.md: -------------------------------------------------------------------------------- 1 | # AiScReam interpreter 2 | 3 | Goで書かれたAiScReamのインタプリタ 4 | -------------------------------------------------------------------------------- /parser/parser: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marukun712/aiscream-lang/HEAD/parser/parser -------------------------------------------------------------------------------- /interpreter/go.mod: -------------------------------------------------------------------------------- 1 | module github.com/marukun712/aiscream-lang/interpreter 2 | 3 | go 1.25.3 4 | -------------------------------------------------------------------------------- /scripts/bf/hello_world.bf: -------------------------------------------------------------------------------- 1 | ++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++. -------------------------------------------------------------------------------- /scripts/bf/ayumu.bf: -------------------------------------------------------------------------------- 1 | ++++++++[>>->++>+>------->+++>++++>---[+++++++++++<]<-]>>+++.>---.>>>++++.-.>---.<-----.<<+.>.<++.<+++.>--.>>.<.>.+.<.<<.>>>.>.<<<<-.>.>.<+++.---.<++.+.-.>>.>-.<<.>>.+.<+.>>>-. -------------------------------------------------------------------------------- /scripts/hello_world.aiscream: -------------------------------------------------------------------------------- 1 | 歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃんルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんルビィちゃん歩夢ちゃんアイスクリーム!アイスクリーム!アイスクリーム!アイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃんルビィちゃん歩夢ちゃんルビィちゃん四季ちゃんルビィちゃんルビィちゃん歩夢ちゃんはーいアイスクリーム!何が好き?アイスクリーム!四季ちゃん何が好き?ルビィちゃんルビィちゃん叫びましょルビィちゃん四季ちゃん四季ちゃん四季ちゃん叫びましょ歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょ叫びましょ歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょルビィちゃんルビィちゃん叫びましょアイスクリーム!四季ちゃん叫びましょアイスクリーム!叫びましょ歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょ四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん叫びましょ四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん叫びましょルビィちゃんルビィちゃん歩夢ちゃん叫びましょルビィちゃん歩夢ちゃん歩夢ちゃん叫びましょ -------------------------------------------------------------------------------- /flake.nix: -------------------------------------------------------------------------------- 1 | { 2 | description = "Shell"; 3 | 4 | inputs = { 5 | nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; 6 | flake-utils.url = "github:numtide/flake-utils"; 7 | }; 8 | 9 | outputs = 10 | { 11 | self, 12 | nixpkgs, 13 | flake-utils, 14 | }: 15 | flake-utils.lib.eachDefaultSystem ( 16 | system: 17 | let 18 | pkgs = import nixpkgs { 19 | inherit system; 20 | }; 21 | in 22 | { 23 | devShell = pkgs.mkShell { 24 | buildInputs = [ 25 | pkgs.go 26 | ]; 27 | }; 28 | } 29 | ); 30 | } 31 | -------------------------------------------------------------------------------- /scripts/ayumu.aiscream: -------------------------------------------------------------------------------- 1 | 歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃんルビィちゃん四季ちゃんルビィちゃん歩夢ちゃん歩夢ちゃんルビィちゃん歩夢ちゃんルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんルビィちゃん四季ちゃん四季ちゃん四季ちゃんはーい歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!何が好き?アイスクリーム!四季ちゃん何が好き?ルビィちゃんルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょルビィちゃん四季ちゃん四季ちゃん四季ちゃん叫びましょルビィちゃんルビィちゃんルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょ四季ちゃん叫びましょルビィちゃん四季ちゃん四季ちゃん四季ちゃん叫びましょアイスクリーム!四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん叫びましょアイスクリーム!アイスクリーム!歩夢ちゃん叫びましょルビィちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょルビィちゃん四季ちゃん四季ちゃん叫びましょルビィちゃんルビィちゃん叫びましょアイスクリーム!叫びましょルビィちゃん叫びましょ歩夢ちゃん叫びましょアイスクリーム!叫びましょアイスクリーム!アイスクリーム!叫びましょルビィちゃんルビィちゃんルビィちゃん叫びましょルビィちゃん叫びましょアイスクリーム!アイスクリーム!アイスクリーム!アイスクリーム!四季ちゃん叫びましょルビィちゃん叫びましょルビィちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょ四季ちゃん四季ちゃん四季ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん叫びましょ歩夢ちゃん叫びましょ四季ちゃん叫びましょルビィちゃんルビィちゃん叫びましょルビィちゃん四季ちゃん叫びましょアイスクリーム!アイスクリーム!叫びましょルビィちゃんルビィちゃん叫びましょ歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん叫びましょルビィちゃんルビィちゃんルビィちゃん四季ちゃん叫びましょ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 maril 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /parser/parser.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "os" 6 | "regexp" 7 | "strings" 8 | ) 9 | 10 | var ( 11 | INCREMENT = "歩夢ちゃん" 12 | DECREMENT = "四季ちゃん" 13 | NEXT = "ルビィちゃん" 14 | PREVIOUS = "アイスクリーム!" 15 | LOOP_START = "はーい" 16 | LOOP_END = "何が好き?" 17 | READ = "あ・な・た" 18 | WRITE = "叫びましょ" 19 | ) 20 | 21 | func main() { 22 | if len(os.Args) == 2 { 23 | bytes, err := os.ReadFile(os.Args[1]) 24 | if err != nil { 25 | fmt.Println(err) 26 | return 27 | } 28 | 29 | code := string(bytes) 30 | 31 | // 改行と空白を消す 32 | code = strings.ReplaceAll(code, "\n", "") 33 | re := regexp.MustCompile(`\s+`) 34 | code = re.ReplaceAllString(code, "") 35 | 36 | code = strings.ReplaceAll(code, "+", INCREMENT) 37 | code = strings.ReplaceAll(code, "-", DECREMENT) 38 | code = strings.ReplaceAll(code, ">", NEXT) 39 | code = strings.ReplaceAll(code, "<", PREVIOUS) 40 | code = strings.ReplaceAll(code, "[", LOOP_START) 41 | code = strings.ReplaceAll(code, "]", LOOP_END) 42 | code = strings.ReplaceAll(code, ",", READ) 43 | code = strings.ReplaceAll(code, ".", WRITE) 44 | 45 | fmt.Print(code) 46 | 47 | os.WriteFile("dist/program.aiscream", []byte(code), 0644) 48 | } else { 49 | fmt.Println("Usage: parser program.bf") 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /flake.lock: -------------------------------------------------------------------------------- 1 | { 2 | "nodes": { 3 | "flake-utils": { 4 | "inputs": { 5 | "systems": "systems" 6 | }, 7 | "locked": { 8 | "lastModified": 1731533236, 9 | "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", 10 | "owner": "numtide", 11 | "repo": "flake-utils", 12 | "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", 13 | "type": "github" 14 | }, 15 | "original": { 16 | "owner": "numtide", 17 | "repo": "flake-utils", 18 | "type": "github" 19 | } 20 | }, 21 | "nixpkgs": { 22 | "locked": { 23 | "lastModified": 1763678758, 24 | "narHash": "sha256-+hBiJ+kG5IoffUOdlANKFflTT5nO3FrrR2CA3178Y5s=", 25 | "owner": "NixOS", 26 | "repo": "nixpkgs", 27 | "rev": "117cc7f94e8072499b0a7aa4c52084fa4e11cc9b", 28 | "type": "github" 29 | }, 30 | "original": { 31 | "owner": "NixOS", 32 | "ref": "nixos-unstable", 33 | "repo": "nixpkgs", 34 | "type": "github" 35 | } 36 | }, 37 | "root": { 38 | "inputs": { 39 | "flake-utils": "flake-utils", 40 | "nixpkgs": "nixpkgs" 41 | } 42 | }, 43 | "systems": { 44 | "locked": { 45 | "lastModified": 1681028828, 46 | "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 47 | "owner": "nix-systems", 48 | "repo": "default", 49 | "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 50 | "type": "github" 51 | }, 52 | "original": { 53 | "owner": "nix-systems", 54 | "repo": "default", 55 | "type": "github" 56 | } 57 | } 58 | }, 59 | "root": "root", 60 | "version": 7 61 | } 62 | -------------------------------------------------------------------------------- /scripts/bf/rinachan_board.bf: -------------------------------------------------------------------------------- 1 | +++++++++[>+++++++++<-]>+.< 2 | >---------.< 3 | >+++++.< 4 | +++[>----<-]>-.< 5 | >++.< 6 | >+++++.< 7 | >-------.< 8 | +++[>++++<-]>+.< 9 | +++++[>---------<-]>-.< 10 | ++++[>++++++++<-]>++.< 11 | +++[>++++<-]>+.< 12 | ++[>-------<-]>.< 13 | ++++[>++++<-]>+.< 14 | ++[>-------<-]>.< 15 | . 16 | ++++++++++ 17 | . 18 | 19 | >> 20 | 21 | , 22 | ------------------------------------------------ 23 | >+< 24 | [>> 25 | +++++++++++[>+++++++++++<-]>+++.< 26 | ++++++[>-------------<-]>-.< 27 | >.< 28 | >.< 29 | >.< 30 | >.< 31 | ++++++[>+++++++++++++<-]>+.< 32 | ++++++++[>--------------<-]>--.< 33 | ++++++++[>++++++++++++++<-]>++.< 34 | +++++++[>-------------<-]>-.< 35 | +++++[>++++++<-]>.< 36 | +++++[>------<-]>.< 37 | ++++[>+++++++<-]>.< 38 | ++++[>-------<-]>.< 39 | +++++++[>+++++++++++++<-]>+.< 40 | ++++++++[>--------------<-]>--.< 41 | ++++++++[>++++++++++++++<-]>++.< 42 | +++++++[>-------------<-]>-.< 43 | >.< 44 | +++++++[>+++++++++++++<-]>+++.< 45 | +++++++[>-------------<-]>---.< 46 | >.< 47 | +++++++[>+++++++++++++<-]>+.< 48 | ++++++++[>--------------<-]>--.< 49 | ++++++++[>++++++++++++++<-]>++.< 50 | ++++++[>-------------<-]>-.< 51 | >.< 52 | >.< 53 | >.< 54 | >.< 55 | ++++++[>+++++++++++++<-]>+.< 56 | << 57 | >-< 58 | [-] 59 | ] 60 | > 61 | [ 62 | >> 63 | +++++++++++[>+++++++++++<-]>+++.< 64 | ++++++[>-------------<-]>-.< 65 | >.< 66 | >.< 67 | >.< 68 | >.< 69 | ++++++[>+++++++++++++<-]>+.< 70 | ++++++++[>--------------<-]>--.< 71 | ++++++++[>++++++++++++++<-]>++.< 72 | +++++++[>-------------<-]>-.< 73 | >+++.< 74 | >---.< 75 | >+++.< 76 | >---.< 77 | +++++++[>+++++++++++++<-]>+.< 78 | ++++++++[>--------------<-]>--.< 79 | ++++++++[>++++++++++++++<-]>++.< 80 | +++++++[>-------------<-]>-.< 81 | >.< 82 | +++++++[>++++++++++++<-]>++.< 83 | +++++++[>------------<-]>--.< 84 | >.< 85 | +++++++[>+++++++++++++<-]>+.< 86 | ++++++++[>--------------<-]>--.< 87 | ++++++++[>++++++++++++++<-]>++.< 88 | ++++++[>-------------<-]>-.< 89 | >.< 90 | >.< 91 | >.< 92 | >.< 93 | ++++++[>+++++++++++++<-]>+.< 94 | << 95 | -] -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # プログラミング言語 AiScReam 2 | 3 | 歩夢ちゃん ポインタの指す値をインクリメント 4 | 5 | 四季ちゃん ポインタの指す値をデクリメント 6 | 7 | ルビィちゃん ポインタを右に移動 8 | 9 | アイスクリーム! ポインタを左に移動 10 | 11 | はーい ポインタが指す値が 0 なら、対応する 何が好き? の直後にジャンプする 12 | 13 | 何が好き? ポインタが指す値が 0 でないなら、対応する はーい の直後にジャンプする 14 | 15 | あ・な・た 入力から 1 バイト読み込む 16 | 17 | 叫びましょ ポインタの指す値を出力する 18 | 19 | # Usage 20 | 21 | > 歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃんルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんルビィちゃん歩夢ちゃんアイスクリーム!アイスクリーム!アイスクリーム!アイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃんルビィちゃん歩夢ちゃんルビィちゃん四季ちゃんルビィちゃんルビィちゃん歩夢ちゃんはーいアイスクリーム!何が好き?アイスクリーム!四季ちゃん何が好き?ルビィちゃんルビィちゃん叫びましょルビィちゃん四季ちゃん四季ちゃん四季ちゃん叫びましょ歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょ叫びましょ歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょルビィちゃんルビィちゃん叫びましょアイスクリーム!四季ちゃん叫びましょアイスクリーム!叫びましょ歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょ四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん叫びましょ四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん叫びましょルビィちゃんルビィちゃん歩夢ちゃん叫びましょルビィちゃん歩夢ちゃん歩夢ちゃん叫びましょ 22 | 23 | ```sh 24 | ./aiscream hello_world.aiscream 25 | Hello World! 26 | ``` 27 | 28 | > 歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃんルビィちゃん四季ちゃんルビィちゃん歩夢ちゃん歩夢ちゃんルビィちゃん歩夢ちゃんルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんルビィちゃん四季ちゃん四季ちゃん四季ちゃんはーい歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!何が好き?アイスクリーム!四季ちゃん何が好き?ルビィちゃんルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょルビィちゃん四季ちゃん四季ちゃん四季ちゃん叫びましょルビィちゃんルビィちゃんルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょ四季ちゃん叫びましょルビィちゃん四季ちゃん四季ちゃん四季ちゃん叫びましょアイスクリーム!四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん叫びましょアイスクリーム!アイスクリーム!歩夢ちゃん叫びましょルビィちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょルビィちゃん四季ちゃん四季ちゃん叫びましょルビィちゃんルビィちゃん叫びましょアイスクリーム!叫びましょルビィちゃん叫びましょ歩夢ちゃん叫びましょアイスクリーム!叫びましょアイスクリーム!アイスクリーム!叫びましょルビィちゃんルビィちゃんルビィちゃん叫びましょルビィちゃん叫びましょアイスクリーム!アイスクリーム!アイスクリーム!アイスクリーム!四季ちゃん叫びましょルビィちゃん叫びましょルビィちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょ四季ちゃん四季ちゃん四季ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん叫びましょ歩夢ちゃん叫びましょ四季ちゃん叫びましょルビィちゃんルビィちゃん叫びましょルビィちゃん四季ちゃん叫びましょアイスクリーム!アイスクリーム!叫びましょルビィちゃんルビィちゃん叫びましょ歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん叫びましょルビィちゃんルビィちゃんルビィちゃん四季ちゃん叫びましょ 29 | 30 | ```sh 31 | ./aiscream ayumu.aiscream 32 | Setsuna chan no houga daiji nano!? 33 | ``` -------------------------------------------------------------------------------- /interpreter/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | "os" 6 | "regexp" 7 | "strings" 8 | ) 9 | 10 | var ( 11 | INCREMENT = "歩夢ちゃん" // + 12 | DECREMENT = "四季ちゃん" // - 13 | NEXT = "ルビィちゃん" // > 14 | PREVIOUS = "アイスクリーム!" // < 15 | LOOP_START = "はーい" // [ 16 | LOOP_END = "何が好き?" // ] 17 | READ = "あ・な・た" // , 18 | WRITE = "叫びましょ" // . 19 | ) 20 | 21 | func main() { 22 | // 引数が1つ(プログラムファイル)でなければ使用法を表示して終了 23 | if len(os.Args) == 2 { 24 | bytes, err := os.ReadFile(os.Args[1]) 25 | if err != nil { 26 | fmt.Println(err) 27 | return 28 | } 29 | 30 | code := string(bytes) 31 | 32 | // 改行と空白を削除 33 | code = strings.ReplaceAll(code, "\n", "") 34 | re := regexp.MustCompile(`\s+`) 35 | code = re.ReplaceAllString(code, "") 36 | 37 | runes := []rune(string(code)) 38 | // 認識する命令を並べたリスト 39 | programs := []string{INCREMENT, DECREMENT, NEXT, PREVIOUS, LOOP_START, LOOP_END, READ, WRITE} 40 | // トークン化された命令列 41 | tokens := []string{} 42 | 43 | // それぞれの命令文字列が出現するかを確認し、マッチしたらトークンとして追加 44 | for i := 0; i < len(runes); i++ { 45 | for _, program := range programs { 46 | // 最初の1文字が一致するか確認 47 | if string(runes[i]) == string([]rune(program)[0]) { 48 | // program と同じ長さの文字列を切り取って比較 49 | text := string(runes[i : i+len([]rune(program))]) 50 | if text == string([]rune(program)) && i+len([]rune(program)) <= len(runes) { 51 | tokens = append(tokens, text) 52 | } 53 | } 54 | } 55 | } 56 | 57 | buffer := make([]byte, 30000) 58 | ptr := 0 // メモリポインタ 59 | 60 | // トークンを順番に実行 61 | for i := 0; i < len(tokens); i++ { 62 | token := tokens[i] 63 | 64 | switch token { 65 | case INCREMENT: 66 | // 現在のセルをインクリメント 67 | buffer[ptr]++ 68 | 69 | case DECREMENT: 70 | // 現在のセルをデクリメント 71 | buffer[ptr]-- 72 | 73 | case NEXT: 74 | // ポインタを右へ 75 | if ptr < len(buffer) { 76 | ptr++ 77 | } 78 | 79 | case PREVIOUS: 80 | // ポインタを左へ 81 | if ptr > 0 { 82 | ptr-- 83 | } 84 | 85 | case LOOP_START: 86 | // [ と同じ:現在のセルが 0 なら対応する ] の位置までジャンプ 87 | if buffer[ptr] == 0 { 88 | n := 0 89 | for { 90 | i++ 91 | if tokens[i] == LOOP_START { 92 | n++ 93 | } else if tokens[i] == LOOP_END { 94 | // ネストが 0 のときが本来の対応括弧 95 | if n == 0 { 96 | break 97 | } 98 | n-- 99 | } 100 | } 101 | } 102 | 103 | case LOOP_END: 104 | // ] と同じ:現在のセルが 0 でなければ対応する [ まで戻る 105 | if buffer[ptr] != 0 { 106 | n := 0 107 | for { 108 | i-- 109 | if tokens[i] == LOOP_END { 110 | n++ 111 | } else if tokens[i] == LOOP_START { 112 | // ネストが 0 のときが対応する括弧 113 | if n == 0 { 114 | break 115 | } 116 | n-- 117 | } 118 | } 119 | } 120 | 121 | case READ: 122 | // 入力1文字を読み取って現在のセルに格納 123 | buf := []byte{0} 124 | os.Stdin.Read(buf) 125 | buffer[ptr] = buf[0] 126 | 127 | case WRITE: 128 | // 現在のセルの内容を1文字出力 129 | fmt.Print(string(buffer[ptr])) 130 | } 131 | } 132 | } else { 133 | fmt.Println("Usage: aiscream program.aiscream") 134 | } 135 | } 136 | -------------------------------------------------------------------------------- /scripts/rinachan_board.aiscream: -------------------------------------------------------------------------------- 1 | 歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん叫びましょアイスクリーム!ルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん叫びましょアイスクリーム!ルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん四季ちゃん叫びましょアイスクリーム!ルビィちゃん歩夢ちゃん歩夢ちゃん叫びましょアイスクリーム!ルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょアイスクリーム!ルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん四季ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん叫びましょアイスクリーム!叫びましょ歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょルビィちゃんルビィちゃんあ・な・た四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんルビィちゃん歩夢ちゃんアイスクリーム!はーいルビィちゃんルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん四季ちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん四季ちゃん四季ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん四季ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん四季ちゃん四季ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん四季ちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん四季ちゃん四季ちゃん四季ちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん四季ちゃん四季ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん四季ちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん叫びましょアイスクリーム!アイスクリーム!アイスクリーム!ルビィちゃん四季ちゃんアイスクリーム!はーい四季ちゃん何が好き?何が好き?ルビィちゃんはーいルビィちゃんルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん四季ちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん四季ちゃん四季ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん四季ちゃん叫びましょアイスクリーム!ルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょアイスクリーム!ルビィちゃん四季ちゃん四季ちゃん四季ちゃん叫びましょアイスクリーム!ルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん叫びましょアイスクリーム!ルビィちゃん四季ちゃん四季ちゃん四季ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん四季ちゃん四季ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん四季ちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん四季ちゃん四季ちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん四季ちゃん四季ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん歩夢ちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃん四季ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん四季ちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!ルビィちゃん叫びましょアイスクリーム!歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんはーいルビィちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃん歩夢ちゃんアイスクリーム!四季ちゃん何が好き?ルビィちゃん歩夢ちゃん叫びましょアイスクリーム!アイスクリーム!アイスクリーム!四季ちゃん何が好き? --------------------------------------------------------------------------------