Class: Rjq::SemanticAnalyzer
- Inherits:
-
Object
- Object
- Rjq::SemanticAnalyzer
- Defined in:
- lib/rjq/semantic_analyzer.rb
Constant Summary collapse
- PUSH_OPS =
%i[ load_input load_const string_interp format variable path optional binding array object branch try reduce foreach label unary binary assign call tail_call recurse scoped_def ].freeze
- TRANSFORM_OPS =
%i[ field index_const index_filter slice_const slice_filter each pipe append ].freeze
Instance Method Summary collapse
-
#initialize(program) ⇒ SemanticAnalyzer
constructor
A new instance of SemanticAnalyzer.
- #validate! ⇒ Object
Constructor Details
#initialize(program) ⇒ SemanticAnalyzer
Returns a new instance of SemanticAnalyzer.
13 14 15 |
# File 'lib/rjq/semantic_analyzer.rb', line 13 def initialize(program) @program = program end |
Instance Method Details
#validate! ⇒ Object
17 18 19 20 21 22 |
# File 'lib/rjq/semantic_analyzer.rb', line 17 def validate! global_functions = @program.definitions.map { |definition| signature(definition) }.to_h { |item| [item, true] } @program.definitions.each { |definition| validate_definition(definition, global_functions, {}) } validate_instructions(@program.instructions, global_functions, {}, {}) @program end |