comparison core/src/luan/impl/LuanCompiler.java @ 694:b620b8e1010f

remove Luan.load() allow_expression param and add Luan.eval()
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 20 Apr 2016 20:56:08 -0600
parents 5b9c7f8529ee
children 6e6e9e73abaa
comparison
equal deleted inserted replaced
693:ca169567ce07 694:b620b8e1010f
12 12
13 13
14 public final class LuanCompiler { 14 public final class LuanCompiler {
15 private LuanCompiler() {} // never 15 private LuanCompiler() {} // never
16 16
17 public static LuanFunction compile(String sourceName,String sourceText,LuanTable env,boolean allowExpr) throws LuanException { 17 public static LuanFunction compile(String sourceText,String sourceName,LuanTable env) throws LuanException {
18 LuanParser parser = new LuanParser(sourceName,sourceText); 18 LuanParser parser = new LuanParser(sourceText,sourceName);
19 parser.addVar( "java" ); 19 parser.addVar( "java" );
20 parser.addVar( "require" ); 20 parser.addVar( "require" );
21 if( env != null ) parser.addVar( "_ENV" ); 21 if( env != null ) parser.addVar( "_ENV" );
22 Class fnClass = parse(parser,allowExpr); 22 Class fnClass;
23 try {
24 fnClass = parser.RequiredModule();
25 } catch(ParseException e) {
26 //e.printStackTrace();
27 throw new LuanException( e.getFancyMessage() );
28 }
23 LuanJava java; 29 LuanJava java;
24 if( env == null ) { 30 if( env == null ) {
25 java = new LuanJava(); 31 java = new LuanJava();
26 } else { 32 } else {
27 java = env.java; 33 java = env.java;
46 closure.upValues[1].o = PackageLuan.requireFn; 52 closure.upValues[1].o = PackageLuan.requireFn;
47 if( env != null ) closure.upValues[2].o = env; 53 if( env != null ) closure.upValues[2].o = env;
48 return closure; 54 return closure;
49 } 55 }
50 56
51 private static Class parse(LuanParser parser,boolean allowExpr) throws LuanException {
52 try {
53 if( allowExpr ) {
54 Class fnClass = parser.Expression();
55 if( fnClass != null )
56 return fnClass;
57 }
58 return parser.RequiredModule();
59 } catch(ParseException e) {
60 //e.printStackTrace();
61 throw new LuanException( e.getFancyMessage() );
62 }
63 }
64
65 public static String toJava(String sourceName,String sourceText) throws LuanException { 57 public static String toJava(String sourceName,String sourceText) throws LuanException {
66 LuanParser parser = new LuanParser(sourceName,sourceText); 58 LuanParser parser = new LuanParser(sourceName,sourceText);
67 parser.addVar( "java" ); 59 parser.addVar( "java" );
68 parser.addVar( "require" ); 60 parser.addVar( "require" );
69 try { 61 try {