Exemplo n.º 1
0
int main(int argc, char** argv){
  NProgram program(argc, argv);

  NMLParser parser;
  // parse the NML code into N code
  nvar code = parser.parseFile("test.nml");

  cout << "code is: " << code << endl;

  // reconstruct the NML code from N code (just for demonstration
  // purposes)
  NMLGenerator generator;
  stringstream sstr;
  generator.generate(sstr, code);
  cout << "------------- reconstructed NML" << endl;
  cout << sstr.str() << endl;

  // execute the code we parsed
  NObject interpreter;
  interpreter.process(code);

  return 0;
}
Exemplo n.º 2
0
int main(int argc, char** argv){
  Program::opt("help", "h", false, "Display usage");

  Program::opt("math", "m", false, "Use Mathematica");  

  Program::opt("show", "s", false, "Show N input/output");  

  Program::opt("history", "", 100, "Number of lines to keep in history"); 

  Program program(argc, argv);

  nvar args = program.args();
    
  if(args["help"]){
    cout << program.usage("neu [OPTION]... [NML FILE]...");
    program.exit(0);
  }

  bool show = args["show"];

  NObject* o = args["math"] ? new NMObject : new NObject;

  Parser parser;
  NMLGenerator generator;

  if(args.empty()){
    stifle_history(args["history"]);

    for(;;){
      parser.reset();
      nvar n = parser.parse();

      if(parser.done()){
        cout << endl;
        NProgram::exit(0);
      }

      if(n == none){
        continue;
      }

      if(show){
        cout << "<< " << n << endl;
      }

      try{
        nvar r = o->process(n);

        if(show){
          cout << ">> " << r << endl;
        }

        if(r != none){
          generator.generate(cout, r);
          cout << endl;
        }
      }
      catch(NError& e){
        cerr << e << endl;
      }
    }    
  }

  for(size_t i = 0; i < args.size(); ++i){
    nvar n = parser.parseFile(args[i]);

    if(n == none){
      NProgram::exit(1);
    }
    
    if(show){
      cout << "<< " << n << endl;
    }
    
    nvar r = o->process(n);

    if(show){
      cout << ">> " << r << endl;
    }
  }   
  
  NProgram::exit(0);
  
  return 0;
}