Mercurial Hosting > luan
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 } |