require 'racc/parser' # # msql.rb : generated by racc # class MSQLParser < Racc::Parser module_eval <<'..end msql.ry modeval..id118f4c7110', 'msql.ry', 226 RESERVED = ['AND', 'BY', 'CHAR', 'CLIKE', 'CREATE', 'DATE', 'DELETE', 'DESC', 'DROP', 'FROM', 'INDEX', 'INSERT', 'INT', 'INTO', 'LIKE', 'MONEY', 'NOT', 'NULL', 'ON', 'OR', 'ORDER', 'REAL', 'RLIKE', 'SELECT', 'SEQUENCE', 'SET', 'STEP', 'TABLE', 'TEXT', 'TIME', 'UINT', 'UPDATE', 'VALUE', 'VALUES', 'WHERE'] def parse( str ) @q = [] return nil if /\A\n/ =~ str while str.size > 0 do case str when /\A\s+/, /\A\n/ when /\A\d+/ @q.push [:FIXNUM, $&.to_i] when /\A\'.*\'/ s = $& @q.push [:LITERAL, s] when /\A\w+/ s = $& if RESERVED.include?(s.upcase) @q.push [eval(":#{s.upcase}"), s] else @q.push [:NAME, s] end when /\A./ s = $& @q.push [s, s] end str = $' end @q.push [false, '$'] do_parse end def next_token @q.shift end def on_error( err_tok, err_val, _values ) p err_tok, err_val, _values end ..end msql.ry modeval..id118f4c7110 ##### racc 1.2.5 generates ### racc_reduce_table = [ 0, 0, :racc_error, 1, 53, :_reduce_none, 2, 54, :_reduce_none, 3, 54, :_reduce_none, 1, 55, :_reduce_none, 1, 55, :_reduce_none, 1, 55, :_reduce_none, 1, 55, :_reduce_none, 1, 55, :_reduce_none, 1, 55, :_reduce_none, 1, 56, :_reduce_none, 1, 56, :_reduce_none, 1, 56, :_reduce_none, 6, 62, :_reduce_none, 1, 66, :_reduce_none, 3, 66, :_reduce_none, 3, 67, :_reduce_none, 0, 70, :_reduce_none, 2, 70, :_reduce_none, 6, 63, :_reduce_none, 0, 71, :_reduce_none, 2, 71, :_reduce_none, 0, 72, :_reduce_none, 2, 72, :_reduce_none, 8, 64, :_reduce_none, 4, 57, :_reduce_none, 3, 58, :_reduce_none, 3, 58, :_reduce_none, 4, 58, :_reduce_none, 8, 59, :_reduce_none, 0, 76, :_reduce_none, 3, 76, :_reduce_none, 1, 77, :_reduce_none, 7, 60, :_reduce_none, 0, 79, :_reduce_none, 1, 79, :_reduce_none, 0, 80, :_reduce_none, 3, 80, :_reduce_none, 1, 81, :_reduce_none, 3, 81, :_reduce_none, 2, 82, :_reduce_none, 0, 83, :_reduce_none, 1, 83, :_reduce_none, 5, 61, :_reduce_none, 1, 84, :_reduce_none, 3, 84, :_reduce_none, 3, 85, :_reduce_none, 1, 86, :_reduce_none, 1, 78, :_reduce_none, 3, 78, :_reduce_none, 1, 74, :_reduce_none, 3, 74, :_reduce_none, 0, 75, :_reduce_none, 1, 75, :_reduce_none, 2, 89, :_reduce_none, 3, 90, :_reduce_none, 3, 90, :_reduce_none, 3, 90, :_reduce_none, 1, 90, :_reduce_none, 1, 91, :_reduce_none, 1, 91, :_reduce_none, 3, 92, :_reduce_none, 3, 92, :_reduce_none, 3, 92, :_reduce_none, 3, 92, :_reduce_none, 3, 92, :_reduce_none, 3, 92, :_reduce_none, 3, 93, :_reduce_none, 3, 93, :_reduce_none, 3, 93, :_reduce_none, 1, 94, :_reduce_none, 1, 94, :_reduce_none, 3, 94, :_reduce_none, 4, 69, :_reduce_none, 1, 69, :_reduce_none, 1, 69, :_reduce_none, 1, 69, :_reduce_none, 1, 69, :_reduce_none, 4, 69, :_reduce_none, 1, 69, :_reduce_none, 1, 69, :_reduce_none, 1, 95, :_reduce_none, 1, 87, :_reduce_none, 1, 87, :_reduce_none, 1, 68, :_reduce_none, 1, 88, :_reduce_none, 3, 88, :_reduce_none, 1, 73, :_reduce_none, 1, 65, :_reduce_none ] racc_reduce_n = 89 racc_shift_n = 168 racc_action_table = [ 94, 95, 96, 97, 99, 101, 94, 95, 96, 97, 99, 101, 128, 70, 72, 141, 128, 70, 127, 128, 70, 72, 70, 72, 70, 128, 75, 70, 61, 70, 78, 70, 72, 70, 110, 111, 98, 100, 93, 128, 70, 66, 98, 100, 93, 66, 128, 70, 66, 46, 66, 46, 66, 46, 70, 66, 46, 66, 46, 66, 46, 66, 46, 128, 70, 128, 77, 64, 66, 46, 128, 70, 128, 70, 9, 66, 46, 63, 70, 46, 70, 80, 66, 46, 53, 21, 24, 1, 51, 5, 8, 20, 66, 14, 89, 90, 22, 9, 7, 66, 46, 66, 46, 157, 64, 86, 66, 46, 66, 46, 1, 27, 5, 8, 89, 90, 14, 26, 106, 64, 126, 7, 28, 113, 114, 115, 116, 117, 119, 120, 112, 24, 46, 60, 24, 58, 53, 53, 105, 24, 107, 109, 51, 48, 121, 122, 46, 44, 38, 24, 41, 24, 39, 38, 24, 35, 24, 33, 30, 29, 62, 53, 143, 144, 146, 46, 148, 51, 25, 151, 152, 153, 155, 153, 24, 53, 127, 19, 162, 163, 164, 165, 53 ] racc_action_check = [ 73, 73, 73, 73, 73, 73, 92, 92, 92, 92, 92, 92, 101, 75, 72, 109, 128, 105, 92, 94, 101, 90, 72, 51, 128, 93, 54, 94, 43, 90, 57, 51, 89, 93, 82, 82, 73, 73, 73, 99, 89, 75, 92, 92, 92, 105, 98, 99, 101, 101, 72, 72, 128, 128, 98, 94, 94, 90, 90, 51, 51, 93, 93, 97, 152, 96, 55, 47, 89, 89, 95, 97, 100, 96, 0, 99, 99, 47, 95, 58, 100, 59, 98, 98, 60, 5, 61, 0, 55, 0, 0, 5, 152, 0, 67, 67, 5, 16, 0, 97, 97, 96, 96, 147, 147, 62, 95, 95, 100, 100, 16, 9, 16, 16, 91, 91, 16, 9, 79, 79, 91, 16, 9, 84, 84, 84, 84, 84, 84, 84, 84, 63, 64, 42, 41, 40, 39, 77, 78, 35, 80, 81, 34, 32, 85, 87, 31, 29, 28, 27, 26, 25, 23, 22, 21, 20, 19, 18, 14, 13, 46, 111, 113, 118, 119, 121, 122, 123, 8, 138, 139, 143, 144, 146, 7, 148, 150, 1, 154, 156, 158, 160, 164 ] racc_action_pointer = [ 63, 152, nil, nil, nil, 73, nil, 124, 140, 99, nil, nil, nil, 159, 127, nil, 86, nil, 147, 106, 130, 104, 103, 116, nil, 101, 131, 99, 98, 147, nil, 96, 133, nil, 105, 89, nil, nil, nil, 86, 122, 84, 120, 9, nil, nil, 109, 52, nil, nil, nil, 10, nil, nil, 24, 51, nil, 1, 29, 61, 34, 36, 55, 81, 82, nil, nil, 86, nil, nil, nil, nil, 1, -2, nil, -8, nil, 87, 125, 104, 119, 119, 20, nil, 82, 131, nil, 113, nil, 19, 8, 106, 4, 12, 6, 57, 52, 50, 33, 26, 59, -1, nil, nil, nil, -4, nil, nil, nil, -6, nil, 111, nil, 149, nil, nil, nil, nil, 147, 151, nil, 115, 133, 130, nil, nil, nil, nil, 3, nil, nil, nil, nil, nil, nil, nil, nil, nil, 155, 155, nil, nil, nil, 150, 155, nil, 152, 89, 125, nil, 162, nil, 43, nil, 164, nil, 165, nil, 165, nil, 147, nil, nil, nil, 132, nil, nil, nil ] racc_action_default = [ -89, -89, -12, -4, -5, -89, -6, -89, -89, -89, -7, -8, -9, -89, -34, -10, -1, -11, -89, -89, -89, -89, -89, -89, -88, -89, -89, -89, -89, -89, -35, -89, -89, -2, -52, -89, -27, -26, -87, -89, -30, -89, -89, -89, 168, -50, -85, -89, -3, -53, -25, -89, -28, -84, -89, -52, -44, -89, -89, -20, -89, -89, -89, -89, -89, -71, -83, -54, -58, -59, -82, -60, -89, -89, -70, -89, -43, -89, -89, -89, -89, -22, -89, -14, -89, -89, -86, -36, -51, -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, -46, -47, -45, -89, -31, -21, -19, -89, -13, -89, -80, -89, -74, -75, -76, -77, -17, -89, -79, -89, -89, -52, -55, -56, -57, -72, -89, -69, -61, -62, -64, -66, -67, -63, -68, -65, -89, -32, -48, -23, -15, -89, -89, -16, -89, -89, -89, -33, -89, -29, -89, -81, -89, -18, -89, -24, -37, -38, -41, -49, -73, -78, -89, -42, -40, -39 ] racc_goto_table = [ 84, 47, 45, 103, 50, 83, 159, 18, 56, 67, 37, 154, 138, 57, 156, 92, 43, 139, 31, 123, 158, 108, 167, 32, 166, 76, 55, 81, 79, 45, 91, 102, 145, 140, 118, 88, 129, 130, 131, 132, 133, 134, 135, 136, 137, 23, 104, 124, 125, 82, 16, 84, 13, nil, nil, nil, 142, 34, nil, 36, nil, nil, nil, 40, nil, 42, nil, nil, nil, nil, nil, 150, nil, 52, nil, nil, nil, nil, nil, 59, 161, nil, nil, nil, nil, nil, nil, nil, 160, nil, nil, 147, 45, 149, nil, nil, nil, nil, nil, 85, nil, 87, nil, nil, 160 ] racc_goto_check = [ 16, 22, 36, 35, 23, 15, 30, 3, 33, 38, 21, 43, 25, 24, 43, 42, 21, 26, 27, 28, 29, 20, 30, 3, 31, 23, 32, 19, 22, 36, 38, 34, 18, 35, 17, 36, 42, 42, 42, 42, 42, 42, 42, 42, 42, 13, 33, 38, 38, 14, 2, 16, 1, nil, nil, nil, 15, 13, nil, 13, nil, nil, nil, 13, nil, 13, nil, nil, nil, nil, nil, 42, nil, 13, nil, nil, nil, nil, nil, 13, 35, nil, nil, nil, nil, nil, nil, nil, 16, nil, nil, 22, 36, 23, nil, nil, nil, nil, nil, 13, nil, 13, nil, nil, 16 ] racc_goto_pointer = [ nil, 52, 50, 7, nil, nil, nil, nil, nil, nil, nil, nil, nil, 38, -11, -55, -60, -50, -86, -32, -60, -12, -30, -30, -27, -93, -88, 4, -68, -128, -142, -136, -13, -31, -44, -72, -29, nil, -42, nil, nil, nil, -57, -132 ] racc_goto_default = [ nil, nil, nil, nil, 3, 4, 6, 10, 11, 12, 15, 17, 2, nil, nil, nil, 54, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 74, 65, 49, nil, 68, 69, 71, 73, nil ] racc_token_table = { false => 0, Object.new => 1, "=" => 2, "<>" => 3, "<" => 4, ">" => 5, "<=" => 6, ">=" => 7, :AND => 8, :OR => 9, ";" => 10, :CREATE => 11, :TABLE => 12, "(" => 13, ")" => 14, "," => 15, :NOT => 16, :NULL => 17, :SEQUENCE => 18, :ON => 19, :STEP => 20, :FIXNUM => 21, :VALUE => 22, :INDEX => 23, :DELETE => 24, :FROM => 25, :DROP => 26, :INSERT => 27, :INTO => 28, :VALUES => 29, :SELECT => 30, :DISTINCT => 31, :ORDER => 32, :BY => 33, :DESC => 34, :UPDATE => 35, :SET => 36, :WHERE => 37, :LIKE => 38, :RLIKE => 39, :CLIKE => 40, :CHAR => 41, :DATE => 42, :INT => 43, :MONEY => 44, :REAL => 45, :TEXT => 46, :TIME => 47, :UINT => 48, :LITERAL => 49, :NAME => 50, "." => 51 } racc_use_result_var = true racc_nt_base = 52 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_debug_parser = false ##### racc system variables end ##### # reduce 0 omitted # reduce 1 omitted # reduce 2 omitted # reduce 3 omitted # reduce 4 omitted # reduce 5 omitted # reduce 6 omitted # reduce 7 omitted # reduce 8 omitted # reduce 9 omitted # reduce 10 omitted # reduce 11 omitted # reduce 12 omitted # reduce 13 omitted # reduce 14 omitted # reduce 15 omitted # reduce 16 omitted # reduce 17 omitted # reduce 18 omitted # reduce 19 omitted # reduce 20 omitted # reduce 21 omitted # reduce 22 omitted # reduce 23 omitted # reduce 24 omitted # reduce 25 omitted # reduce 26 omitted # reduce 27 omitted # reduce 28 omitted # reduce 29 omitted # reduce 30 omitted # reduce 31 omitted # reduce 32 omitted # reduce 33 omitted # reduce 34 omitted # reduce 35 omitted # reduce 36 omitted # reduce 37 omitted # reduce 38 omitted # reduce 39 omitted # reduce 40 omitted # reduce 41 omitted # reduce 42 omitted # reduce 43 omitted # reduce 44 omitted # reduce 45 omitted # reduce 46 omitted # reduce 47 omitted # reduce 48 omitted # reduce 49 omitted # reduce 50 omitted # reduce 51 omitted # reduce 52 omitted # reduce 53 omitted # reduce 54 omitted # reduce 55 omitted # reduce 56 omitted # reduce 57 omitted # reduce 58 omitted # reduce 59 omitted # reduce 60 omitted # reduce 61 omitted # reduce 62 omitted # reduce 63 omitted # reduce 64 omitted # reduce 65 omitted # reduce 66 omitted # reduce 67 omitted # reduce 68 omitted # reduce 69 omitted # reduce 70 omitted # reduce 71 omitted # reduce 72 omitted # reduce 73 omitted # reduce 74 omitted # reduce 75 omitted # reduce 76 omitted # reduce 77 omitted # reduce 78 omitted # reduce 79 omitted # reduce 80 omitted # reduce 81 omitted # reduce 82 omitted # reduce 83 omitted # reduce 84 omitted # reduce 85 omitted # reduce 86 omitted # reduce 87 omitted # reduce 88 omitted def _reduce_none( val, _values, result ) result end end parser = MSQLParser.new while line = ARGF.gets begin p parser.parse(line) rescue Racc::ParseError p $! end end