#
# DO NOT MODIFY!!!!
# This file is automatically generated by Racc 1.4.9
# from Racc grammer file "".
#

require 'racc/parser.rb'
module CSSPool
  module CSS
    class Parser < Racc::Parser

module_eval(<<'...end parser.y/module_eval...', 'parser.y', 318)

def numeric thing
  thing = thing.gsub(/[^\d.]/, '')
  Integer(thing) rescue Float(thing)
end

def interpret_identifier s
  interpret_escapes s
end

def interpret_uri s
  interpret_escapes s.match(/^url\((.*)\)$/mu)[1].strip.match(/^(['"]?)((?:\\.|.)*)\1$/mu)[2]
end

def interpret_string s
  interpret_escapes s.match(/^(['"])((?:\\.|.)*)\1$/mu)[2]
end

def interpret_escapes s
  token_exp = /\\([0-9a-fA-F]{1,6}(?:\r\n|\s)?)|\\(.)|(.)/mu
  characters = s.scan(token_exp).map do |u_escape, i_escape, ident|
    if u_escape
      code = u_escape.chomp.to_i 16
      code = 0xFFFD if code > 0x10FFFF
      [code].pack('U')
    elsif i_escape
      if i_escape == "\n"
        ''
      else
        i_escape
      end
    else
      ident
    end
  end.join ''
end
...end parser.y/module_eval...
##### State transition tables begin ###

racc_action_table = [
    13,    17,    41,    52,    22,    25,    61,    56,    51,     4,
     6,     9,    13,    17,    83,    42,    22,    25,     3,    62,
    63,     4,     6,     9,    46,    94,    13,    17,    66,    81,
    22,    25,     8,    10,    14,     4,     6,     9,    80,    73,
     6,     9,    22,    82,     8,    10,    14,     4,     6,     9,
    22,    74,    47,    66,    67,     4,     6,     9,     8,    10,
    14,    22,    25,    10,    14,    93,     4,     6,     9,    22,
    25,    10,    14,    79,     4,     6,     9,    22,    25,    10,
    14,    78,     4,     6,     9,     6,     9,    22,    25,     8,
    10,    14,     4,     6,     9,    52,    72,     8,    10,    14,
    51,    34,   121,   105,    35,   109,    10,    14,    10,    14,
    89,    98,    90,     6,     9,     8,    10,    14,   116,    91,
   119,    92,    97,   100,   102,   104,   107,   110,   112,   115,
   118,   120,   105,   122,   109,   143,    10,    14,   123,    87,
    98,    88,     6,     9,     6,     9,   124,   116,   125,   119,
   126,    97,   100,   102,   104,   107,   110,   112,   115,   118,
   120,   105,   127,   109,   114,    10,    14,    10,    14,    98,
    68,    69,    70,    71,    86,   133,   116,   134,   119,   135,
    97,   100,   102,   104,   107,   110,   112,   115,   118,   120,
   105,   136,   109,    76,    34,    77,   137,    59,    98,    57,
    40,   141,    37,    36,   141,   116,   147,   119,    31,    97,
   100,   102,   104,   107,   110,   112,   115,   118,   120,   105,
   141,   109,   141,   nil,   nil,   nil,   nil,    98,   nil,   nil,
   nil,   nil,   nil,   nil,   116,   nil,   119,   nil,    97,   100,
   102,   104,   107,   110,   112,   115,   118,   120,   105,   nil,
   109,   nil,   131,   nil,   nil,   nil,    98,   nil,   nil,   129,
   nil,   nil,   nil,   116,   nil,   119,   128,    97,   100,   102,
   104,   107,   110,   112,   115,   118,   120,   105,   nil,   109,
   nil,   nil,   nil,   nil,   nil,    98,   nil,   nil,   nil,   nil,
   nil,   nil,   116,   nil,   119,   nil,    97,   100,   102,   104,
   107,   110,   112,   115,   118,   120,   119,   nil,    97,   100,
   102,   104,   107,   110,   112,   115,   118 ]

racc_action_check = [
    29,    29,    14,    21,    29,    29,    28,    21,    21,    29,
    29,    29,     2,     2,    55,    14,     2,     2,     1,    28,
    28,     2,     2,     2,    17,    75,    27,    27,    75,    54,
    27,    27,    29,    29,    29,    27,    27,    27,    53,    42,
    15,    15,    59,    55,     2,     2,     2,    59,    59,    59,
    64,    42,    17,    33,    33,    64,    64,    64,    27,    27,
    27,    19,    19,    15,    15,    73,    19,    19,    19,    16,
    16,    59,    59,    51,    16,    16,    16,    25,    25,    64,
    64,    49,    25,    25,    25,    20,    20,    12,    12,    19,
    19,    19,    12,    12,    12,    80,    40,    16,    16,    16,
    80,     8,    83,   116,     8,   116,    25,    25,    20,    20,
    70,   116,    70,    11,    11,    12,    12,    12,   116,    71,
   116,    71,   116,   116,   116,   116,   116,   116,   116,   116,
   116,   116,   121,    87,   121,   121,    11,    11,    88,    69,
   121,    69,     5,     5,    18,    18,    89,   121,    90,   121,
    91,   121,   121,   121,   121,   121,   121,   121,   121,   121,
   121,    82,    92,    82,    82,     5,     5,    18,    18,    82,
    36,    36,    36,    36,    66,    99,    82,   103,    82,   106,
    82,    82,    82,    82,    82,    82,    82,    82,    82,    82,
   132,   108,   132,    45,    45,    45,   111,    26,   132,    24,
    13,   117,    10,     9,   139,   132,   140,   132,     3,   132,
   132,   132,   132,   132,   132,   132,   132,   132,   132,   143,
   144,   143,   148,   nil,   nil,   nil,   nil,   143,   nil,   nil,
   nil,   nil,   nil,   nil,   143,   nil,   143,   nil,   143,   143,
   143,   143,   143,   143,   143,   143,   143,   143,    96,   nil,
    96,   nil,    96,   nil,   nil,   nil,    96,   nil,   nil,    96,
   nil,   nil,   nil,    96,   nil,    96,    96,    96,    96,    96,
    96,    96,    96,    96,    96,    96,    96,   114,   nil,   114,
   nil,   nil,   nil,   nil,   nil,   114,   nil,   nil,   nil,   nil,
   nil,   nil,   114,   nil,   114,   nil,   114,   114,   114,   114,
   114,   114,   114,   114,   114,   114,   113,   nil,   113,   113,
   113,   113,   113,   113,   113,   113,   113 ]

racc_action_pointer = [
   nil,    18,    10,   208,   nil,   130,   nil,   nil,    95,   197,
   196,   101,    81,   196,    -4,    28,    63,    20,   132,    55,
    73,    -3,   nil,   nil,   190,    71,   189,    24,    -1,    -2,
   nil,   nil,   nil,    45,   nil,   nil,   156,   nil,   nil,   nil,
    91,   nil,    33,   nil,   nil,   188,   nil,   nil,   nil,    71,
   nil,    67,   nil,    33,    19,     7,   nil,   nil,   nil,    36,
   nil,   nil,   nil,   nil,    44,   nil,   168,   nil,   nil,   135,
   106,   115,   nil,    47,   nil,    20,   nil,   nil,   nil,   nil,
    89,   nil,   157,    66,   nil,   nil,   nil,   119,   124,   132,
   134,   136,   148,   nil,   nil,   nil,   244,   nil,   nil,   168,
   nil,   nil,   nil,   170,   nil,   nil,   172,   nil,   184,   nil,
   nil,   189,   nil,   285,   273,   nil,    99,   168,   nil,   nil,
   nil,   128,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   nil,   nil,   186,   nil,   nil,   nil,   nil,   nil,   nil,   171,
   188,   nil,   nil,   215,   187,   nil,   nil,   nil,   189,   nil,
   nil ]

racc_action_default = [
    -1,  -103,  -103,  -103,   -38,   -35,   -47,   -36,  -103,  -103,
  -103,   -39,   -18,  -103,  -103,   -40,   -19,  -103,   -41,  -103,
   -42,  -103,   -37,    -2,  -103,  -103,   -28,    -5,   -30,    -6,
    -7,   151,   -34,  -103,   -15,   -22,  -103,   -48,   -43,   -16,
  -103,   -56,  -103,   -44,   -17,  -103,   -12,   -13,   -45,  -103,
   -46,  -103,   -68,   -61,  -103,  -103,   -24,   -26,   -25,  -103,
    -3,   -31,   -32,   -33,  -103,    -4,  -103,   -21,   -55,  -103,
  -103,  -103,    -8,  -103,   -57,  -103,   -10,   -11,   -20,   -69,
   -60,   -23,  -103,  -103,   -27,   -29,   -14,  -103,  -103,  -103,
  -103,  -103,  -103,   -58,    -9,   -59,   -75,   -91,   -85,   -76,
   -99,   -77,   -93,   -78,   -92,   -89,   -79,   -94,   -80,  -102,
   -95,   -81,   -96,  -103,  -103,   -97,  -103,   -67,   -98,  -100,
   -87,  -103,   -50,   -49,   -51,   -52,   -54,   -53,   -71,   -72,
   -74,   -70,  -103,  -101,   -88,   -86,   -84,   -82,   -90,   -67,
  -103,   -66,   -62,  -103,   -67,   -73,   -63,   -83,   -67,   -64,
   -65 ]

racc_goto_table = [
   117,    54,   142,    33,    84,    32,    58,    85,    64,    39,
    23,    38,    45,    44,   130,    43,    49,     2,    48,     1,
    50,   132,   138,   nil,   146,   nil,   nil,   nil,   nil,   149,
   nil,   nil,   139,   150,   140,    60,   nil,    65,   nil,   144,
    75,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
   145,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    95,   148 ]

racc_goto_check = [
    26,    13,    27,     8,    14,    19,    12,    15,    17,     6,
     2,    19,     7,     6,    26,    19,     6,     3,    19,     1,
    19,    28,    31,   nil,    27,   nil,   nil,   nil,   nil,    27,
   nil,   nil,    26,    27,    26,     2,   nil,     2,   nil,    26,
     8,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    26,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,   nil,
    13,    26 ]

racc_goto_pointer = [
   nil,    19,     8,    17,   nil,   nil,    -3,    -5,    -5,   nil,
   nil,   nil,   -19,   -20,   -55,   -57,   nil,   -20,   nil,     0,
   nil,   nil,   nil,   nil,   nil,   nil,   -82,  -115,   -75,   nil,
   nil,   -91,   nil,   nil,   nil,   nil,   nil ]

racc_goto_default = [
   nil,   nil,   nil,   nil,    27,    29,    30,   nil,   nil,    12,
    16,    19,    21,   nil,    24,    26,    28,   nil,     5,     7,
    11,    15,    18,    20,    53,    55,   nil,   nil,   nil,    96,
    99,   101,   103,   106,   108,   111,   113 ]

racc_reduce_table = [
  0, 0, :racc_error,
  0, 40, :_reduce_1,
  2, 38, :_reduce_2,
  2, 39, :_reduce_none,
  2, 39, :_reduce_none,
  1, 39, :_reduce_none,
  1, 39, :_reduce_none,
  1, 39, :_reduce_none,
  3, 41, :_reduce_8,
  4, 42, :_reduce_9,
  3, 42, :_reduce_10,
  2, 44, :_reduce_none,
  1, 44, :_reduce_12,
  1, 44, :_reduce_13,
  3, 45, :_reduce_14,
  1, 45, :_reduce_15,
  2, 43, :_reduce_none,
  2, 43, :_reduce_none,
  1, 43, :_reduce_none,
  1, 43, :_reduce_none,
  3, 47, :_reduce_20,
  3, 48, :_reduce_21,
  2, 48, :_reduce_22,
  3, 46, :_reduce_23,
  2, 46, :_reduce_24,
  2, 49, :_reduce_25,
  2, 49, :_reduce_26,
  3, 51, :_reduce_27,
  1, 51, :_reduce_28,
  3, 52, :_reduce_29,
  1, 52, :_reduce_none,
  1, 54, :_reduce_31,
  1, 54, :_reduce_32,
  1, 54, :_reduce_33,
  2, 53, :_reduce_34,
  1, 53, :_reduce_35,
  1, 53, :_reduce_36,
  1, 55, :_reduce_37,
  1, 55, :_reduce_38,
  1, 56, :_reduce_39,
  1, 56, :_reduce_40,
  1, 56, :_reduce_41,
  1, 56, :_reduce_42,
  2, 56, :_reduce_43,
  2, 56, :_reduce_44,
  2, 56, :_reduce_45,
  2, 56, :_reduce_46,
  1, 57, :_reduce_47,
  2, 58, :_reduce_48,
  5, 59, :_reduce_49,
  5, 59, :_reduce_50,
  5, 59, :_reduce_51,
  5, 59, :_reduce_52,
  5, 59, :_reduce_53,
  5, 59, :_reduce_54,
  3, 59, :_reduce_55,
  2, 60, :_reduce_56,
  3, 60, :_reduce_57,
  4, 60, :_reduce_58,
  3, 50, :_reduce_none,
  2, 50, :_reduce_none,
  1, 50, :_reduce_none,
  4, 61, :_reduce_62,
  5, 61, :_reduce_63,
  5, 61, :_reduce_64,
  6, 61, :_reduce_65,
  1, 64, :_reduce_66,
  0, 64, :_reduce_67,
  1, 62, :_reduce_68,
  2, 62, :_reduce_69,
  1, 65, :_reduce_none,
  1, 65, :_reduce_none,
  1, 65, :_reduce_none,
  3, 63, :_reduce_73,
  2, 63, :_reduce_74,
  1, 63, :_reduce_75,
  1, 66, :_reduce_none,
  1, 66, :_reduce_none,
  1, 66, :_reduce_none,
  1, 66, :_reduce_none,
  1, 66, :_reduce_none,
  1, 66, :_reduce_none,
  2, 72, :_reduce_82,
  3, 72, :_reduce_83,
  2, 71, :_reduce_84,
  1, 71, :_reduce_85,
  2, 70, :_reduce_86,
  1, 70, :_reduce_87,
  2, 69, :_reduce_88,
  1, 69, :_reduce_89,
  2, 68, :_reduce_90,
  1, 68, :_reduce_91,
  1, 68, :_reduce_92,
  1, 68, :_reduce_93,
  1, 68, :_reduce_94,
  1, 68, :_reduce_95,
  1, 68, :_reduce_96,
  1, 68, :_reduce_97,
  1, 68, :_reduce_98,
  1, 73, :_reduce_99,
  1, 73, :_reduce_100,
  2, 67, :_reduce_101,
  1, 67, :_reduce_102 ]

racc_reduce_n = 103

racc_shift_n = 151

racc_token_table = {
  false => 0,
  :error => 1,
  :CHARSET_SYM => 2,
  :IMPORT_SYM => 3,
  :STRING => 4,
  :SEMI => 5,
  :IDENT => 6,
  :S => 7,
  :COMMA => 8,
  :LBRACE => 9,
  :RBRACE => 10,
  :STAR => 11,
  :HASH => 12,
  :LSQUARE => 13,
  :RSQUARE => 14,
  :EQUAL => 15,
  :INCLUDES => 16,
  :DASHMATCH => 17,
  :RPAREN => 18,
  :FUNCTION => 19,
  :GREATER => 20,
  :PLUS => 21,
  :SLASH => 22,
  :NUMBER => 23,
  :MINUS => 24,
  :LENGTH => 25,
  :PERCENTAGE => 26,
  :EMS => 27,
  :EXS => 28,
  :ANGLE => 29,
  :TIME => 30,
  :FREQ => 31,
  :URI => 32,
  :IMPORTANT_SYM => 33,
  :MEDIA_SYM => 34,
  "." => 35,
  ":" => 36 }

racc_nt_base = 37

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",
  "CHARSET_SYM",
  "IMPORT_SYM",
  "STRING",
  "SEMI",
  "IDENT",
  "S",
  "COMMA",
  "LBRACE",
  "RBRACE",
  "STAR",
  "HASH",
  "LSQUARE",
  "RSQUARE",
  "EQUAL",
  "INCLUDES",
  "DASHMATCH",
  "RPAREN",
  "FUNCTION",
  "GREATER",
  "PLUS",
  "SLASH",
  "NUMBER",
  "MINUS",
  "LENGTH",
  "PERCENTAGE",
  "EMS",
  "EXS",
  "ANGLE",
  "TIME",
  "FREQ",
  "URI",
  "IMPORTANT_SYM",
  "MEDIA_SYM",
  "\".\"",
  "\":\"",
  "$start",
  "document",
  "stylesheet",
  "@1",
  "charset",
  "import",
  "body",
  "import_location",
  "medium",
  "ruleset",
  "media",
  "start_media",
  "start_selector",
  "declarations",
  "selectors",
  "selector",
  "simple_selector",
  "combinator",
  "element_name",
  "hcap",
  "hash",
  "class",
  "attrib",
  "pseudo",
  "declaration",
  "property",
  "expr",
  "prio",
  "operator",
  "term",
  "ident",
  "numeric",
  "string",
  "uri",
  "hexcolor",
  "function",
  "unary_operator" ]

Racc_debug_parser = false

##### State transition tables end #####

# reduce 0 omitted

module_eval(<<'.,.,', 'parser.y', 9)
  def _reduce_1(val, _values, result)
     @handler.start_document 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 11)
  def _reduce_2(val, _values, result)
     @handler.end_document 
    result
  end
.,.,

# reduce 3 omitted

# reduce 4 omitted

# reduce 5 omitted

# reduce 6 omitted

# reduce 7 omitted

module_eval(<<'.,.,', 'parser.y', 21)
  def _reduce_8(val, _values, result)
     @handler.charset interpret_string(val[1]), {} 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 25)
  def _reduce_9(val, _values, result)
            @handler.import_style [val[2]].flatten, val[1]
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 28)
  def _reduce_10(val, _values, result)
            @handler.import_style [], val[1]
      
    result
  end
.,.,

# reduce 11 omitted

module_eval(<<'.,.,', 'parser.y', 33)
  def _reduce_12(val, _values, result)
     result = Terms::String.new interpret_string val.first 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 34)
  def _reduce_13(val, _values, result)
     result = Terms::URI.new interpret_uri val.first 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 38)
  def _reduce_14(val, _values, result)
            result = [val.first, Terms::Ident.new(interpret_identifier val.last)]
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 41)
  def _reduce_15(val, _values, result)
            result = Terms::Ident.new interpret_identifier val.first
      
    result
  end
.,.,

# reduce 16 omitted

# reduce 17 omitted

# reduce 18 omitted

# reduce 19 omitted

module_eval(<<'.,.,', 'parser.y', 51)
  def _reduce_20(val, _values, result)
     @handler.end_media val.first 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 55)
  def _reduce_21(val, _values, result)
            result = [val[1]].flatten
        @handler.start_media result
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 58)
  def _reduce_22(val, _values, result)
     result = [] 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 62)
  def _reduce_23(val, _values, result)
            @handler.end_selector val.first
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 65)
  def _reduce_24(val, _values, result)
            @handler.end_selector val.first
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 69)
  def _reduce_25(val, _values, result)
     result = val.last 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 71)
  def _reduce_26(val, _values, result)
            @handler.start_selector val.first
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 77)
  def _reduce_27(val, _values, result)
            # FIXME: should always garantee array
        sel = Selector.new(val.first, {})
        result = [sel, val[2]].flatten
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 83)
  def _reduce_28(val, _values, result)
            result = [Selector.new(val.first, {})]
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 89)
  def _reduce_29(val, _values, result)
            val = val.flatten
        val[2].combinator = val.delete_at 1
        result = val
      
    result
  end
.,.,

# reduce 30 omitted

module_eval(<<'.,.,', 'parser.y', 96)
  def _reduce_31(val, _values, result)
     result = :s 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 97)
  def _reduce_32(val, _values, result)
     result = :> 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 98)
  def _reduce_33(val, _values, result)
     result = :+ 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 102)
  def _reduce_34(val, _values, result)
            selector = val.first
        selector.additional_selectors = val.last
        result = [selector]
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 106)
  def _reduce_35(val, _values, result)
     result = val 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 109)
  def _reduce_36(val, _values, result)
            ss = Selectors::Simple.new nil, nil
        ss.additional_selectors = val.flatten
        result = [ss]
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 115)
  def _reduce_37(val, _values, result)
     result = Selectors::Type.new interpret_identifier val.first 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 116)
  def _reduce_38(val, _values, result)
     result = Selectors::Universal.new val.first 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 119)
  def _reduce_39(val, _values, result)
     result = val 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 120)
  def _reduce_40(val, _values, result)
     result = val 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 121)
  def _reduce_41(val, _values, result)
     result = val 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 122)
  def _reduce_42(val, _values, result)
     result = val 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 123)
  def _reduce_43(val, _values, result)
     result = val.flatten 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 124)
  def _reduce_44(val, _values, result)
     result = val.flatten 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 125)
  def _reduce_45(val, _values, result)
     result = val.flatten 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 126)
  def _reduce_46(val, _values, result)
     result = val.flatten 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 130)
  def _reduce_47(val, _values, result)
            result = Selectors::Id.new interpret_identifier val.first.sub(/^#/, '')
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 134)
  def _reduce_48(val, _values, result)
            result = Selectors::Class.new interpret_identifier val.last
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 139)
  def _reduce_49(val, _values, result)
            result = Selectors::Attribute.new(
          interpret_identifier(val[1]),
          interpret_identifier(val[3]),
          Selectors::Attribute::EQUALS
        )
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 146)
  def _reduce_50(val, _values, result)
            result = Selectors::Attribute.new(
          interpret_identifier(val[1]),
          interpret_string(val[3]),
          Selectors::Attribute::EQUALS
        )
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 153)
  def _reduce_51(val, _values, result)
            result = Selectors::Attribute.new(
          interpret_identifier(val[1]),
          interpret_string(val[3]),
          Selectors::Attribute::INCLUDES
        )
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 160)
  def _reduce_52(val, _values, result)
            result = Selectors::Attribute.new(
          interpret_identifier(val[1]),
          interpret_identifier(val[3]),
          Selectors::Attribute::INCLUDES
        )
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 167)
  def _reduce_53(val, _values, result)
            result = Selectors::Attribute.new(
          interpret_identifier(val[1]),
          interpret_identifier(val[3]),
          Selectors::Attribute::DASHMATCH
        )
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 174)
  def _reduce_54(val, _values, result)
            result = Selectors::Attribute.new(
          interpret_identifier(val[1]),
          interpret_string(val[3]),
          Selectors::Attribute::DASHMATCH
        )
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 181)
  def _reduce_55(val, _values, result)
            result = Selectors::Attribute.new(
          interpret_identifier(val[1]),
          nil,
          Selectors::Attribute::SET
        )
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 190)
  def _reduce_56(val, _values, result)
            result = Selectors::PseudoClass.new(
          interpret_identifier(val[1])
        )
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 195)
  def _reduce_57(val, _values, result)
            result = Selectors::PseudoClass.new(
          interpret_identifier(val[1].sub(/\($/, '')),
          ''
        )
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 201)
  def _reduce_58(val, _values, result)
            result = Selectors::PseudoClass.new(
          interpret_identifier(val[1].sub(/\($/, '')),
          interpret_identifier(val[2])
        )
      
    result
  end
.,.,

# reduce 59 omitted

# reduce 60 omitted

# reduce 61 omitted

module_eval(<<'.,.,', 'parser.y', 214)
  def _reduce_62(val, _values, result)
     @handler.property val.first, val[2], val[3] 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 216)
  def _reduce_63(val, _values, result)
     @handler.property val.first, val[3], val[4] 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 218)
  def _reduce_64(val, _values, result)
     @handler.property val.first, val[3], val[4] 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 220)
  def _reduce_65(val, _values, result)
     @handler.property val.first, val[4], val[5] 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 223)
  def _reduce_66(val, _values, result)
     result = true 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 224)
  def _reduce_67(val, _values, result)
     result = false 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 227)
  def _reduce_68(val, _values, result)
     result = interpret_identifier val[0] 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 228)
  def _reduce_69(val, _values, result)
     result = interpret_identifier val.join 
    result
  end
.,.,

# reduce 70 omitted

# reduce 71 omitted

# reduce 72 omitted

module_eval(<<'.,.,', 'parser.y', 237)
  def _reduce_73(val, _values, result)
            result = [val.first, val.last].flatten
        val.last.first.operator = val[1]
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 240)
  def _reduce_74(val, _values, result)
     result = val.flatten 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 241)
  def _reduce_75(val, _values, result)
     result = val 
    result
  end
.,.,

# reduce 76 omitted

# reduce 77 omitted

# reduce 78 omitted

# reduce 79 omitted

# reduce 80 omitted

# reduce 81 omitted

module_eval(<<'.,.,', 'parser.y', 252)
  def _reduce_82(val, _values, result)
     result = val.first 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 254)
  def _reduce_83(val, _values, result)
            name = interpret_identifier val.first.sub(/\($/, '')
        if name == 'rgb'
          result = Terms::Rgb.new(*val[1])
        else
          result = Terms::Function.new name, val[1]
        end
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 263)
  def _reduce_84(val, _values, result)
     result = val.first 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 264)
  def _reduce_85(val, _values, result)
     result = Terms::Hash.new val.first.sub(/^#/, '') 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 267)
  def _reduce_86(val, _values, result)
     result = val.first 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 268)
  def _reduce_87(val, _values, result)
     result = Terms::URI.new interpret_uri val.first 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 270)
  def _reduce_88(val, _values, result)
     result = val.first 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 271)
  def _reduce_89(val, _values, result)
     result = Terms::String.new interpret_string val.first 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 275)
  def _reduce_90(val, _values, result)
            result = val[1]
        val[1].unary_operator = val.first
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 279)
  def _reduce_91(val, _values, result)
            result = Terms::Number.new numeric val.first
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 282)
  def _reduce_92(val, _values, result)
            result = Terms::Number.new numeric(val.first), nil, '%'
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 285)
  def _reduce_93(val, _values, result)
            unit    = val.first.gsub(/[\s\d.]/, '')
        result = Terms::Number.new numeric(val.first), nil, unit
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 289)
  def _reduce_94(val, _values, result)
            result = Terms::Number.new numeric(val.first), nil, 'em'
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 292)
  def _reduce_95(val, _values, result)
            result = Terms::Number.new numeric(val.first), nil, 'ex'
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 295)
  def _reduce_96(val, _values, result)
            unit    = val.first.gsub(/[\s\d.]/, '')
        result = Terms::Number.new numeric(val.first), nil, unit
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 299)
  def _reduce_97(val, _values, result)
            unit    = val.first.gsub(/[\s\d.]/, '')
        result = Terms::Number.new numeric(val.first), nil, unit
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 303)
  def _reduce_98(val, _values, result)
            unit    = val.first.gsub(/[\s\d.]/, '')
        result = Terms::Number.new numeric(val.first), nil, unit
      
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 308)
  def _reduce_99(val, _values, result)
     result = :minus 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 309)
  def _reduce_100(val, _values, result)
     result = :plus 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 312)
  def _reduce_101(val, _values, result)
     result = val.first 
    result
  end
.,.,

module_eval(<<'.,.,', 'parser.y', 313)
  def _reduce_102(val, _values, result)
     result = Terms::Ident.new interpret_identifier val.first 
    result
  end
.,.,

def _reduce_none(val, _values, result)
  val[0]
end

    end   # class Parser
    end   # module CSS
  end   # module CSSPool
