Mercurial Hosting > luan
diff src/luan/interp/IndexExpr.java @ 3:7a2cdbc5767f
add LuaState
git-svn-id: https://luan-java.googlecode.com/svn/trunk@4 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Fri, 16 Nov 2012 05:23:12 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/luan/interp/IndexExpr.java Fri Nov 16 05:23:12 2012 +0000 @@ -0,0 +1,24 @@ +package luan.interp; + +import luan.Lua; +import luan.LuaException; +import luan.LuaState; +import luan.LuaTable; + + +final class IndexExpr extends BinaryOpExpr { + + IndexExpr(Expr op1,Expr op2) { + super(op1,op2); + } + + @Override Object eval(LuaState lua) throws LuaException { + Object t = op1.eval(lua); + if( t instanceof LuaTable ) { + LuaTable tbl = (LuaTable)t; + Object key = op2.eval(lua); + return tbl.get(key); + } + throw new LuaException( "attempt to index a " + Lua.type(t) + " value" ); + } +}