Class: MiniRuby::AST::ExpressionStatementNode

Inherits:
StatementNode show all
Defined in:
lib/miniruby/ast.rb

Overview

Represents a statement with an expression like ‘2 + 3 - 5;`

Instance Attribute Summary collapse

Attributes inherited from Node

#span

Instance Method Summary collapse

Constructor Details

#initialize(expression:, span: Span::ZERO) ⇒ ExpressionStatementNode

: (expression: ExpressionNode, ?span: Span) -> void



96
97
98
99
# File 'lib/miniruby/ast.rb', line 96

def initialize(expression:, span: Span::ZERO)
  @span = span
  @expression = expression
end

Instance Attribute Details

#expressionObject (readonly)

: ExpressionNode



93
94
95
# File 'lib/miniruby/ast.rb', line 93

def expression
  @expression
end

Instance Method Details

#==(other) ⇒ Object

: (Object other) -> bool



102
103
104
105
106
# File 'lib/miniruby/ast.rb', line 102

def ==(other)
  return false unless other.is_a?(ExpressionStatementNode)

  @expression == other.expression
end

#inspect(indent = 0) ⇒ Object

: (?Integer indent) -> String



116
117
118
119
120
121
122
# File 'lib/miniruby/ast.rb', line 116

def inspect(indent = 0)
  buff = String.new
  buff << "#{INDENT_UNIT * indent}(expr_stmt"
  buff << "\n" << @expression.inspect(indent + 1)
  buff << ')'
  buff
end

#to_s(indent = 0) ⇒ Object

: (?Integer indent) -> String



110
111
112
# File 'lib/miniruby/ast.rb', line 110

def to_s(indent = 0)
  "#{INDENT_UNIT * indent}#{@expression}\n"
end