Class: RedParse::MultiReduce

Inherits:
Object
  • Object
show all
Defined in:
lib/redparse/compile.rb,
lib/redparse/compile.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(list, default) ⇒ MultiReduce

Returns a new instance of MultiReduce.



1014
1015
1016
1017
# File 'lib/redparse/compile.rb', line 1014

def initialize(list,default)
  @list,@default=list,default
  #default can be any valid action (except another MultiReduce)
end

Instance Attribute Details

#defaultObject (readonly)

Returns the value of attribute default.



1019
1020
1021
# File 'lib/redparse/compile.rb', line 1019

def default
  @default
end

#listObject (readonly)

Returns the value of attribute list.



1019
1020
1021
# File 'lib/redparse/compile.rb', line 1019

def list
  @list
end

Instance Method Details

#==(other) ⇒ Object Also known as: eql?



1057
1058
1059
# File 'lib/redparse/compile.rb', line 1057

def == other
  @list==other.list and @default==other.default
end

#act(x) ⇒ Object



1021
1022
1023
1024
1025
1026
# File 'lib/redparse/compile.rb', line 1021

def act(x)
  (0...@list.size).step(2){|i|
    return @list[i+1] if @list[i]===x
  }
  return default
end

#actionsObject



1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
# File 'lib/redparse/compile.rb', line 1036

def actions
  result=[]
  (1...@list.size).step(2){|i|
    result << @list[i]
  }
  if @default.respond_to? :actions
    result.concat @default.actions 
  elsif @default
    result<<@default
  end
  result
end

#hashObject



1053
1054
1055
# File 'lib/redparse/compile.rb', line 1053

def hash
  @list.hash^~@default.hash
end

#substatesObject



1028
1029
1030
1031
1032
1033
1034
# File 'lib/redparse/compile.rb', line 1028

def substates
  if @default.respond_to? :substates
    @default.substates
  else
    []
  end
end

#transition_to_loop?(input) ⇒ Boolean

not used

Returns:

  • (Boolean)


1049
1050
1051
# File 'lib/redparse/compile.rb', line 1049

def transition_to_loop? input #not used
  @default.transition_to_loop? input
end