Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TypeScriptをフォークしてEmojiScriptを作った話

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for uhyo uhyo
October 09, 2020

 TypeScriptをフォークしてEmojiScriptを作った話

Avatar for uhyo

uhyo

October 09, 2020
Tweet

More Decks by uhyo

Other Decks in Programming

Transcript

  1. 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
  2. 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)
  3. 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
  4. 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 = ⣿⣿
  5. 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バイト)