by shigemk2

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

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

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

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

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