beautiful codeの 9章 下向き演算子順位解析を写経してみたら,いろいろ端折ったのに500行以上になった.思ったより長い. 最初の所はこんな感じ: $original_symbol = Prototype.new $original_symbol.error = lambda() {|x| raise x } $original_symbol.nud = lambda() { self.error "undefined." } $original_symbol.led = lambda() { self.error "missing operator." } $symbol_table = {} def symbol( id, bp=0) s = $symbol_table[id] if s s.lbp = bp if bp >= s.lbp else s = $origina