Class: Nendo::Core

Inherits:
Object
  • Object
show all
Defined in:
lib/nendo/ruby/core.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(debug_evaluator = false, debug_printer = false) ⇒ Core

Returns a new instance of Core.



38
39
40
41
42
# File 'lib/nendo/ruby/core.rb', line 38

def initialize( debug_evaluator = false, debug_printer = false )
  @debug_evaluator = debug_evaluator
  @evaluator       = Evaluator.new( self, debug_evaluator )
  @debug_printer   = debug_printer
end

Instance Attribute Details

#evaluatorObject (readonly)

Returns the value of attribute evaluator.



48
49
50
# File 'lib/nendo/ruby/core.rb', line 48

def evaluator
  @evaluator
end

Class Method Details

.versionObject



44
45
46
# File 'lib/nendo/ruby/core.rb', line 44

def self.version
  "0.8.0"  ##NENDO-VERSION
end

Instance Method Details

#clean_compiled_codeObject



93
94
95
# File 'lib/nendo/ruby/core.rb', line 93

def clean_compiled_code
  @evaluator._clean_MIMARKcompiled_MIMARKcode()
end

#disableRuntimeCheckObject



85
86
87
# File 'lib/nendo/ruby/core.rb', line 85

def disableRuntimeCheck( )
  @evaluator.runtimeCheck = false
end

#evalStr(str) ⇒ Object



125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
# File 'lib/nendo/ruby/core.rb', line 125

def evalStr( str )
  printer   = Printer.new( @debug_printer )
  sio       = StringIO.open( str )
  reader    = Reader.new( sio, "(string)", false )
  result    = nil
  while true
    lineno = reader.lineno
    s = reader._read
    if s[1] # EOF?
      break
    elsif not s[0].is_a? Nil
      printf( "\n          readExp=<<< %s >>>\n", printer._write(s[0]) ) if @debug_evaluator
      result = printer._write( @evaluator.lispEval( s[0], reader.sourcefile, lineno )) 
    end
  end
  result
end

#load(path) ⇒ Object



65
66
67
# File 'lib/nendo/ruby/core.rb', line 65

def load( path )
  @evaluator.__PAMARKload( path )
end

#load_compiled_code(path) ⇒ Object



69
70
71
# File 'lib/nendo/ruby/core.rb', line 69

def load_compiled_code( path )
  @evaluator.__PAMARKload_MIMARKcompiled_MIMARKcode( path )
end

#load_compiled_code_from_string(rubyExp) ⇒ Object



73
74
75
# File 'lib/nendo/ruby/core.rb', line 73

def load_compiled_code_from_string( rubyExp )
  @evaluator._load_MIMARKcompiled_MIMARKcode_MIMARKfrom_MIMARKstring( rubyExp )
end

#loadInitFile(use_compiled = true) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/nendo/ruby/core.rb', line 50

def loadInitFile( use_compiled = true )
  done = false
  if use_compiled
    compiled_file = File.dirname(__FILE__) + "/../init.nndc"
    if File.exist?( compiled_file )
      @evaluator.__PAMARKload_MIMARKcompiled_MIMARKcode( compiled_file )
      done = true
    end
  end
  unless done
    @evaluator.__PAMARKload( File.dirname(__FILE__) + "/../init.nnd" )
    @evaluator.__PAMARKload( File.dirname(__FILE__) + "/../init.nnd" ) # for %tailcall compile for init.nnd
  end
end

#promptObject



97
98
99
# File 'lib/nendo/ruby/core.rb', line 97

def prompt
  STDERR.print "nendo> "
end

#replObject



101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/nendo/ruby/core.rb', line 101

def repl
  printer = Printer.new( @debug_printer )
  reader  = Reader.new( STDIN, "(stdin)", false )
  self.prompt
  while true
    begin
      lineno = reader.lineno
      s = reader._read
      if s[1] # EOF?
        break
      elsif not s[0].is_a? Nil
        printf( "\n          readExp=<<< %s >>>\n", printer._write(s[0]) ) if @debug_evaluator
        STDERR.print printer._write( @evaluator.lispEval( s[0], reader.sourcefile, lineno )) + "\n"
        self.prompt
      end
    rescue => e
      print e.message + "\n"
      e.backtrace.each { |x| printf( "\tfrom %s\n", x ) }
      print "\n"
      self.prompt
    end
  end
end

#setArgv(argv) ⇒ Object



77
78
79
# File 'lib/nendo/ruby/core.rb', line 77

def setArgv( argv )
  @evaluator.setArgv( argv )
end

#setDisplayErrors(flag) ⇒ Object



89
90
91
# File 'lib/nendo/ruby/core.rb', line 89

def setDisplayErrors( flag )
  @evaluator.setDisplayErrors( flag )
end

#setOptimizeLevel(level) ⇒ Object



81
82
83
# File 'lib/nendo/ruby/core.rb', line 81

def setOptimizeLevel( level )
  @evaluator.setOptimizeLevel( level )
end