Mercurial Hosting > luan
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 { |