join_maker (test/src/sql_parser.rb)

    # File test/src/sql_parser.rb, line 213
      def join_maker rel, pred
        crossjoin = keyword[:cross] >> keyword[:join] >> rel.map(&rctor(CrossJoinRelation))
        leftjoin = outer_join :left
        rightjoin = outer_join :right
        fulljoin = outer_join :full
        innerjoin = keyword[:inner].optional >> keyword[:join] >> :inner
        join_with_condition = sequence(sum(leftjoin, rightjoin, innerjoin), rel,
          keyword[:on], pred) do |kind, r, _, on|
            proc{|r0|JoinRelation.new(kind, r0, r, on)}
          end
        sum(crossjoin, join_with_condition)
      end