comparison src/luan/interp/GenericForStmt.java @ 109:219e05867366

remove NumericForStmt; add BasicLib.range(); git-svn-id: https://luan-java.googlecode.com/svn/trunk@110 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Fri, 23 May 2014 04:30:29 +0000
parents 6ca02b188dba
children 2428ecfed375
comparison
equal deleted inserted replaced
108:3c404a296995 109:219e05867366
2 2
3 import luan.Luan; 3 import luan.Luan;
4 import luan.LuanException; 4 import luan.LuanException;
5 import luan.LuanFunction; 5 import luan.LuanFunction;
6 import luan.LuanSource; 6 import luan.LuanSource;
7 import luan.LuanBit;
7 8
8 9
9 final class GenericForStmt extends CodeImpl implements Stmt { 10 final class GenericForStmt extends CodeImpl implements Stmt {
10 private final int iVars; 11 private final int iVars;
11 private final int nVars; 12 private final int nVars;
20 this.block = block; 21 this.block = block;
21 } 22 }
22 23
23 @Override public void eval(LuanStateImpl luan) throws LuanException { 24 @Override public void eval(LuanStateImpl luan) throws LuanException {
24 LuanFunction iter = luan.bit(se).checkFunction( iterExpr.eval(luan) ); 25 LuanFunction iter = luan.bit(se).checkFunction( iterExpr.eval(luan) );
26 LuanBit bit = luan.bit(iterExpr.se());
27 String name = iterExpr.se().text();
25 try { 28 try {
26 while(true) { 29 while(true) {
27 Object[] vals = luan.bit(iterExpr.se()).call(iter,iterExpr.se().text()); 30 Object[] vals = bit.call(iter,name);
28 if( vals.length==0 || vals[0]==null ) 31 if( vals.length==0 || vals[0]==null )
29 break; 32 break;
30 for( int i=0; i<nVars; i++ ) { 33 for( int i=0; i<nVars; i++ ) {
31 luan.stackSet( iVars+i, i < vals.length ? vals[i] : null ); 34 luan.stackSet( iVars+i, i < vals.length ? vals[i] : null );
32 } 35 }