Module: Confuscript
- Defined in:
- lib/confuscript.rb,
lib/confuscript/version.rb,
lib/confuscript/nodes/base_node.rb,
lib/confuscript/nodes/block_node.rb,
lib/confuscript/nodes/comment_node.rb,
lib/confuscript/nodes/if_else_node.rb,
lib/confuscript/nodes/program_node.rb,
lib/confuscript/nodes/assignment_node.rb,
lib/confuscript/nodes/expression_node.rb,
lib/confuscript/nodes/print/void_node.rb,
lib/confuscript/nodes/loops/while_node.rb,
lib/confuscript/nodes/console_input_node.rb,
lib/confuscript/nodes/values/number_node.rb,
lib/confuscript/nodes/values/string_node.rb,
lib/confuscript/nodes/initialization_node.rb,
lib/confuscript/nodes/values/boolean_node.rb,
lib/confuscript/nodes/values/variable_node.rb,
lib/confuscript/nodes/print/print_call_node.rb,
lib/confuscript/nodes/operators/addition_node.rb,
lib/confuscript/nodes/operators/division_node.rb,
lib/confuscript/nodes/operators/equality_node.rb,
lib/confuscript/nodes/operators/less_than_node.rb,
lib/confuscript/nodes/operators/subtraction_node.rb,
lib/confuscript/nodes/expressions/arithmetic_node.rb,
lib/confuscript/nodes/expressions/comparison_node.rb,
lib/confuscript/nodes/operators/greater_than_node.rb,
lib/confuscript/nodes/operators/non_equality_node.rb,
lib/confuscript/nodes/print/print_definition_node.rb,
lib/confuscript/nodes/operators/multiplication_node.rb,
lib/confuscript/nodes/operators/less_than_or_equal_node.rb,
lib/confuscript/nodes/operators/greater_than_or_equal_node.rb
Defined Under Namespace
Modules: Nodes
Classes: Error, SyntaxError, VoidEncountered
Constant Summary
collapse
- VERSION =
"0.1.0"
Class Method Summary
collapse
Class Method Details
.interpret(code) ⇒ Object
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
# File 'lib/confuscript.rb', line 71
def self.interpret(code)
ast = parser.parse(code)
raise SyntaxError, parser.failure_reason if ast.nil?
context = {}
ast.evaluate(context)
context
end
|
.parser ⇒ Object
60
61
62
63
64
65
66
67
68
69
|
# File 'lib/confuscript.rb', line 60
def self.parser
@parser ||= if File.file?("#{File.dirname(__FILE__)}/confuscript/grammar.rb")
require_relative "grammar"
else
Treetop.load "#{File.dirname(__FILE__)}/confuscript/grammar.treetop"
ConfuscriptParser.new
end
end
|