comparison src/luan/interp/ExpList.java @ 48:64ecb7a3aad7

rename Lua to Luan git-svn-id: https://luan-java.googlecode.com/svn/trunk@49 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Fri, 28 Dec 2012 03:29:12 +0000
parents e3624b7cd603
children 8ede219cd111
comparison
equal deleted inserted replaced
47:659c7139e903 48:64ecb7a3aad7
1 package luan.interp; 1 package luan.interp;
2 2
3 import java.util.List; 3 import java.util.List;
4 import java.util.ArrayList; 4 import java.util.ArrayList;
5 import java.util.Collections; 5 import java.util.Collections;
6 import luan.LuaException; 6 import luan.LuanException;
7 import luan.LuaSource; 7 import luan.LuanSource;
8 8
9 9
10 final class ExpList implements Expressions { 10 final class ExpList implements Expressions {
11 11
12 private interface Adder { 12 private interface Adder {
13 public void addTo(LuaStateImpl lua,List<Object> list) throws LuaException; 13 public void addTo(LuanStateImpl lua,List<Object> list) throws LuanException;
14 public Code code(); 14 public Code code();
15 } 15 }
16 16
17 private static class ExprAdder implements Adder { 17 private static class ExprAdder implements Adder {
18 private final Expr expr; 18 private final Expr expr;
19 19
20 ExprAdder(Expr expr) { 20 ExprAdder(Expr expr) {
21 this.expr = expr; 21 this.expr = expr;
22 } 22 }
23 23
24 public void addTo(LuaStateImpl lua,List<Object> list) throws LuaException { 24 public void addTo(LuanStateImpl lua,List<Object> list) throws LuanException {
25 list.add( expr.eval(lua) ); 25 list.add( expr.eval(lua) );
26 } 26 }
27 27
28 public Code code() { 28 public Code code() {
29 return expr; 29 return expr;
36 36
37 ExpressionsAdder(Expressions expressions) { 37 ExpressionsAdder(Expressions expressions) {
38 this.expressions = expressions; 38 this.expressions = expressions;
39 } 39 }
40 40
41 public void addTo(LuaStateImpl lua,List<Object> list) throws LuaException { 41 public void addTo(LuanStateImpl lua,List<Object> list) throws LuanException {
42 for( Object val : expressions.eval(lua) ) { 42 for( Object val : expressions.eval(lua) ) {
43 list.add( val ); 43 list.add( val );
44 } 44 }
45 } 45 }
46 46
79 79
80 private static final Object[] EMPTY = new Object[0]; 80 private static final Object[] EMPTY = new Object[0];
81 81
82 static final Expressions emptyExpList = new Expressions() { 82 static final Expressions emptyExpList = new Expressions() {
83 83
84 @Override public Object[] eval(LuaStateImpl lua) { 84 @Override public Object[] eval(LuanStateImpl lua) {
85 return EMPTY; 85 return EMPTY;
86 } 86 }
87 87
88 @Override public LuaSource.Element se() { 88 @Override public LuanSource.Element se() {
89 return null; 89 return null;
90 } 90 }
91 }; 91 };
92 92
93 static class SingleExpList implements Expressions { 93 static class SingleExpList implements Expressions {
95 95
96 SingleExpList(Expr expr) { 96 SingleExpList(Expr expr) {
97 this.expr = expr; 97 this.expr = expr;
98 } 98 }
99 99
100 @Override public Object[] eval(LuaStateImpl lua) throws LuaException { 100 @Override public Object[] eval(LuanStateImpl lua) throws LuanException {
101 return new Object[]{expr.eval(lua)}; 101 return new Object[]{expr.eval(lua)};
102 } 102 }
103 103
104 @Override public LuaSource.Element se() { 104 @Override public LuanSource.Element se() {
105 return expr.se(); 105 return expr.se();
106 } 106 }
107 } 107 }
108 108
109 private final Adder[] adders; 109 private final Adder[] adders;
110 110
111 private ExpList(Adder[] adders) { 111 private ExpList(Adder[] adders) {
112 this.adders = adders; 112 this.adders = adders;
113 } 113 }
114 114
115 @Override public Object[] eval(LuaStateImpl lua) throws LuaException { 115 @Override public Object[] eval(LuanStateImpl lua) throws LuanException {
116 List<Object> list = new ArrayList<Object>(); 116 List<Object> list = new ArrayList<Object>();
117 for( Adder adder : adders ) { 117 for( Adder adder : adders ) {
118 adder.addTo(lua,list); 118 adder.addTo(lua,list);
119 } 119 }
120 return list.toArray(); 120 return list.toArray();
121 } 121 }
122 122
123 @Override public LuaSource.Element se() { 123 @Override public LuanSource.Element se() {
124 return new LuaSource.Element(adders[0].code().se().source,adders[0].code().se().start,adders[adders.length-1].code().se().end); 124 return new LuanSource.Element(adders[0].code().se().source,adders[0].code().se().start,adders[adders.length-1].code().se().end);
125 } 125 }
126 } 126 }