makes own file for statement base class
adds some functionality to it moves the requires from compiler there
This commit is contained in:
parent
db8f99409b
commit
0fe5685ad4
@ -1,6 +1 @@
|
|||||||
module Vool
|
require_relative "vool/vool_compiler"
|
||||||
class Statement
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
require_relative "vool/ruby_compiler"
|
|
||||||
|
@ -1,17 +1,4 @@
|
|||||||
require_relative "statements/array_statement"
|
require_relative "statement"
|
||||||
require_relative "statements/assignment_statement"
|
|
||||||
require_relative "statements/basic_values"
|
|
||||||
require_relative "statements/class_statement"
|
|
||||||
require_relative "statements/hash_statement"
|
|
||||||
require_relative "statements/if_statement"
|
|
||||||
require_relative "statements/logical_statement"
|
|
||||||
require_relative "statements/method_statement"
|
|
||||||
|
|
||||||
require_relative "statements/return_statement"
|
|
||||||
require_relative "statements/statements"
|
|
||||||
require_relative "statements/send_statement"
|
|
||||||
require_relative "statements/variables"
|
|
||||||
require_relative "statements/while_statement"
|
|
||||||
|
|
||||||
module Vool
|
module Vool
|
||||||
# This RubyCompiler compiles incoming ruby (string) into vools internal representation
|
# This RubyCompiler compiles incoming ruby (string) into vools internal representation
|
||||||
@ -36,7 +23,8 @@ module Vool
|
|||||||
|
|
||||||
def on_class( statement )
|
def on_class( statement )
|
||||||
name , sup , body = *statement
|
name , sup , body = *statement
|
||||||
ClassStatement.new( get_name(name) , get_name(sup) , process_all(body) )
|
puts "CLASS #{statement}"
|
||||||
|
ClassStatement.new( get_name(name) , get_name(sup) , process(body) )
|
||||||
end
|
end
|
||||||
|
|
||||||
def on_def( statement )
|
def on_def( statement )
|
||||||
|
55
lib/vool/statement.rb
Normal file
55
lib/vool/statement.rb
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
# Virtual
|
||||||
|
# Object Oriented
|
||||||
|
# Langiage
|
||||||
|
#
|
||||||
|
# VOOL is the abstraction of ruby, ruby minus some of the fluff
|
||||||
|
# fluff is generally what makes ruby nice to use, like 3 ways to achieve the same thing
|
||||||
|
# if/unless/ternary , reverse ifs (ie statement if condition), reverse whiles,
|
||||||
|
# implicit blocks, splats and multiple assigns etc
|
||||||
|
#
|
||||||
|
# Also, Vool is a typed tree, not abstract, so there is a base class Statement
|
||||||
|
# and all it's derivation that make up the syntax tree
|
||||||
|
#
|
||||||
|
# This allows us to write compilers or passes of the compiler(s) as functions on the
|
||||||
|
# classes.
|
||||||
|
module Vool
|
||||||
|
|
||||||
|
# Base class for all statements in the tree. Derived classes correspond to known language
|
||||||
|
# constructs
|
||||||
|
#
|
||||||
|
# Compilers or compiler passes are written by implementing methods.
|
||||||
|
#
|
||||||
|
class Statement
|
||||||
|
|
||||||
|
def collect(arr)
|
||||||
|
arr << self
|
||||||
|
end
|
||||||
|
# create corresponding parfait objects, ie classes, types, methods
|
||||||
|
# mainly implemented by class/method statement
|
||||||
|
def create_objects
|
||||||
|
end
|
||||||
|
|
||||||
|
# used to collect type information
|
||||||
|
def add_ivar( array )
|
||||||
|
end
|
||||||
|
|
||||||
|
# used to collect frame information
|
||||||
|
def add_local( array )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
require_relative "statements/array_statement"
|
||||||
|
require_relative "statements/assignment_statement"
|
||||||
|
require_relative "statements/basic_values"
|
||||||
|
require_relative "statements/class_statement"
|
||||||
|
require_relative "statements/hash_statement"
|
||||||
|
require_relative "statements/if_statement"
|
||||||
|
require_relative "statements/logical_statement"
|
||||||
|
require_relative "statements/method_statement"
|
||||||
|
require_relative "statements/return_statement"
|
||||||
|
require_relative "statements/statements"
|
||||||
|
require_relative "statements/send_statement"
|
||||||
|
require_relative "statements/variables"
|
||||||
|
require_relative "statements/while_statement"
|
Loading…
Reference in New Issue
Block a user