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" );
+	}
+}