Class: Idl::AryRangeAssignmentSyntaxNode
- Inherits:
-
SyntaxNode
- Object
- Treetop::Runtime::SyntaxNode
- SyntaxNode
- Idl::AryRangeAssignmentSyntaxNode
- Defined in:
- lib/idlc/ast.rb
Instance Method Summary collapse
Methods inherited from Treetop::Runtime::SyntaxNode
#set_input_file, #set_input_file_unless_already_set, #space?
Instance Method Details
#to_ast ⇒ Object
3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 |
# File 'lib/idlc/ast.rb', line 3051 def to_ast var = send(:var).to_ast brackets = send(:brackets).elements # Build access chain for all but the last bracket brackets[0..-2].each do |bracket| var = if bracket.msb.empty? AryElementAccessAst.new(input, interval, var, bracket.lsb.to_ast) else AryRangeAccessAst.new(input, interval, var, bracket.msb.expression.to_ast, bracket.lsb.to_ast) end end # Use accumulated `var` for the assignment target last_bracket = brackets[-1] if last_bracket.msb.empty? AryElementAssignmentAst.new(input, interval, var, last_bracket.lsb.to_ast, send(:rval).to_ast) else AryRangeAssignmentAst.new(input, interval, var, last_bracket.msb.expression.to_ast, last_bracket.lsb.to_ast, send(:rval).to_ast) end end |