# # DO NOT MODIFY!!!! # This file is automatically generated by Racc 1.4.9 # from Racc grammer file "". # require 'racc/parser.rb' # # file:: boolexp_parser.rb # author:: Jon A. Lambert # version:: 2.8.0 # date:: 01/19/2006 # # This source code copyright (C) 2005, 2006 by Jon A. Lambert # All rights reserved. # # Released under the terms of the TeensyMUD Public License # See LICENSE file for additional information. # $:.unshift "lib" if !$:.include? "lib" $:.unshift "vendor" if !$:.include? "vendor" if $0 == __FILE__ Dir.chdir("../..") $:.unshift "../../lib" require 'pp' end require 'core/script' class BoolExpParser < Racc::Parser module_eval(<<'...end boolexp.y/module_eval...', 'boolexp.y', 58) def initialize(obj) @obj = obj end def parse(str) @q = [] until str.empty? case str when /\A\s+/ when /\A[#]?(\d+)/ @q.push [:NUMBER, $1.to_i] when /\A.|\n/o s = $& @q.push [s, s] end str = $' end @q.push [false, '$end'] do_parse end def next_token @q.shift end ...end boolexp.y/module_eval... ##### State transition tables begin ### racc_action_table = [ 3, 3, 10, 2, 2, 4, 4, 3, 3, 9, 2, 2, 4, 4, 5, 6, nil, 6, 7, 6, 7, nil, 13 ] racc_action_check = [ 0, 7, 5, 0, 7, 0, 7, 2, 6, 3, 2, 6, 2, 6, 1, 12, nil, 1, 1, 8, 8, nil, 8 ] racc_action_pointer = [ -2, 14, 5, 2, nil, 2, 6, -1, 16, nil, nil, nil, 12, nil ] racc_action_default = [ -6, -6, -6, -6, -5, -6, -6, -6, -6, -4, 14, -1, -2, -3 ] racc_goto_table = [ 1, nil, 8, nil, nil, nil, 11, 12 ] racc_goto_check = [ 1, nil, 1, nil, nil, nil, 1, 1 ] racc_goto_pointer = [ nil, 0 ] racc_goto_default = [ nil, nil ] racc_reduce_table = [ 0, 0, :racc_error, 3, 9, :_reduce_1, 3, 9, :_reduce_2, 3, 9, :_reduce_3, 2, 9, :_reduce_4, 1, 9, :_reduce_5 ] racc_reduce_n = 6 racc_shift_n = 14 racc_token_table = { false => 0, :error => 1, "!" => 2, "&" => 3, "|" => 4, "(" => 5, ")" => 6, :NUMBER => 7 } racc_nt_base = 8 racc_use_result_var = true 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", "\"!\"", "\"&\"", "\"|\"", "\"(\"", "\")\"", "NUMBER", "$start", "exp" ] Racc_debug_parser = false ##### State transition tables end ##### # reduce 0 omitted module_eval(<<'.,.,', 'boolexp.y', 23) def _reduce_1(val, _values, result) result &&= val[2] result end .,., module_eval(<<'.,.,', 'boolexp.y', 24) def _reduce_2(val, _values, result) result ||= val[2] result end .,., module_eval(<<'.,.,', 'boolexp.y', 25) def _reduce_3(val, _values, result) result = val[1] result end .,., module_eval(<<'.,.,', 'boolexp.y', 26) def _reduce_4(val, _values, result) result = !@obj.contents.include?(val[1]) result end .,., module_eval(<<'.,.,', 'boolexp.y', 27) def _reduce_5(val, _values, result) result = @obj.contents.include?(val[0]) result end .,., def _reduce_none(val, _values, result) val[0] end end # class BoolExpParser # # BoolExp testing # if $0 == __FILE__ class Obj attr_accessor :contents end actor = Obj.new actor.contents = [234] str ="((!#245)ê)" begin x = BoolExpParser.new(actor).parse(str) pp str, actor.contents, x actor.contents = [234,245] x = BoolExpParser.new(actor).parse(str) pp str, actor.contents, x str ="((!#1))" x = BoolExpParser.new(actor).parse(str) pp str, actor.contents, x str ="234|1" x = BoolExpParser.new(actor).parse(str) pp str, actor.contents, x str ="xxxxxxxx" x = BoolExpParser.new(actor).parse(str) pp str, actor.contents, x rescue Racc::ParseError, Exception pp $! exit end end