FossilOrigin-Name: 3ffc71c707c994c44a9f33025ed50ab91d2a7e60be6c639b6ed28798d82728a2private
parent
b651c84d9b
commit
cf72deef8b
@ -1,19 +1,26 @@
|
||||
module Lox
|
||||
module Expr
|
||||
module Visitable
|
||||
def accept(visitor)
|
||||
klass = self.class.to_s.split("::").last.downcase
|
||||
visitor.send("visit_#{klass}", self)
|
||||
end
|
||||
end
|
||||
|
||||
Binary = Struct.new(:left, :op, :right) do
|
||||
def accept(visitor) = visitor.visit_binary(self)
|
||||
include Visitable
|
||||
end
|
||||
|
||||
Grouping = Struct.new(:expr) do
|
||||
def accept(visitor) = visitor.visit_grouping(self)
|
||||
include Visitable
|
||||
end
|
||||
|
||||
Literal = Struct.new(:value) do
|
||||
def accept(visitor) = visitor.visit_literal(self)
|
||||
include Visitable
|
||||
end
|
||||
|
||||
Unary = Struct.new(:op, :right) do
|
||||
def accept(visitor) = visitor.visit_unary(self)
|
||||
include Visitable
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in new issue