Class: Rbsiev::Components

Inherits:
Struct
  • Object
show all
Defined in:
lib/rbsiev.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#envObject

Returns the value of attribute env

Returns:

  • (Object)

    the current value of env



26
27
28
# File 'lib/rbsiev.rb', line 26

def env
  @env
end

#evaluatorObject

Returns the value of attribute evaluator

Returns:

  • (Object)

    the current value of evaluator



26
27
28
# File 'lib/rbsiev.rb', line 26

def evaluator
  @evaluator
end

#parserObject

Returns the value of attribute parser

Returns:

  • (Object)

    the current value of parser



26
27
28
# File 'lib/rbsiev.rb', line 26

def parser
  @parser
end

#printerObject

Returns the value of attribute printer

Returns:

  • (Object)

    the current value of printer



26
27
28
# File 'lib/rbsiev.rb', line 26

def printer
  @printer
end

Instance Method Details

#eval(ast_node) ⇒ Object



31
32
33
# File 'lib/rbsiev.rb', line 31

def eval(ast_node)
  evaluator.eval(ast_node, env)
end

#exec(source) ⇒ Object



39
40
41
# File 'lib/rbsiev.rb', line 39

def exec(source)
  self.print(self.eval(parse(source)))
end

#load(file) ⇒ Object

Raises:



43
44
45
46
47
# File 'lib/rbsiev.rb', line 43

def load(file)
  raise Error, "Cannot find \"%s\"" % f unless FileTest.exist?(file)
  source = File.readlines(file, chomp: true).join(" ")
  self.exec(source)
end

#parse(source) ⇒ Object



27
28
29
# File 'lib/rbsiev.rb', line 27

def parse(source)
  parser.parse(Rbscmlex.lexer(source))
end


35
36
37
# File 'lib/rbsiev.rb', line 35

def print(value)
  printer.print(value)
end

#versionObject



49
50
51
52
53
54
55
# File 'lib/rbsiev.rb', line 49

def version
  comp_vers = []
  comp_vers << Rbscmlex::Lexer.version
  comp_vers << Rubasteme::Parser.version
  comp_vers << Evaluator.version
  comp_vers.join("\n")
end