Changeset 4981


Ignore:
Timestamp:
12/05/03 23:41:01 (18 years ago)
Author:
dmcnaught
Message:

Command-line arg processing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/j/src/org/armedbear/lisp/Main.java

    r568 r4981  
    33 *
    44 * Copyright (C) 2002-2003 Peter Graves
    5  * $Id: Main.java,v 1.1 2003-01-17 19:43:21 piso Exp $
     5 * $Id: Main.java,v 1.2 2003-12-05 23:41:01 dmcnaught Exp $
    66 *
    77 * This program is free software; you can redistribute it and/or
     
    2727    {
    2828        Interpreter interpreter = Interpreter.createInstance();
     29       
     30        boolean print = true;
     31       
     32        // check for command-line args
     33        if (args.length > 0) {
     34            interpreter.initializeLisp(false);
     35           
     36           for (int i = 0; i < args.length; ++i) {
     37                if (args[i].equals("--noprint"))
     38                    print = false;
     39                else if (args[i].equals("--eval")) {
     40                    if (i+1 < args.length) {
     41                        LispObject result = null;
     42                        try {
     43                            result = interpreter.evaluate(args[i+1]);
     44                        } catch (ConditionThrowable c) {
     45                            System.err.println("Caught condition: " + c.getCondition().toString()
     46                                               + " while evaluating: " + args[i+1]);
     47                            System.exit(2);
     48                        }
     49                        ++i;
     50                        if (print) System.out.println(String.valueOf(result)); // TODO: multiple values
     51                    } else {
     52                        System.err.println("No argument supplied to --eval");
     53                        System.exit(1);
     54                    }
     55                }
     56                else if (args[i].equals("--load")) {
     57                    if (i+1 < args.length) {
     58                        LispObject result = null;
     59                        try {
     60                            // String loadStr = "(load \"" + String.valueOf(args[i+1]) + "\")";                           
     61                            result = Load.load(args[i+1], false, false);
     62                        } catch (ConditionThrowable c) {
     63                            System.err.println("Caught condition: " + c.getCondition().toString()
     64                                               + " while loading: " + args[i+1]);
     65                            System.exit(2);
     66                        }
     67                        ++i;
     68                        if (print) System.out.println(String.valueOf(result));
     69                    } else {
     70                        System.err.println("No argument supplied to --load");
     71                        System.exit(1);
     72                    }
     73                }
     74            }
     75        }
     76       
     77        // Now the toplevel will run unless we got an error or the user called EXTENSIONS:EXIT
     78       
    2979        if (interpreter != null)
    3080            interpreter.run();
Note: See TracChangeset for help on using the changeset viewer.