Class: MODL::Parser::Parsed::ParsedValueConditional

Inherits:
MODLParserBaseListener show all
Defined in:
lib/modl/parser/parsed.rb

Overview

Class to represent a parsed grammar object

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from MODLParserBaseListener

#enterModl, #enterModl_array, #enterModl_array_conditional, #enterModl_array_conditional_return, #enterModl_array_item, #enterModl_array_value_item, #enterModl_condition, #enterModl_condition_group, #enterModl_condition_test, #enterModl_map, #enterModl_map_conditional, #enterModl_map_conditional_return, #enterModl_map_item, #enterModl_nb_array, #enterModl_operator, #enterModl_pair, #enterModl_primitive, #enterModl_structure, #enterModl_top_level_conditional, #enterModl_top_level_conditional_return, #enterModl_value, #enterModl_value_conditional_return, #enterModl_value_item, #enter_every_rule, #exitModl, #exitModl_array, #exitModl_array_conditional, #exitModl_array_conditional_return, #exitModl_array_item, #exitModl_array_value_item, #exitModl_condition, #exitModl_condition_group, #exitModl_condition_test, #exitModl_map, #exitModl_map_conditional, #exitModl_map_conditional_return, #exitModl_map_item, #exitModl_nb_array, #exitModl_operator, #exitModl_pair, #exitModl_primitive, #exitModl_structure, #exitModl_top_level_conditional, #exitModl_top_level_conditional_return, #exitModl_value, #exitModl_value_conditional, #exitModl_value_conditional_return, #exitModl_value_item, #exit_every_rule, #visit_error_node, #visit_terminal

Methods inherited from MODLParserListener

#enterModl, #enterModl_array, #enterModl_array_conditional, #enterModl_array_conditional_return, #enterModl_array_item, #enterModl_array_value_item, #enterModl_condition, #enterModl_condition_group, #enterModl_condition_test, #enterModl_map, #enterModl_map_conditional, #enterModl_map_conditional_return, #enterModl_map_item, #enterModl_nb_array, #enterModl_operator, #enterModl_pair, #enterModl_primitive, #enterModl_structure, #enterModl_top_level_conditional, #enterModl_top_level_conditional_return, #enterModl_value, #enterModl_value_conditional_return, #enterModl_value_item, #exitModl, #exitModl_array, #exitModl_array_conditional, #exitModl_array_conditional_return, #exitModl_array_item, #exitModl_array_value_item, #exitModl_condition, #exitModl_condition_group, #exitModl_condition_test, #exitModl_map, #exitModl_map_conditional, #exitModl_map_conditional_return, #exitModl_map_item, #exitModl_nb_array, #exitModl_operator, #exitModl_pair, #exitModl_primitive, #exitModl_structure, #exitModl_top_level_conditional, #exitModl_top_level_conditional_return, #exitModl_value, #exitModl_value_conditional, #exitModl_value_conditional_return, #exitModl_value_item

Constructor Details

#initialize(global) ⇒ ParsedValueConditional

Returns a new instance of ParsedValueConditional.



1204
1205
1206
1207
1208
# File 'lib/modl/parser/parsed.rb', line 1204

def initialize(global)
  @global = global
  @conditionTests = []
  @valueConditionalReturns = []
end

Instance Attribute Details

#conditionTestsObject

Returns the value of attribute conditionTests.



1201
1202
1203
# File 'lib/modl/parser/parsed.rb', line 1201

def conditionTests
  @conditionTests
end

#valueConditionalReturnsObject

Returns the value of attribute valueConditionalReturns.



1202
1203
1204
# File 'lib/modl/parser/parsed.rb', line 1202

def valueConditionalReturns
  @valueConditionalReturns
end

Instance Method Details

#enterModl_value_conditional(ctx) ⇒ Object



1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
# File 'lib/modl/parser/parsed.rb', line 1216

def enterModl_value_conditional(ctx)
  i = 0
  ctx_modl_condition_test = ctx.modl_condition_test
  ctx_modl_value_conditional_return = ctx.modl_value_conditional_return

  while i < ctx_modl_condition_test.size
    condition_test = ParsedConditionTest.new @global
    ctx.modl_condition_test_i(i).enter_rule(condition_test)

    @conditionTests[i] = condition_test

    break if ctx.modl_value_conditional_return_i(i).nil?

    conditional_return = ParsedValueConditionalReturn.new @global

    ctx.modl_value_conditional_return_i(i).enter_rule(conditional_return)

    @valueConditionalReturns[i] = conditional_return

    if ctx_modl_value_conditional_return.size > ctx_modl_condition_test.size
      condition_test = ParsedConditionTest.new @global
      conditional_return = ParsedValueConditionalReturn.new @global
      ctx.modl_value_conditional_return_i(ctx_modl_value_conditional_return.size - 1).enter_rule(conditional_return)
      @conditionTests[i + 1] = condition_test
      @valueConditionalReturns[i + 1] = conditional_return
    end

    i += 1
  end
  @result = @conditionTests[0].evaluate
end

#extract_hashObject



1210
1211
1212
1213
1214
# File 'lib/modl/parser/parsed.rb', line 1210

def extract_hash
  return @result if @valueConditionalReturns.length == 0
  return @valueConditionalReturns[0].extract_hash if @result
  return @valueConditionalReturns[1].extract_hash
end