adds logical statements to vool

This commit is contained in:
Torsten Ruger
2017-04-04 18:35:15 +03:00
parent 91fdfb0c1e
commit de8b48975b
5 changed files with 64 additions and 5 deletions

View File

@ -8,15 +8,14 @@ require_relative "vool/assignment_statement"
require_relative "vool/basic_values"
require_relative "vool/class_statement"
require_relative "vool/hash_statement"
require_relative "vool/if_statement"
require_relative "vool/logical_statement"
require_relative "vool/method_statement"
require_relative "vool/while_statement"
require_relative "vool/if_statement"
require_relative "vool/return_statement"
require_relative "vool/return_statement"
require_relative "vool/statements"
require_relative "vool/send_statement"
require_relative "vool/operator_expression"
require_relative "vool/variables"
require_relative "vool/while_statement"
require_relative "vool/compiler"

View File

@ -155,6 +155,14 @@ module Vool
w
end
def on_and expression
name = expression.type
left = process(expression.children[0])
right = process( expression.children[1] )
LogicalStatement.new( name , left , right)
end
alias :on_or :on_and
# this is a call to super without args (z = zero arity)
def on_zsuper exp
w = SendStatement.new( nil )

View File

@ -0,0 +1,11 @@
module Vool
# Logical Statements are guaranteed to return boolean
# either :and or :or, which may be written as && and ||
class LogicalStatement < Statement
attr_reader :name , :left , :right
def initialize(name , left , right)
@name , @left , @right = name , left , right
end
end
end