Mercurial Hosting > luan
view src/luan/CmdLine.java @ 11:b7d7069fee58
add assignment statement and CmdLine
git-svn-id: https://luan-java.googlecode.com/svn/trunk@12 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Thu, 22 Nov 2012 10:51:56 +0000 |
parents | |
children | 9cea1aea5eef |
line wrap: on
line source
package luan; import java.util.List; import java.util.Scanner; import org.parboiled.Parboiled; import org.parboiled.errors.ErrorUtils; import org.parboiled.parserunners.ReportingParseRunner; import org.parboiled.support.ParsingResult; import luan.interp.Expressions; import luan.interp.Stmt; import luan.interp.LuaParser; import luan.lib.BasicLib; public class CmdLine { public static void main(String[] args) throws Exception { LuaParser parser = Parboiled.createParser(LuaParser.class); LuaState lua = new LuaState(); while( true ) { System.out.print("> "); String input = new Scanner(System.in).nextLine(); ParsingResult<?> result = new ReportingParseRunner(parser.Target()).run(input); if( result.hasErrors() ) { System.out.println("Parse Errors:\n" + ErrorUtils.printParseErrors(result)); } else { Object resultValue = result.resultValue; if( resultValue instanceof Expressions ) { Expressions expressions = (Expressions)resultValue; List vals = expressions.eval(lua); if( !vals.isEmpty() ) BasicLib.print( vals.toArray() ); } else { Stmt stmt = (Stmt)resultValue; stmt.eval(lua); } } } } }