続 Routes.draw

内容は、下記

572 begin yield self
573 rescue
574 @routes = old_routes
575 raise
576 end
577 write_generation
578 write_recognition

beginで例外補足してて

572 begin yield self
  ...
576 end

以下の部分で、最初に入っていた値を「@routes」へ入れて
「Kernel.raise」メソッドを使用して例外を発生させている。

573 rescue
574 @routes = old_routes
575 raise

こいつらは本筋にあまり関係ないということです。

で、関係のある以下の人たちが呼び出される

577 write_generation
578 write_recognition

「write_generation」は以下を引数にして生成される。

CodeGeneration::GenerationGenerator.new

(このクラスは「code_generation.rb」にある。)

で、最初に空の配列と、componentsで初期化している。

generator.before,
generator.current,
generator.after = , components.first, (components[1..-1] || )

before,current,afterは以下のように属性。

Attributes = [
:after,
:before,
:current,
:results,
:constants,
:depth,
:move_ahead,
:finish_statement]
attr_accessor(*Attributes)

つづきはあとで