Slide 1

Slide 1 text

TypeScriptをフォークして EmojiScript を作った 2020-10-09 ⾃作プログラミング⾔語の集い @uhyo_

Slide 2

Slide 2 text

EmojiScriptのコード例 fizzbuzz(n: ): { (i & ; i⏮n; i) { (i⠏ ) { console.log("FizzBuzz") } (i⠃ ) { console.log("Fizz")/ } 0(i⠅ ) { console.log("Buzz")1 } 2 { console.log(i)3 } } } fizzbuzz(⠃⣨)4

Slide 3

Slide 3 text

EmojiScriptのコード例 fizzbuzz(n: ): { (i & ; i⏮n; i) { (i⠏ ) { console.log("FizzBuzz") } (i⠃ ) { console.log("Fizz")/ } 0(i⠅ ) { console.log("Buzz")1 } 2 { console.log(i)3 } } } fizzbuzz(⠃⣨)4 function fizzbuzz(n) { for (var i = 0; i <= n; i++) { if (i % 15 === 0) { console.log("FizzBuzz"); } else if (i % 3 === 0) { console.log("Fizz"); } else if (i % 5 === 0) { console.log("Buzz"); } else { console.log(i); } } } fizzbuzz(1000); コンパイル後 (JavaScript)

Slide 4

Slide 4 text

EmojiScriptの⾔語仕様 (1)単純置換 fizzbuzz(n: ): { (i & ; i⏮n; i) { (i⠏ ) { console.log("FizzBuzz") } (i⠃ ) { console.log("Fizz")/ } 0(i⠅ ) { console.log("Buzz")1 } 2 { console.log(i)3 } } } fizzbuzz(⠃⣨)4

Slide 5

Slide 5 text

EmojiScriptの⾔語仕様 (2) 点字数値リテラル fizzbuzz(n: ): { (i & ; i⏮n; i) { (i⠏ ) { console.log("FizzBuzz") } (i⠃ ) { console.log("Fizz")/ } 0(i⠅ ) { console.log("Buzz")1 } 2 { console.log(i)3 } } } fizzbuzz(⠃⣨)4 256進数で整数を記述できる 0= , 1=⠁, 2=⠂, 3=⠃, 4=⠄, …, 254=⣾, 255=⣿ ex) – 1000 = 0x3e8 = ⠃⣨ – 65535 = 0xffff = ⣿⣿

Slide 6

Slide 6 text

EmojiScriptの⾔語仕様 (3) 肌の⾊に対応 fizzbuzz(n: ): { (i & ; i⏮n; i) { (i⠏ ) { console.log("FizzBuzz") } (i⠃ ) { console.log("Fizz")/ } 0(i⠅ ) { console.log("Buzz")1 } 2 { console.log(i)3 } } } fizzbuzz(⠃⣨)4 ⾃分を表現できるプログラミング⾔語 !"#$%& ZWJ Sequenceを正しくパースする対応 ex) ! = U+1F647 U+1F3FE U+200D U+2640 U+FE0F (UTF-8で17バイト)

Slide 7

Slide 7 text

TypeScriptがベース 良い点 – VSCodeサポートがついてくる – 型システムも最初からある – バックエンド実装が必要ない (JavaScriptにコンパイルできる) – TypeScriptにcontributeする練習 になる(?) 悪い点 – どうあがいてもJavaScriptになる

Slide 8

Slide 8 text

まとめ –EmojiScriptで⾃分を表現しよう! –絵⽂字のパースを実装するとUnicodeの勉強になる –https://github.com/uhyo/EmojiScript –絵⽂字追加のプルリクも⼤歓迎