>実装を始めて気がついたのですが、goto文って実はもっとも単純だと
>思っていたのですが、実は難しいのですね。
です。crowbarにgotoがないのはそのためです(w。かろうじてbreakとcontinueは
ありますが、これも戻り値でちまちま返すことになってしまっています。
# Rubyはこのへんをsetjmpとlongjmpでやっているようですが。
>というように、状況に応じて改行を文の区切り文字と認識したりあるいは
>無視したりしています。Ruby では Lex などの字句解析機を使わずに自前の
>実装を使われているそうなので、ありものの字句解析機を利用しなかったのは、
>利用できなかったからなのでは?と勝手に想像しています。
いきなり答をばらす行為になるのかもしれませんが、Rubyの実装については、
以下のページに詳細な説明があります。
http://i.loveruby.net/ja/rhg/index.html
「状態付きスキャナ」にも、1章が割り当てられています。