view src/luan/CmdLine.java @ 19:a7c13c6017f7

add GenericForStmt git-svn-id: https://luan-java.googlecode.com/svn/trunk@20 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Sun, 02 Dec 2012 10:08:24 +0000
parents 9cea1aea5eef
children c93d8c781853
line wrap: on
line source

package luan;

import java.util.Scanner;
import luan.lib.BasicLib;


public class CmdLine {

	public static void main(String[] args) throws Exception {
		LuaState lua = new LuaState();
		BasicLib.register(lua);
		boolean interactive = false;
		int i = 0;
		while( i < args.length ) {
			String arg = args[i];
			if( !arg.startsWith("-") )
				break;
			if( arg.equals("-i") ) {
				interactive = true;
			} else {
				throw new RuntimeException("invalid option: "+arg);
			}
			i++;
		}
		if( i == args.length ) {
			interactive = true;
		} else {
			String file = args[i++];
			try {
				LuaFunction fn = BasicLib.loadFile(file);
				fn.call(lua);
			} catch(LuaException e) {
//				System.out.println(e.getMessage());
				e.printStackTrace();
				return;
			}
		}
		if( interactive )
			interactive(lua);
	}

	static void interactive(LuaState lua) {
		while( true ) {
			System.out.print("> ");
			String input = new Scanner(System.in).nextLine();
			try {
				LuaFunction fn = BasicLib.load(input);
				Object[] rtn = fn.call(lua);
				if( rtn.length > 0 )
					BasicLib.print(rtn);
			} catch(LuaException e) {
				System.out.println(e.getMessage());
			}
		}
	}
}