Class: MODL::Parser::Parsed::ParsedTopLevelConditional
- Inherits:
-
MODLParserBaseListener
- Object
- Antlr4::Runtime::ParseTreeListener
- MODLParserListener
- MODLParserBaseListener
- MODL::Parser::Parsed::ParsedTopLevelConditional
- Defined in:
- lib/modl/parser/parsed.rb
Overview
Class to represent a parsed grammar object
Instance Attribute Summary collapse
-
#conditionTests ⇒ Object
Returns the value of attribute conditionTests.
-
#topLevelConditionalReturns ⇒ Object
Returns the value of attribute topLevelConditionalReturns.
Instance Method Summary collapse
- #enterModl_top_level_conditional(ctx) ⇒ Object
- #extract_hash ⇒ Object
-
#initialize(global) ⇒ ParsedTopLevelConditional
constructor
A new instance of ParsedTopLevelConditional.
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_return, #enterModl_value, #enterModl_value_conditional, #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_return, #enterModl_value, #enterModl_value_conditional, #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) ⇒ ParsedTopLevelConditional
Returns a new instance of ParsedTopLevelConditional.
988 989 990 991 992 |
# File 'lib/modl/parser/parsed.rb', line 988 def initialize(global) @global = global @topLevelConditionalReturns = [] @conditionTests = [] end |
Instance Attribute Details
#conditionTests ⇒ Object
Returns the value of attribute conditionTests.
985 986 987 |
# File 'lib/modl/parser/parsed.rb', line 985 def conditionTests @conditionTests end |
#topLevelConditionalReturns ⇒ Object
Returns the value of attribute topLevelConditionalReturns.
986 987 988 |
# File 'lib/modl/parser/parsed.rb', line 986 def topLevelConditionalReturns @topLevelConditionalReturns end |
Instance Method Details
#enterModl_top_level_conditional(ctx) ⇒ Object
1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 |
# File 'lib/modl/parser/parsed.rb', line 1017 def enterModl_top_level_conditional(ctx) @global.enter_condition i = 0 modl_condition_test = ctx.modl_condition_test ctx_modl_top_level_conditional_return = ctx.modl_top_level_conditional_return while i < modl_condition_test.size condition_test = ParsedConditionTest.new @global ctx.modl_condition_test_i(i).enter_rule(condition_test) conditional_return = ParsedTopLevelConditionalReturn.new @global ctx.modl_top_level_conditional_return_i(i).enter_rule(conditional_return) @conditionTests[i] = condition_test @topLevelConditionalReturns[i] = conditional_return i += 1 end if ctx_modl_top_level_conditional_return.size > modl_condition_test.size conditional_return = ParsedTopLevelConditionalReturn.new @global ctx.modl_top_level_conditional_return_i(ctx_modl_top_level_conditional_return.size - 1).enter_rule(conditional_return) @topLevelConditionalReturns[i] = conditional_return end @global.exit_condition end |
#extract_hash ⇒ Object
994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 |
# File 'lib/modl/parser/parsed.rb', line 994 def extract_hash @conditionTests.each_index do |i| next unless @conditionTests[i].evaluate item = @topLevelConditionalReturns[i] if item.structures[0].pair key = item.structures[0].pair.key key = Sutil.tail(key) if key[0] == '_' @global.pair(key, item.structures[0].pair) end return item.extract_hash end return unless @topLevelConditionalReturns.length > @conditionTests.length last_item = @topLevelConditionalReturns[-1] if last_item.structures[0].pair key = last_item.structures[0].pair.key key = Sutil.tail(key) if key[0] == '_' @global.pair(key, last_item.structures[0].pair) end last_item.extract_hash end |