class MODL::Parser::Parsed::ParsedValueConditional

Class to represent a parsed grammar object

Attributes

conditionTests[RW]
valueConditionalReturns[RW]

Public Class Methods

new(global) click to toggle source
# File lib/modl/parser/parsed.rb, line 1203
def initialize(global)
  @global = global
  @conditionTests = []
  @valueConditionalReturns = []
end

Public Instance Methods

enterModl_value_conditional(ctx) click to toggle source
# File lib/modl/parser/parsed.rb, line 1215
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_hash() click to toggle source
# File lib/modl/parser/parsed.rb, line 1209
def extract_hash
  return @result if @valueConditionalReturns.length == 0
  return @valueConditionalReturns[0].extract_hash if @result
  return @valueConditionalReturns[1].extract_hash
end