+#
+# DO NOT MODIFY!!!!
+# This file is automatically generated by racc 1.4.5
+# from racc grammer file "sqlparser.y".
+#
+
+require 'racc/parser'
+
+
+require 'strscan'
+
+
+module Hdboo
+
+ module SQL
+
+ class Parser < Racc::Parser
+
+module_eval <<'..end sqlparser.y modeval..idadf64e57b3', 'sqlparser.y', 371
+def constraint(type, *args)
+ all_elements = args.pop
+ nd(:CONSTRAINT, SQL::Table::Constraint.new(type, args), all_elements)
+end
+
+def index(name, columns, all_elements)
+ nd(:INDEX, SQL::Table::Index.new(name, columns), all_elements)
+end
+
+def procedure(name, parameters, annotations, all_elements)
+ nd(:CREATE_PROCEDURE,
+ SQL::Procedure.new(
+ name.value,
+ parameters.to_a,
+ annotations.to_a
+ ),
+ all_elements)
+end
+
+def parameter(name, type, annotations, all_elements)
+ nd(:PARAMETER,
+ SQL::Procedure::Parameter.new(
+ name.value,
+ type.value,
+ annotations.to_a
+ ),
+ all_elements)
+end
+
+def table(name, elements, annotations, all_elements)
+ nd(:CREATE_TABLE,
+ SQL::Table.new(name.value, elements.to_a, annotations.to_a),
+ all_elements)
+end
+
+def column(name, type, column_options, annotations, all_elements)
+ nd(:COLUMN_DEFINITION,
+ SQL::Table::Column.new(
+ name.value, type.value, column_options.to_a, annotations.to_a
+ ),
+ all_elements)
+end
+
+def annotation(type, args, all_elements)
+ type = type.value
+ args = args.to_a
+ nd(:ANNOTATION, SQL::Annotation.new(type, args), all_elements)
+end
+
+def datatype(type, length, val)
+ nd(:DATA_TYPE, SQL::DataType.new(type, length), val)
+end
+
+def nd(type, value, all_elements=value)
+ node = Node.new(type, value, @source)
+ update_pos(node, all_elements)
+ if value.respond_to?(:source=)
+ value.source = node.source
+ end
+ node
+end
+
+def update_pos(node, all_elements)
+ all_elements = all_elements.compact
+ node.start = all_elements.collect{|val| val.start}.compact[0]
+ node.last = all_elements.collect{|val| val.last }.compact[-1]
+ node
+end
+
+class Node
+ attr_reader :type, :value
+ attr_accessor :start, :last
+
+ def initialize(type, value, source)
+ @type = type.to_sym
+ @value = value
+ @source = source
+ end
+
+ def push(elem)
+ raise Exception if leaf?
+ @value << elem
+ self
+ end
+
+ def unshift(elem)
+ raise Exception if leaf?
+ @value.unshift(elem)
+ self
+ end
+
+ def [](index)
+ if leaf?
+ return index = 0 ? @value : nil
+ end
+ if index.is_a?(Integer)
+ return @value[index]
+ end
+ @value.detect{|val| val.type == index.to_sym}
+ end
+
+ def leaf?
+ !@value.is_a?(Array)
+ end
+
+ def name
+ self[:IDENTIFIER].value
+ end
+
+ def children
+ leaf? ? [] : @value
+ end
+
+ def find(node_type)
+ node_type = node_type.to_sym
+ return self if type == node_type
+ if leaf?
+ return nil
+ end
+ result = nil
+ children.each do |child_node|
+ found = child_node.find(node_type)
+ if found
+ result = found
+ break
+ end
+ end
+ result
+ end
+
+ def source
+ start_row = @start[0]
+ start_col = @start[1]
+ last_row = @last[0]
+ last_col = @last[1]
+
+ result = @source[start_row..last_row]
+ if result.length == 1
+ result[0] = result[0][start_col..last_col]
+ else
+ result[0] = result[0][start_col..-1]
+ result[-1] = result[-1][0..last_col]
+ end
+ result.join("\n")
+ end
+
+ def to_a
+ if leaf?
+ return [@value]
+ end
+ @value.collect {|child| child.value}
+ end
+
+ def to_s
+ "#{type}: at line #{start[0]+1}, column #{start[1]+1}\nsource> #{source}"
+ end
+
+ def inspect
+ to_s
+ end
+end
+
+class ASTWalker
+ def walk(ast)
+ walk_node(ast)
+ self
+ end
+
+ def initialize
+ @listeners = Hash.new {|hash, key| hash[key] = []}
+ end
+
+ def visit(note_type, &block)
+ node_type = note_type.to_sym
+ @listeners[node_type] << block
+ self
+ end
+
+ private
+ def walk_node(node)
+ if @listeners.has_key?(node.type)
+ @listeners[node.type].each do |listener|
+ listener.call(node)
+ end
+ end
+ node.children.each do |child_node|
+p node if child_node.nil?
+ walk_node(child_node)
+ end
+ end
+end
+
+# token
+PUNCTUATION = /([;\.,()=@*<>\[\]]|\$\$|\/\/|--)/
+ONE_LINE_COMMENT = /--\s[^@]*$/
+KEYWORD_LIST = [
+ #general term
+ 'NOT',
+ 'NULL',
+ 'DEFAULT',
+ 'AS',
+
+ # sql command
+ 'CREATE',
+ 'TABLE',
+ 'VIEW',
+ 'PROCEDURE',
+ 'INSERT',
+ 'INTO',
+ 'VALUES',
+ 'DELIMITER',
+
+ # table option
+ 'ENGINE',
+ 'MYISAM',
+ 'INNODB',
+ 'HEAP',
+
+ # column option
+ 'AUTO_INCREMENT',
+
+ # data type
+ 'INT',
+ 'CHAR',
+ 'VARCHAR',
+ 'TEXT',
+ 'INTEGER',
+ 'TINYINT',
+ 'SMALLINT',
+ 'BIT',
+ 'DATETIME',
+ 'TIMESTAMP',
+
+ # procedure / function
+ 'BEGIN',
+ 'END',
+ 'IN',
+ 'OUT',
+ 'INOUT',
+
+ # constraint
+ 'CONSTRAINT',
+ 'PRIMARY',
+ 'FOREIGN',
+ 'REFERENCES',
+ 'UNIQUE',
+ 'INDEX',
+ 'KEY',
+ 'FULLTEXT',
+ 'USING',
+ 'SECTIONALIZE',
+
+ #query
+ 'SELECT',
+ 'FROM',
+ 'WHERE',
+
+ #dml
+ 'DELETE',
+ 'UPDATE',
+
+ #boolean expression
+ 'TRUE',
+ 'FALSE',
+ 'IS',
+
+ #triggered action
+ 'ON',
+ 'CASCADE'
+]
+KEYWORD = /(#{KEYWORD_LIST.collect{|k| '\b'+k+'\b'}.join('|')})/ix
+IDENTIFIER = /([a-zA-Z][_0-9a-zA-Z]*)/
+
+# NUMBER
+NUMERIC = /([1-9][0-9]*)/
+INTEGER = /([+|-]?[1-9][0-9]*|0)/
+FLOAT = /(
+ (?: #without exponent part
+ [+|-]?(?:[1-9][0-9]*|0)(?:\.[0-9]+)?
+ | #with exponent part
+ [+|-]?[1-9]+(?:\.[0-9]+)?e[+|-]?[1-9][0-9]*
+ )
+ )/x
+
+# STRING
+NOT_PRINTABLE = '\x00-\x1F\x7F' #including space (\x20)
+MUST_BE_ESCAPED = '\x22\x27\x5C' #quot, double-quot, back-slash
+ESCAPE_TABLE = {
+ '\n' => "\n",
+ '\b' => "\b",
+ '\0' => "\x00",
+ '\t' => "\t",
+ "\\'" => "'",
+ '\"' => '"',
+ "\\\\" => "\\"
+}
+ESCAPED = ESCAPE_TABLE.keys.map{|k|k.gsub(/\\/, "\\\\\\\\")}.join('|')
+CHARACTER_STRING = /(
+ #single-quoted string
+ '
+ (?:
+ [^#{MUST_BE_ESCAPED}#{NOT_PRINTABLE}]
+ |
+ #{ESCAPED}
+ |
+ ''
+ |
+ "
+ )*
+ '
+ |
+ #double-quoted string
+ "
+ (?:
+ [^#{MUST_BE_ESCAPED}#{NOT_PRINTABLE}]
+ |
+ #{ESCAPED}
+ |
+ ""
+ |
+ '
+ )*
+ "
+)/x
+
+# PROCEDURE
+PARAMETER_NAME = /([_a-zA-Z][_0-9a-zA-Z]*)/
+
+def parse(str)
+ @source = str.split(/\n/)
+ @lines = @source.dup
+ @total_lines = @lines.length
+ next_line
+ do_parse
+end
+
+def next_line
+ @line = @lines.empty? \
+ ? nil \
+ : StringScanner.new(@lines.shift)
+end
+
+def current_line
+ @total_lines - (@lines.length + 1)
+end
+
+def pos
+ [current_line, @line.pos]
+end
+
+def next_token
+ token = _next_token
+ return nil unless token
+ token[1].start = @start_pos
+ token[1].last = [pos[0], pos[1]-1]
+#puts token
+ return token
+end
+
+def _next_token
+ return nil unless @line
+ @line.skip(/\s*/)
+ if @in_procedure_code
+ if token = @line.skip_until(/(?=\bEND(?!\s+(?:IF|CASE|WHILE|LOOP))\b)/i)
+ @in_procedure_code = false
+ return tkn(:PROCEDURE_CODE)
+ end
+ @line.terminate
+ end
+ if @line.eos?
+ next_line
+ return _next_token
+ end
+ @start_pos = pos
+ if token = @line.scan(ONE_LINE_COMMENT)
+ return _next_token
+ elsif token = @line.scan(PUNCTUATION)
+ return tkn(token)
+ elsif token = @line.scan(KEYWORD)
+ token = token.upcase
+ if token == 'BEGIN'
+ @in_procedure_code = true
+ end
+ return tkn(token)
+ elsif token = @line.scan(IDENTIFIER)
+ return tkn(:IDENTIFIER, token)
+ elsif token = @line.scan(PARAMETER_NAME)
+ return tkn(:PARAMETER_NAME, token)
+ elsif token = @line.scan(CHARACTER_STRING)
+ return tkn(
+ :CHARACTER_STRING,
+ token[1..-2].gsub(/#{ESCAPED}/x) {|s|ESCAPE_TABLE[s]}\
+ .gsub(/""/, '"')\
+ .gsub(/''/, "\'")
+ )
+ elsif token = @line.scan(NUMERIC)
+ return tkn(:NUMERIC, token.to_i)
+ elsif token = @line.scan(INTEGER)
+ return tkn(:INTEGER, token.to_i)
+ elsif token = @line.scan(FLOAT)
+ return tkn(:FLOAT, token.to_f)
+ else
+ return tkn(:UNEXPECTED_TOKEN, @line.scan(/.*/))
+ end
+end
+
+def tkn(type, value=type)
+ [type, Node.new(type, value, @source)]
+end
+
+..end sqlparser.y modeval..idadf64e57b3
+
+##### racc 1.4.5 generates ###
+
+racc_reduce_table = [
+ 0, 0, :racc_error,
+ 2, 76, :_reduce_1,
+ 1, 77, :_reduce_2,
+ 0, 78, :_reduce_3,
+ 1, 78, :_reduce_4,
+ 3, 78, :_reduce_5,
+ 3, 78, :_reduce_6,
+ 3, 78, :_reduce_7,
+ 1, 80, :_reduce_none,
+ 1, 80, :_reduce_none,
+ 1, 80, :_reduce_none,
+ 1, 80, :_reduce_none,
+ 1, 80, :_reduce_none,
+ 1, 86, :_reduce_none,
+ 3, 86, :_reduce_14,
+ 8, 81, :_reduce_15,
+ 6, 82, :_reduce_16,
+ 0, 88, :_reduce_17,
+ 2, 88, :_reduce_18,
+ 3, 90, :_reduce_19,
+ 1, 91, :_reduce_none,
+ 1, 91, :_reduce_none,
+ 1, 91, :_reduce_none,
+ 1, 87, :_reduce_23,
+ 3, 87, :_reduce_24,
+ 1, 92, :_reduce_none,
+ 1, 92, :_reduce_none,
+ 4, 93, :_reduce_27,
+ 0, 96, :_reduce_28,
+ 2, 96, :_reduce_29,
+ 2, 97, :_reduce_30,
+ 1, 97, :_reduce_31,
+ 2, 97, :_reduce_32,
+ 2, 97, :_reduce_33,
+ 1, 97, :_reduce_34,
+ 1, 94, :_reduce_none,
+ 1, 94, :_reduce_none,
+ 1, 94, :_reduce_none,
+ 1, 94, :_reduce_none,
+ 1, 94, :_reduce_none,
+ 6, 99, :_reduce_40,
+ 7, 100, :_reduce_41,
+ 3, 106, :_reduce_42,
+ 6, 106, :_reduce_43,
+ 0, 107, :_reduce_44,
+ 3, 107, :_reduce_45,
+ 5, 101, :_reduce_46,
+ 0, 104, :_reduce_47,
+ 2, 104, :_reduce_48,
+ 5, 102, :_reduce_49,
+ 6, 103, :_reduce_50,
+ 2, 109, :_reduce_51,
+ 0, 108, :_reduce_52,
+ 1, 108, :_reduce_53,
+ 1, 105, :_reduce_54,
+ 3, 105, :_reduce_55,
+ 10, 83, :_reduce_56,
+ 0, 110, :_reduce_57,
+ 1, 110, :_reduce_58,
+ 4, 110, :_reduce_59,
+ 4, 111, :_reduce_60,
+ 1, 113, :_reduce_none,
+ 1, 113, :_reduce_none,
+ 0, 112, :_reduce_none,
+ 1, 112, :_reduce_none,
+ 1, 112, :_reduce_none,
+ 1, 112, :_reduce_none,
+ 0, 79, :_reduce_67,
+ 3, 79, :_reduce_68,
+ 1, 114, :_reduce_69,
+ 2, 114, :_reduce_70,
+ 2, 115, :_reduce_71,
+ 5, 115, :_reduce_72,
+ 0, 116, :_reduce_73,
+ 1, 116, :_reduce_74,
+ 3, 116, :_reduce_75,
+ 1, 117, :_reduce_none,
+ 1, 117, :_reduce_none,
+ 1, 117, :_reduce_none,
+ 4, 84, :_reduce_79,
+ 1, 118, :_reduce_none,
+ 2, 119, :_reduce_81,
+ 1, 120, :_reduce_82,
+ 3, 120, :_reduce_83,
+ 3, 121, :_reduce_84,
+ 0, 122, :_reduce_85,
+ 1, 122, :_reduce_86,
+ 3, 122, :_reduce_87,
+ 1, 123, :_reduce_none,
+ 1, 123, :_reduce_none,
+ 1, 95, :_reduce_90,
+ 1, 95, :_reduce_91,
+ 1, 95, :_reduce_92,
+ 1, 95, :_reduce_93,
+ 4, 95, :_reduce_94,
+ 4, 95, :_reduce_95,
+ 4, 95, :_reduce_96,
+ 4, 95, :_reduce_97,
+ 4, 95, :_reduce_98,
+ 1, 95, :_reduce_99,
+ 1, 95, :_reduce_100,
+ 1, 95, :_reduce_101,
+ 1, 95, :_reduce_102,
+ 1, 98, :_reduce_none,
+ 1, 98, :_reduce_none,
+ 1, 124, :_reduce_none,
+ 1, 124, :_reduce_none,
+ 1, 124, :_reduce_none,
+ 1, 85, :_reduce_none,
+ 3, 89, :_reduce_109,
+ 1, 125, :_reduce_none,
+ 1, 125, :_reduce_none,
+ 1, 127, :_reduce_none,
+ 3, 127, :_reduce_none,
+ 2, 126, :_reduce_114,
+ 2, 128, :_reduce_115,
+ 2, 129, :_reduce_116,
+ 1, 130, :_reduce_none,
+ 1, 131, :_reduce_118,
+ 3, 131, :_reduce_119,
+ 1, 132, :_reduce_120,
+ 3, 132, :_reduce_121,
+ 1, 133, :_reduce_122,
+ 2, 133, :_reduce_123,
+ 1, 134, :_reduce_124,
+ 3, 134, :_reduce_125,
+ 4, 134, :_reduce_126,
+ 1, 136, :_reduce_none,
+ 1, 136, :_reduce_none,
+ 1, 135, :_reduce_none,
+ 1, 137, :_reduce_none,
+ 3, 138, :_reduce_131,
+ 1, 139, :_reduce_none,
+ 1, 139, :_reduce_none,
+ 1, 140, :_reduce_134,
+ 1, 140, :_reduce_135,
+ 2, 140, :_reduce_136,
+ 1, 140, :_reduce_137,
+ 2, 140, :_reduce_138 ]
+
+racc_reduce_n = 139
+
+racc_shift_n = 240
+
+racc_action_table = [
+ 119, 57, 44, 60, 62, 64, 67, 78, 16, 151,
+ 186, 17, 5, 57, 14, 60, 62, 64, 67, 233,
+ 104, 217, 196, 105, 60, 62, 64, 67, 60, 62,
+ 64, 67, 14, 222, 93, 94, 18, 232, 106, 5,
+ 5, 5, 80, 83, 86, 199, 78, 224, 225, 9,
+ 181, 107, 71, 73, 54, 55, 56, 59, 61, 63,
+ 65, 68, 12, 122, 71, 73, 54, 55, 56, 59,
+ 61, 63, 65, 68, 214, 215, 9, 9, 9, 224,
+ 225, 80, 83, 86, -57, 193, 190, 191, -57, 12,
+ 12, 12, 14, 160, 161, 162, 163, 196, 108, 60,
+ 62, 64, 67, 196, 110, 60, 62, 64, 67, 160,
+ 161, 162, 163, 46, 48, 50, 14, 46, 48, 50,
+ 199, 111, 14, 20, 21, 19, 199, 71, 73, 54,
+ 55, 56, 59, 61, 63, 65, 68, 71, 73, 54,
+ 55, 56, 59, 61, 63, 65, 68, 115, 57, 116,
+ 60, 62, 64, 67, 114, 196, 112, 60, 62, 64,
+ 67, 196, 102, 60, 62, 64, 67, 57, 112, 60,
+ 62, 64, 67, 118, 101, 96, 52, 127, 128, 107,
+ 129, 130, 131, 132, 92, 134, 135, 91, 90, 138,
+ 139, 140, 141, 142, 146, 147, 148, 52, 42, 39,
+ 155, 156, 157, 158, 159, 38, 166, 166, 169, 170,
+ 171, 172, 146, 174, 119, 176, 177, 179, 14, 180,
+ 36, 35, 184, 185, 103, 166, 166, 166, 24, 33,
+ 206, 166, 208, 209, 210, 211, 212, 29, 28, 218,
+ 220, 27, 26, 226, 227, 24, 22, 230, 15, 211,
+ 14, 235, 166, 237, 238, 232 ]
+
+racc_action_check = [
+ 90, 42, 37, 42, 42, 42, 42, 111, 5, 123,
+ 168, 5, 1, 106, 123, 106, 106, 106, 106, 230,
+ 59, 202, 177, 66, 177, 177, 177, 177, 162, 162,
+ 162, 162, 37, 212, 49, 49, 5, 230, 70, 19,
+ 20, 21, 111, 111, 111, 177, 43, 222, 222, 1,
+ 162, 72, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 1, 90, 106, 106, 106, 106, 106, 106,
+ 106, 106, 106, 106, 202, 202, 19, 20, 21, 212,
+ 212, 43, 43, 43, 124, 174, 174, 174, 38, 19,
+ 20, 21, 43, 165, 165, 165, 165, 211, 73, 211,
+ 211, 211, 211, 218, 80, 218, 218, 218, 218, 136,
+ 136, 136, 136, 124, 124, 124, 124, 38, 38, 38,
+ 211, 82, 109, 6, 6, 6, 218, 109, 109, 109,
+ 109, 109, 109, 109, 109, 109, 109, 95, 95, 95,
+ 95, 95, 95, 95, 95, 95, 95, 84, 52, 84,
+ 52, 52, 52, 52, 84, 199, 83, 199, 199, 199,
+ 199, 216, 55, 216, 216, 216, 216, 128, 86, 128,
+ 128, 128, 128, 88, 54, 51, 96, 97, 98, 99,
+ 101, 102, 103, 104, 47, 107, 108, 45, 44, 113,
+ 114, 115, 116, 117, 118, 119, 120, 39, 35, 33,
+ 129, 130, 131, 132, 135, 29, 138, 139, 140, 141,
+ 142, 143, 145, 146, 147, 148, 150, 151, 153, 160,
+ 27, 24, 166, 167, 56, 169, 170, 172, 23, 22,
+ 179, 184, 187, 188, 189, 194, 198, 18, 17, 205,
+ 209, 16, 15, 214, 215, 14, 9, 220, 3, 229,
+ 2, 232, 233, 235, 236, 238 ]
+
+racc_action_pointer = [
+ nil, -1, 202, 248, nil, -6, 114, nil, nil, 195,
+ nil, nil, nil, nil, 196, 242, 239, 236, 235, 26,
+ 27, 28, 227, 179, 219, nil, nil, 205, nil, 190,
+ nil, nil, nil, 147, nil, 183, nil, -16, 72, 182,
+ nil, nil, -1, 44, 124, 171, nil, 160, nil, 32,
+ nil, 151, 146, nil, 159, 147, 209, nil, nil, 5,
+ nil, nil, nil, nil, nil, nil, 7, nil, nil, nil,
+ 14, nil, 39, 83, nil, nil, nil, nil, nil, nil,
+ 102, nil, 97, 154, 118, nil, 166, nil, 157, nil,
+ -2, nil, nil, nil, nil, 84, 161, 161, 154, 167,
+ nil, 176, 177, 178, 179, nil, 11, 183, 182, 74,
+ nil, 5, nil, 174, 175, 161, 162, 153, 175, 171,
+ 130, nil, nil, -34, 68, nil, nil, nil, 165, 184,
+ 185, 186, 187, nil, nil, 188, 84, nil, 204, 205,
+ 193, 194, 169, 196, nil, 193, 193, 212, 213, nil,
+ 149, 209, nil, 170, nil, nil, nil, nil, nil, nil,
+ 193, nil, 24, nil, nil, 68, 198, 207, -6, 223,
+ 224, nil, 225, nil, 64, nil, nil, 20, nil, 186,
+ nil, nil, nil, nil, 229, nil, nil, 216, 217, 218,
+ nil, nil, nil, nil, 166, nil, nil, nil, 166, 153,
+ nil, nil, 1, nil, nil, 171, nil, nil, nil, 208,
+ nil, 95, 8, nil, 223, 224, 159, nil, 101, nil,
+ 245, nil, -24, nil, nil, nil, nil, nil, nil, 180,
+ 4, nil, 217, 250, nil, 218, 238, nil, 222, nil ]
+
+racc_action_default = [
+ -67, -3, -2, -139, -1, -139, -4, -8, -9, -139,
+ -10, -11, -108, -12, -139, -139, -139, -139, -139, -3,
+ -3, -3, -139, -68, -139, -69, 240, -139, -67, -139,
+ -7, -5, -6, -139, -70, -71, -67, -139, -63, -139,
+ -79, -80, -73, -47, -139, -139, -64, -58, -65, -139,
+ -66, -82, -85, -81, -92, -93, -139, -13, -104, -139,
+ -105, -99, -103, -100, -106, -101, -139, -107, -102, -78,
+ -74, -90, -77, -91, -76, -35, -36, -37, -67, -38,
+ -139, -39, -23, -52, -139, -25, -52, -26, -139, -16,
+ -139, -67, -67, -61, -62, -139, -139, -139, -86, -89,
+ -88, -139, -139, -139, -139, -72, -73, -139, -139, -139,
+ -48, -47, -53, -139, -139, -139, -139, -139, -17, -112,
+ -139, -111, -110, -139, -63, -67, -83, -84, -85, -139,
+ -139, -139, -139, -75, -14, -139, -28, -24, -139, -139,
+ -139, -139, -139, -139, -15, -17, -139, -139, -139, -109,
+ -139, -139, -59, -60, -87, -95, -96, -97, -98, -94,
+ -139, -31, -139, -34, -27, -28, -54, -139, -139, -139,
+ -139, -51, -139, -18, -139, -113, -115, -139, -114, -139,
+ -30, -33, -32, -29, -139, -49, -46, -139, -139, -139,
+ -21, -22, -19, -20, -118, -120, -132, -122, -124, -139,
+ -129, -130, -139, -116, -133, -117, -56, -55, -40, -139,
+ -50, -139, -139, -123, -135, -137, -139, -134, -139, -41,
+ -139, -121, -139, -125, -127, -128, -136, -138, -131, -119,
+ -44, -126, -139, -139, -42, -139, -139, -45, -44, -43 ]
+
+racc_goto_table = [
+ 2, 74, 45, 167, 168, 97, 99, 88, 66, 53,
+ 121, 100, 194, 164, 144, 125, 223, 234, 25, 113,
+ 4, 23, 117, 95, 143, 239, 231, 34, 37, 136,
+ 40, 41, 219, 192, 187, 188, 43, 189, 30, 31,
+ 32, 173, 183, 120, 149, 89, 150, 178, 203, 207,
+ 205, 3, 221, 229, 213, 1, 228, 216, nil, nil,
+ nil, nil, nil, nil, nil, 74, 126, 175, nil, nil,
+ nil, nil, 133, nil, nil, 137, nil, nil, 109, nil,
+ nil, 154, 99, nil, nil, nil, nil, 100, 152, nil,
+ nil, 123, 124, nil, nil, nil, nil, nil, 236, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, 182, nil, nil, nil, 153 ]
+
+racc_goto_check = [
+ 4, 23, 35, 30, 30, 47, 11, 12, 41, 45,
+ 52, 23, 57, 21, 13, 20, 61, 32, 40, 33,
+ 3, 39, 33, 38, 34, 32, 61, 40, 4, 20,
+ 43, 44, 31, 16, 30, 30, 4, 30, 3, 3,
+ 3, 13, 21, 50, 51, 14, 53, 54, 55, 30,
+ 56, 1, 58, 57, 59, 2, 64, 65, nil, nil,
+ nil, nil, nil, nil, nil, 23, 45, 52, nil, nil,
+ nil, nil, 41, nil, nil, 12, nil, nil, 4, nil,
+ nil, 47, 11, nil, nil, nil, nil, 23, 35, nil,
+ nil, 4, 4, nil, nil, nil, nil, nil, 30, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, nil, nil, nil, nil, nil, nil, nil, nil, nil,
+ nil, 23, nil, nil, nil, 4 ]
+
+racc_goto_pointer = [
+ nil, 51, 55, 19, 0, nil, nil, nil, nil, nil,
+ nil, -46, -36, -104, 1, nil, -141, nil, nil, nil,
+ -80, -123, nil, -41, nil, nil, nil, nil, nil, nil,
+ -135, -177, -213, -64, -93, -36, nil, nil, -26, 7,
+ 4, -34, nil, -3, -2, -30, nil, -47, nil, nil,
+ -47, -76, -80, -74, -103, -129, -127, -165, -159, -145,
+ nil, -196, nil, nil, -160, -145 ]
+
+racc_goto_default = [
+ nil, nil, nil, nil, nil, 6, 7, 8, 10, 11,
+ 13, 72, nil, nil, nil, 145, nil, 82, 85, 87,
+ 69, nil, 165, 204, 75, 76, 77, 79, 81, 84,
+ nil, nil, nil, nil, nil, nil, 47, 49, nil, nil,
+ nil, nil, 70, nil, nil, nil, 51, nil, 98, 58,
+ nil, nil, nil, nil, nil, nil, nil, nil, 195, 197,
+ 198, nil, 200, 201, 202, nil ]
+
+racc_token_table = {
+ false => 0,
+ Object.new => 1,
+ :IDENTIFIER => 2,
+ :PARAMETER_NAME => 3,
+ :NUMERIC => 4,
+ :CHARACTER_STRING => 5,
+ :INTEGER => 6,
+ :FLOAT => 7,
+ :PROCEDURE_CODE => 8,
+ ";" => 9,
+ "$$" => 10,
+ "//" => 11,
+ "." => 12,
+ "CREATE" => 13,
+ "TABLE" => 14,
+ "(" => 15,
+ ")" => 16,
+ "VIEW" => 17,
+ "AS" => 18,
+ "ENGINE" => 19,
+ "=" => 20,
+ "MYISAM" => 21,
+ "INNODB" => 22,
+ "HEAP" => 23,
+ "," => 24,
+ "NOT" => 25,
+ "NULL" => 26,
+ "DEFAULT" => 27,
+ "AUTO_INCREMENT" => 28,
+ "PRIMARY" => 29,
+ "KEY" => 30,
+ "FOREIGN" => 31,
+ "REFERENCES" => 32,
+ "ON" => 33,
+ "DELETE" => 34,
+ "CASCADE" => 35,
+ "UNIQUE" => 36,
+ "CONSTRAINT" => 37,
+ "INDEX" => 38,
+ "FULLTEXT" => 39,
+ "USING" => 40,
+ "SECTIONALIZE" => 41,
+ "PROCEDURE" => 42,
+ "BEGIN" => 43,
+ "END" => 44,
+ "IN" => 45,
+ "OUT" => 46,
+ "INOUT" => 47,
+ "--" => 48,
+ "@" => 49,
+ "INSERT" => 50,
+ "INTO" => 51,
+ "VALUES" => 52,
+ "INT" => 53,
+ "INTEGER" => 54,
+ "TINYINT" => 55,
+ "SMALLINT" => 56,
+ "CHAR" => 57,
+ "VARCHAR" => 58,
+ "TEXT" => 59,
+ "BIT" => 60,
+ "DATETIME" => 61,
+ "TIMESTAMP" => 62,
+ "DELIMITER" => 63,
+ "SELECT" => 64,
+ "*" => 65,
+ "FROM" => 66,
+ "WHERE" => 67,
+ "OR" => 68,
+ "AND" => 69,
+ "IS" => 70,
+ "TRUE" => 71,
+ "FALSE" => 72,
+ "<" => 73,
+ ">" => 74 }
+
+racc_use_result_var = true
+
+racc_nt_base = 75
+
+Racc_arg = [
+ racc_action_table,
+ racc_action_check,
+ racc_action_default,
+ racc_action_pointer,
+ racc_goto_table,
+ racc_goto_check,
+ racc_goto_default,
+ racc_goto_pointer,
+ racc_nt_base,
+ racc_reduce_table,
+ racc_token_table,
+ racc_shift_n,
+ racc_reduce_n,
+ racc_use_result_var ]
+
+Racc_token_to_s_table = [
+'$end',
+'error',
+'IDENTIFIER',
+'PARAMETER_NAME',
+'NUMERIC',
+'CHARACTER_STRING',
+'INTEGER',
+'FLOAT',
+'PROCEDURE_CODE',
+'";"',
+'"$$"',
+'"//"',
+'"."',
+'"CREATE"',
+'"TABLE"',
+'"("',
+'")"',
+'"VIEW"',
+'"AS"',
+'"ENGINE"',
+'"="',
+'"MYISAM"',
+'"INNODB"',
+'"HEAP"',
+'","',
+'"NOT"',
+'"NULL"',
+'"DEFAULT"',
+'"AUTO_INCREMENT"',
+'"PRIMARY"',
+'"KEY"',
+'"FOREIGN"',
+'"REFERENCES"',
+'"ON"',
+'"DELETE"',
+'"CASCADE"',
+'"UNIQUE"',
+'"CONSTRAINT"',
+'"INDEX"',
+'"FULLTEXT"',
+'"USING"',
+'"SECTIONALIZE"',
+'"PROCEDURE"',
+'"BEGIN"',
+'"END"',
+'"IN"',
+'"OUT"',
+'"INOUT"',
+'"--"',
+'"@"',
+'"INSERT"',
+'"INTO"',
+'"VALUES"',
+'"INT"',
+'"INTEGER"',
+'"TINYINT"',
+'"SMALLINT"',
+'"CHAR"',
+'"VARCHAR"',
+'"TEXT"',
+'"BIT"',
+'"DATETIME"',
+'"TIMESTAMP"',
+'"DELIMITER"',
+'"SELECT"',
+'"*"',
+'"FROM"',
+'"WHERE"',
+'"OR"',
+'"AND"',
+'"IS"',
+'"TRUE"',
+'"FALSE"',
+'"<"',
+'">"',
+'$start',
+'sql',
+'module_annotation',
+'sql_command_list',
+'annotation_specification',
+'sql_command',
+'table_definition',
+'view_definition',
+'procedure_definition',
+'insert_statement',
+'alter_delimiter',
+'qualified_name',
+'table_element_list',
+'table_option_list',
+'query_specification',
+'table_option',
+'engine_type',
+'table_element',
+'column_definition',
+'constraint_definition',
+'data_type',
+'column_option_list',
+'column_option',
+'literal',
+'primary_key',
+'foreign_key',
+'unique',
+'index',
+'fulltext_index',
+'constraint_name_definition',
+'constrained_column_list',
+'references_specification',
+'triggered_action',
+'index_name_definition',
+'using',
+'parameter_list',
+'parameter',
+'parameter_direction',
+'parameter_name',
+'annotation_list',
+'annotation',
+'annotation_argument_list',
+'annotation_argument',
+'insert_columns_and_source',
+'from_constructor',
+'column_value_expression_list',
+'column_value_expression',
+'value_expression_list',
+'value_expression',
+'number',
+'select_list',
+'table_expression',
+'select_sublist',
+'from_clause',
+'where_clause',
+'search_condition',
+'boolean_value_expression',
+'boolean_term',
+'boolean_facter',
+'boolean_test',
+'boolean_primary',
+'true_value',
+'predicate',
+'comparison_predicate',
+'row_value_expression',
+'comp_op']
+
+Racc_debug_parser = false
+
+##### racc system variables end #####
+
+ # reduce 0 omitted
+
+module_eval <<'.,.,', 'sqlparser.y', 14
+ def _reduce_1( val, _values, result )
+ result = nd(:SQL, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 18
+ def _reduce_2( val, _values, result )
+ result = nd(:MODULE_ANNOTATION, val[0].children, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 22
+ def _reduce_3( val, _values, result )
+ result = nd(:SQL_COMMAND_LIST, [], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 24
+ def _reduce_4( val, _values, result )
+ result = nd(:SQL_COMMAND_LIST, [val[0]], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 27
+ def _reduce_5( val, _values, result )
+ update_pos(val[2], val)
+ result = val[2].unshift(val[0])
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 30
+ def _reduce_6( val, _values, result )
+ update_pos(val[2], val)
+ result = val[2].unshift(val[0])
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 33
+ def _reduce_7( val, _values, result )
+ update_pos(val[2], val)
+ result = val[2].unshift(val[0])
+ result
+ end
+.,.,
+
+ # reduce 8 omitted
+
+ # reduce 9 omitted
+
+ # reduce 10 omitted
+
+ # reduce 11 omitted
+
+ # reduce 12 omitted
+
+ # reduce 13 omitted
+
+module_eval <<'.,.,', 'sqlparser.y', 45
+ def _reduce_14( val, _values, result )
+ result = nd(:IDENTIFIER, val[0].value + val[1].value + val[2].value, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 51
+ def _reduce_15( val, _values, result )
+ result = table(val[2], val[5], val[4], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 56
+ def _reduce_16( val, _values, result )
+ result = nd(:CREATE_VIEW, [val[2], val[5], val[3]], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 60
+ def _reduce_17( val, _values, result )
+ result = nd(:TABLE_OPTION_LIST, [], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 63
+ def _reduce_18( val, _values, result )
+ update_pos(val[1], val)
+ result = val[1].unshift(val[0])
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 67
+ def _reduce_19( val, _values, result )
+ result = nd(:ENGINE, val[2], val)
+ result
+ end
+.,.,
+
+ # reduce 20 omitted
+
+ # reduce 21 omitted
+
+ # reduce 22 omitted
+
+module_eval <<'.,.,', 'sqlparser.y', 76
+ def _reduce_23( val, _values, result )
+ result = nd(:TABLE_ELEMENT_LIST, [val[0]], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 79
+ def _reduce_24( val, _values, result )
+ update_pos(val[2], val)
+ result = val[2].unshift(val[0])
+ result
+ end
+.,.,
+
+ # reduce 25 omitted
+
+ # reduce 26 omitted
+
+module_eval <<'.,.,', 'sqlparser.y', 87
+ def _reduce_27( val, _values, result )
+ result = column(val[0], val[2], val[3], val[1], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 91
+ def _reduce_28( val, _values, result )
+ result = nd(:COLUMN_OPTION_LIST, [], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 94
+ def _reduce_29( val, _values, result )
+ update_pos(val[0], val)
+ result = val[1].unshift(val[0])
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 97
+ def _reduce_30( val, _values, result )
+ result = nd(:NOT_NULL, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 98
+ def _reduce_31( val, _values, result )
+ result = nd(:NULL, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 99
+ def _reduce_32( val, _values, result )
+ result = nd(:DEFAULT, val[1], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 100
+ def _reduce_33( val, _values, result )
+ result = nd(:DEFAULT, nil, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 101
+ def _reduce_34( val, _values, result )
+ result = nd(:AUTO_INCREMENT, val)
+ result
+ end
+.,.,
+
+ # reduce 35 omitted
+
+ # reduce 36 omitted
+
+ # reduce 37 omitted
+
+ # reduce 38 omitted
+
+ # reduce 39 omitted
+
+module_eval <<'.,.,', 'sqlparser.y', 112
+ def _reduce_40( val, _values, result )
+ result = constraint(:PrimaryKey, val[0].value, val[4].to_a, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 120
+ def _reduce_41( val, _values, result )
+ referenced_table, referenced_columns = *(val[6].value)
+ result = constraint(:ReferencesConstraint,
+ val[0].value, val[4].to_a,
+ referenced_table, referenced_columns, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 124
+ def _reduce_42( val, _values, result )
+ result = nd(:REFERENCES_SPECIFICATION, [val[1].value, []], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 126
+ def _reduce_43( val, _values, result )
+ result = nd(:REFERENCES_SPECIFICATION, [val[1].value, val[4].value], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 129
+ def _reduce_44( val, _values, result )
+ result = nd(:TRIGGERED_ACTION, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 130
+ def _reduce_45( val, _values, result )
+ result = nd(:TRIGGERED_ACTION, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 134
+ def _reduce_46( val, _values, result )
+ result = constraint(:Unique, val[0].value, val[3].to_a, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 137
+ def _reduce_47( val, _values, result )
+ result = nd(:CONSTRAINT_NAME, '-', val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 138
+ def _reduce_48( val, _values, result )
+ result = nd(:CONSTRAINT_NAME, val[1].value, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 142
+ def _reduce_49( val, _values, result )
+ result = index(val[1].value, val[3].value, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 146
+ def _reduce_50( val, _values, result )
+ result = index(val[1].value, val[4].value, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 150
+ def _reduce_51( val, _values, result )
+ result = nd(:USING, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 153
+ def _reduce_52( val, _values, result )
+ result = nd(:CONSTRAINT_NAME, '<NO_NAME>', val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 154
+ def _reduce_53( val, _values, result )
+ result = nd(:CONSTRAINT_NAME, val[0].value, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 158
+ def _reduce_54( val, _values, result )
+ result = nd(:CONSTRAINED_COLUMN_LIST, [val[0]], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 161
+ def _reduce_55( val, _values, result )
+ update_pos(val[2], val)
+ result = val[2].unshift(val[0])
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 167
+ def _reduce_56( val, _values, result )
+ result = procedure(val[2], val[4], val[6], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 171
+ def _reduce_57( val, _values, result )
+ result = nd(:PARAMETER_LIST, [], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 173
+ def _reduce_58( val, _values, result )
+ result = nd(:PARAMETER_LIST, [val[0]], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 177
+ def _reduce_59( val, _values, result )
+ val[0].value.annotations = val[2].to_a
+ update_pos(val[3], val)
+ result = val[3].unshift(val[0])
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 181
+ def _reduce_60( val, _values, result )
+ result = parameter(val[1], val[2], val[3], val)
+ result
+ end
+.,.,
+
+ # reduce 61 omitted
+
+ # reduce 62 omitted
+
+ # reduce 63 omitted
+
+ # reduce 64 omitted
+
+ # reduce 65 omitted
+
+ # reduce 66 omitted
+
+module_eval <<'.,.,', 'sqlparser.y', 195
+ def _reduce_67( val, _values, result )
+ result = nd(:ANNTATION_LIST, [], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 199
+ def _reduce_68( val, _values, result )
+ update_pos(val[0], val)
+ val[0].value.concat(val[2].value)
+ result = val[0]
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 203
+ def _reduce_69( val, _values, result )
+ result = nd(:ANNTATION_LIST, [val[0]], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 206
+ def _reduce_70( val, _values, result )
+ update_pos(val[0], val)
+ result = val[0].push(val[1])
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 210
+ def _reduce_71( val, _values, result )
+ result = annotation(val[1], [], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 212
+ def _reduce_72( val, _values, result )
+ result = annotation(val[1], val[3], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 216
+ def _reduce_73( val, _values, result )
+ result = nd(:ANNOTATION_ARGUMENT_LIST, [], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 218
+ def _reduce_74( val, _values, result )
+ result = nd(:ANNOTATION_ARGUMENT_LIST, [val[0]], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 220
+ def _reduce_75( val, _values, result )
+ result = update_pos(val[2], val).unshift(val[0])
+ result
+ end
+.,.,
+
+ # reduce 76 omitted
+
+ # reduce 77 omitted
+
+ # reduce 78 omitted
+
+module_eval <<'.,.,', 'sqlparser.y', 229
+ def _reduce_79( val, _values, result )
+ result = nd(:INSERT, val)
+ result
+ end
+.,.,
+
+ # reduce 80 omitted
+
+module_eval <<'.,.,', 'sqlparser.y', 236
+ def _reduce_81( val, _values, result )
+ result = update_pos(val[1], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 240
+ def _reduce_82( val, _values, result )
+ result = nd(:COLUMN_VALUE_EXPRESSION_LIST, [], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 242
+ def _reduce_83( val, _values, result )
+ result = update_pos(val[2], val).unshift(val[0])
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 246
+ def _reduce_84( val, _values, result )
+ result = update_pos(val[1], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 250
+ def _reduce_85( val, _values, result )
+ result = nd(:VALUE_EXPRESSION_LIST, [], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 252
+ def _reduce_86( val, _values, result )
+ result = nd(:VALUE_EXPRESSION_LIST, [val[0]], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 254
+ def _reduce_87( val, _values, result )
+ result = update_pos(val[2], val).unshift(val[0])
+ result
+ end
+.,.,
+
+ # reduce 88 omitted
+
+ # reduce 89 omitted
+
+module_eval <<'.,.,', 'sqlparser.y', 261
+ def _reduce_90( val, _values, result )
+ result = datatype(:INTEGER, nil, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 262
+ def _reduce_91( val, _values, result )
+ result = datatype(:INTEGER, nil, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 263
+ def _reduce_92( val, _values, result )
+ result = datatype(:TINYINT, nil, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 264
+ def _reduce_93( val, _values, result )
+ result = datatype(:SMALLINT, nil, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 265
+ def _reduce_94( val, _values, result )
+ result = datatype(:INTEGER, val[2], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 266
+ def _reduce_95( val, _values, result )
+ result = datatype(:TINYINT, val[2], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 267
+ def _reduce_96( val, _values, result )
+ result = datatype(:SMALLINT, val[2], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 268
+ def _reduce_97( val, _values, result )
+ result = datatype(:CHAR, val[2], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 269
+ def _reduce_98( val, _values, result )
+ result = datatype(:VARCHAR, val[2], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 270
+ def _reduce_99( val, _values, result )
+ result = datatype(:TEXT, nil, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 271
+ def _reduce_100( val, _values, result )
+ result = datatype(:BIT, nil, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 272
+ def _reduce_101( val, _values, result )
+ result = datatype(:DATETIME, nil, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 273
+ def _reduce_102( val, _values, result )
+ result = datatype(:TIMESTAMP, nil, val)
+ result
+ end
+.,.,
+
+ # reduce 103 omitted
+
+ # reduce 104 omitted
+
+ # reduce 105 omitted
+
+ # reduce 106 omitted
+
+ # reduce 107 omitted
+
+ # reduce 108 omitted
+
+module_eval <<'.,.,', 'sqlparser.y', 289
+ def _reduce_109( val, _values, result )
+ result = nd(:QUERY_SPECIFICATION, val)
+ result
+ end
+.,.,
+
+ # reduce 110 omitted
+
+ # reduce 111 omitted
+
+ # reduce 112 omitted
+
+ # reduce 113 omitted
+
+module_eval <<'.,.,', 'sqlparser.y', 301
+ def _reduce_114( val, _values, result )
+ result = nd(:TABLE_EXPRESSION, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 305
+ def _reduce_115( val, _values, result )
+ result = nd(:FROM_CLAUSE, val[1], val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 309
+ def _reduce_116( val, _values, result )
+ result = nd(:WHERE_CLAUSE, val)
+ result
+ end
+.,.,
+
+ # reduce 117 omitted
+
+module_eval <<'.,.,', 'sqlparser.y', 316
+ def _reduce_118( val, _values, result )
+ result = nd(:BOOLEAN_VALUE_EXPRESSION, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 318
+ def _reduce_119( val, _values, result )
+ result = nd(:BOOLEAN_VALUE_EXPRESSION, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 322
+ def _reduce_120( val, _values, result )
+ result = nd(:BOOLEAN_TERM, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 324
+ def _reduce_121( val, _values, result )
+ result = nd(:BOOLEAN_TERM, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 328
+ def _reduce_122( val, _values, result )
+ result = nd(:BOOLEAN_FACTER, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 330
+ def _reduce_123( val, _values, result )
+ result = nd(:BOOLEAN_FACTER, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 334
+ def _reduce_124( val, _values, result )
+ result = nd(:BOOLEAN_TEST, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 336
+ def _reduce_125( val, _values, result )
+ result = nd(:BOOLEAN_TEST, val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 338
+ def _reduce_126( val, _values, result )
+ result = nd(:BOOLEAN_TEST, val)
+ result
+ end
+.,.,
+
+ # reduce 127 omitted
+
+ # reduce 128 omitted
+
+ # reduce 129 omitted
+
+ # reduce 130 omitted
+
+module_eval <<'.,.,', 'sqlparser.y', 352
+ def _reduce_131( val, _values, result )
+ result = nd(:PREDICATE, val)
+ result
+ end
+.,.,
+
+ # reduce 132 omitted
+
+ # reduce 133 omitted
+
+module_eval <<'.,.,', 'sqlparser.y', 359
+ def _reduce_134( val, _values, result )
+ result = nd(:COMP_OP, '>=', val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 360
+ def _reduce_135( val, _values, result )
+ result = nd(:COMP_OP, '>=', val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 361
+ def _reduce_136( val, _values, result )
+ result = nd(:COMP_OP, '>=', val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 362
+ def _reduce_137( val, _values, result )
+ result = nd(:COMP_OP, '>=', val)
+ result
+ end
+.,.,
+
+module_eval <<'.,.,', 'sqlparser.y', 363
+ def _reduce_138( val, _values, result )
+ result = nd(:COMP_OP, '>=', val)
+ result
+ end
+.,.,
+
+ def _reduce_none( val, _values, result )
+ result
+ end
+
+ end # class Parser
+
+ end # module SQL
+
+end # module Hdboo