by shigemk2

当面は技術的なことしか書かない

BF->JSのトランスレータとJITコンパイラを書いた

BF->JSのトランスレータを書いたけどおかしなことになっていた - by shigemk2の続き。

  • 処理が中断された場合、ループ処理を最初から始めると期待した文字が出力されないので、ループを途中から再開する必要がある
  • process.stdin.onの中にgetchar関数を挟まないと、次の標準出力で改行が出力されるバグが発生してしまう
  • Node.jsの標準入出力の処理は非同期なのでループの中で複数の非同期処理を実行することは難しい(コールバック地獄)
  • goto文のようなことをやろうと思ったけど、ループの中にジャンプするgoto文は基本的にやらない
  • JSにyield的なものはない
  • ループの中から再開するためには、スタックを利用した配列を用意してやる必要がある
  • [の場合、配列にpush=スタックを利用して特定の場所からループを再開する技術を再現する
  • ]の場合、ループを閉じてスタックを減らす
  • hascomma配列で、どこからループが始まり、どこに,があって、どこでループが終わるのか記録させる

参考になりました。というか結構お手をお借りしました。すみません。

case classメモ

ファクトリパターンを用いた技術で、メソッドやコンパニオンオブジェクトが自動的に生成される

scala> case class A(n: Int)
defined class A
scala> val a1 = A(1)
scala> a1.
asInstanceOf      canEqual          copy              isInstanceOf
n                 productArity      productElement    productIterator
productPrefix     toString

Scalaクラスメモ(Hishidama's Scala class Memo)

Scalaオブジェクトメモ(Hishidama's Scala object Memo)