class Ascode::Parser::Main
Public Class Methods
new(code, impl_o = true)
click to toggle source
# File lib/ascode/parser/main.rb, line 8 def initialize(code, impl_o = true) @function = Function.new @code = code @do_implicit_output = impl_o end
Public Instance Methods
block(index)
click to toggle source
# File lib/ascode/parser/main.rb, line 50 def block(index) block = ConditionBlock.new @code, index @ast.push block.parse @skip_chars = block.block.length end
character(char, index)
click to toggle source
# File lib/ascode/parser/main.rb, line 34 def character(char, index) if char == "\"" || char =~ /[0-9.]/ literal index elsif char == "[" block index else function char end end
function(char)
click to toggle source
# File lib/ascode/parser/main.rb, line 56 def function(char) function = @function.parse char return unless function @implicit_output = false if function[:action] == "output" @ast.push function end
literal(index)
click to toggle source
# File lib/ascode/parser/main.rb, line 44 def literal(index) literal = Literal.new @code, index @ast.push literal.parse @skip_chars = literal.length end
parse()
click to toggle source
# File lib/ascode/parser/main.rb, line 15 def parse @ast = [] @skip_chars = 0 @implicit_output = @do_implicit_output @code.split("").to_enum.each_with_index do |char, index| if @skip_chars > 0 @skip_chars -= 1 next end character char, index end @ast.push(type: :io, action: "output") if @implicit_output @ast end