Mercurial Hosting > luan
comparison core/src/luan/impl/LuanCompiler.java @ 194:08df375e2e5f
remove EnvGetter
git-svn-id: https://luan-java.googlecode.com/svn/trunk@195 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Wed, 02 Jul 2014 04:52:25 +0000 |
parents | 3dcb0f9bee82 |
children | 24ede40ee0aa |
comparison
equal
deleted
inserted
replaced
193:66ed8886abc0 | 194:08df375e2e5f |
---|---|
11 | 11 |
12 public final class LuanCompiler { | 12 public final class LuanCompiler { |
13 private LuanCompiler() {} // never | 13 private LuanCompiler() {} // never |
14 | 14 |
15 public static LuanFunction compile(LuanState luan,LuanSource src,LuanTable env,boolean allowExpr) throws LuanException { | 15 public static LuanFunction compile(LuanState luan,LuanSource src,LuanTable env,boolean allowExpr) throws LuanException { |
16 UpValue.Getter envGetter = env!=null ? new UpValue.ValueGetter(env) : new UpValue.EnvGetter(); | 16 boolean passedEnv = env != null; |
17 if( !passedEnv ) | |
18 env = new LuanTable(); | |
19 UpValue.Getter envGetter = new UpValue.ValueGetter(env); | |
17 LuanParser parser = new LuanParser(src,envGetter); | 20 LuanParser parser = new LuanParser(src,envGetter); |
18 for( Map.Entry<Object,Object> entry : luan.global() ) { | 21 for( Map.Entry<Object,Object> entry : luan.global() ) { |
19 Object key = entry.getKey(); | 22 Object key = entry.getKey(); |
20 if( key instanceof String ) | 23 if( key instanceof String ) |
21 parser.addVar( (String)key, entry.getValue() ); | 24 parser.addVar( (String)key, entry.getValue() ); |
22 } | 25 } |
23 FnDef fnDef = parse(luan,parser,allowExpr); | 26 FnDef fnDef = parse(luan,parser,allowExpr); |
24 if( env != null ) | 27 if( passedEnv ) |
25 return new Closure((LuanStateImpl)luan,fnDef); | 28 return new Closure((LuanStateImpl)luan,fnDef); |
26 final Closure c = new Closure((LuanStateImpl)luan,fnDef); | 29 final Closure c = new Closure((LuanStateImpl)luan,fnDef); |
27 return new LuanFunction() { | 30 return new LuanFunction() { |
28 @Override public Object call(LuanState luan,Object[] args) throws LuanException { | 31 @Override public Object call(LuanState luan,Object[] args) throws LuanException { |
29 Object rtn = c.call(luan,args); | 32 Object rtn = c.call(luan,args); |