Class: Nendo

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

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of Nendo.



1206
1207
1208
1209
1210
# File 'lib/nendo.rb', line 1206

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

Instance Method Details

#load(path) ⇒ Object



1216
1217
1218
# File 'lib/nendo.rb', line 1216

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

#loadInitFileObject



1212
1213
1214
# File 'lib/nendo.rb', line 1212

def loadInitFile
  @evaluator._load( File.dirname(__FILE__) + "/init.nnd" )
end

#replObject



1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
# File 'lib/nendo.rb', line 1220

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

#replStr(str) ⇒ Object



1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
# File 'lib/nendo.rb', line 1253

def replStr( 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 Nil != s[0].class
      printf( "\n          readExp=<<< %s >>>\n", printer._print(s[0]) ) if @debug_evaluator
      result = printer._print( @evaluator.lispEval( s[0], reader.sourcefile, lineno )) 
    end
  end
  result
end