タグ

書籍とソースコードとインタープリタに関するbaboocon19820419のブックマーク (1)

  • 第11章 状態付きスキャナ

    概要 理論のように、スキャナはただひたすらトークンに区切り、パーサはその並び だけを扱い、両者は完璧に独立している……という段階で済むならば、それは とてもありがたいことだ。しかし現実はそううまくはいかない。プログラムの 文脈によってトークンの切りかたや記号を変えなければならないということは よくある。この章ではスキャナとパーサの連携について見ていくことにする。 具体例 普通のプログラム言語なら、空白は単語の区切りになる以外はたいし て意味を持たない。しかしRubyは普通ではないので空白のあるなしで全く意味 が変わってしまうことがある。例えば次のような場合だ。 a[i] = 1 # a[i] = (1) a [i] # a([i]) 前者はインデックス代入であり、後者はメソッド呼び出しの括弧を省略して引 数に配列の要素を渡している。 また次のような場合もある。 a + 1 # (a) +

  • 1