Example #1
0
  public static void main(final String[] args) {
    long start = System.currentTimeMillis();
    final VFrame frame = new VFrame(); // our frame chain.
    for (String s : args) frame.stack().push(new Term<String>(Type.TString, s));
    final boolean interactive = args.length == 0 ? true : false;
    // Setup the world quote.

    Prologue.init(frame);
    try {
      // do we have any args?
      CharStream cs = null;
      if (args.length > 0) {
        debug("Opening:" + args[0]);
        cs = new FileCharStream(args[0]);
      } else {
        banner();
        cs = ConsoleCharStream.getInstance();
      }

      CmdQuote program =
          new CmdQuote(new LexStream(cs)) {
            public void dofunction(VFrame scope) {
              if (interactive) {
                try {
                  super.dofunction(scope);
                } catch (VException e) {
                  outln(">" + e.message());
                  outln(" " + e.stack());
                  frame.dump();
                  // frame.reinit();
                  V.debug(e);
                } catch (Exception e) {
                  outln(">" + e.getMessage());
                  frame.dump();
                  // frame.reinit();
                  e.printStackTrace();
                }
              } else super.dofunction(scope);
            }
          };
      program.eval(frame.child()); // we save the original defs.
    } catch (VException e) {
      outln(e.message());
      outln(e.stack());
      debug(e);
    } catch (Exception e) {
      outln(e.getMessage());
      debug(e);
    }
    if (_showtime) outln("time: " + (System.currentTimeMillis() - start));
  }