Class: AstPrinter

Inherits:
Object
  • Object
show all
Defined in:
lib/baba/ast_printer.rb

Instance Method Summary collapse

Instance Method Details

#parenthesize(name, *exprs) ⇒ Object



27
28
29
30
31
32
33
34
35
# File 'lib/baba/ast_printer.rb', line 27

def parenthesize(name, *exprs)
  builder = ""

  builder += "(#{name}"
  exprs.each do |expr|
    builder += " #{expr.accept(self)}"
  end
  builder += ")"
end


6
7
8
# File 'lib/baba/ast_printer.rb', line 6

def print(expr)
  expr.accept(self)
end

#visit_binary_expr(expr) ⇒ Object



10
11
12
# File 'lib/baba/ast_printer.rb', line 10

def visit_binary_expr(expr)
  parenthesize(expr.operator.lexeme, expr.left, expr.right)
end

#visit_grouping_expr(expr) ⇒ Object



14
15
16
# File 'lib/baba/ast_printer.rb', line 14

def visit_grouping_expr(expr)
  parenthesize("group", expr.expression)
end

#visit_literal_expr(expr) ⇒ Object



18
19
20
21
# File 'lib/baba/ast_printer.rb', line 18

def visit_literal_expr(expr)
  return "nil" if expr.value.nil?
  expr.value.to_s
end

#visit_unary_expr(expr) ⇒ Object



23
24
25
# File 'lib/baba/ast_printer.rb', line 23

def visit_unary_expr(expr)
  parenthesize(expr.operator.lexeme, expr.right)
end