chapter 5
This commit is contained in:
1
main.rb
1
main.rb
@@ -2,6 +2,7 @@
|
||||
|
||||
require './rlox/prompt'
|
||||
require './rlox/file'
|
||||
require './rlox/expression'
|
||||
|
||||
case ARGV.length
|
||||
when 0 then prompt
|
||||
|
32
rlox/expression.rb
Normal file
32
rlox/expression.rb
Normal file
@@ -0,0 +1,32 @@
|
||||
def parenthesize(name, *exprs)
|
||||
res = "(#{name}"
|
||||
|
||||
exprs.each { | expr |
|
||||
res << " "
|
||||
res << expr.dbg
|
||||
}
|
||||
res << ")"
|
||||
|
||||
res
|
||||
end
|
||||
|
||||
Binary = Struct.new(:left, :operator, :right) do
|
||||
def dbg()
|
||||
parenthesize(operator.lexeme, left, right)
|
||||
end
|
||||
end
|
||||
Grouping = Struct.new(:expression) do
|
||||
def dbg()
|
||||
parenthesize("group", expression)
|
||||
end
|
||||
end
|
||||
Literal = Struct.new(:value) do
|
||||
def dbg()
|
||||
value.to_s
|
||||
end
|
||||
end
|
||||
Unary = Struct.new(:operator, :right) do
|
||||
def dbg()
|
||||
parenthesize(operator.lexeme, right)
|
||||
end
|
||||
end
|
Reference in New Issue
Block a user