Mercurial Hosting > luan
comparison src/luan/interp/ExpList.java @ 107:dbf459397217
change OutputStatement to JspExpressions;
fix multiple results handling;
git-svn-id: https://luan-java.googlecode.com/svn/trunk@108 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Mon, 19 May 2014 09:17:57 +0000 |
parents | 754e6030c029 |
children | 2428ecfed375 |
comparison
equal
deleted
inserted
replaced
106:1a29dd3888f6 | 107:dbf459397217 |
---|---|
61 | 61 |
62 void add(Expressions expressions) { | 62 void add(Expressions expressions) { |
63 adders.add( new ExpressionsAdder(expressions) ); | 63 adders.add( new ExpressionsAdder(expressions) ); |
64 } | 64 } |
65 | 65 |
66 void add(Code code) { | |
67 if( code instanceof Expr ) { | |
68 add((Expr)code); | |
69 } else { | |
70 add((Expressions)code); | |
71 } | |
72 } | |
73 | |
66 Expressions build() { | 74 Expressions build() { |
67 if( adders.isEmpty() ) | 75 int size = adders.size(); |
76 if( size == 0 ) | |
68 return emptyExpList; | 77 return emptyExpList; |
69 if( adders.size() == 1 ) { | 78 if( size == 1 ) { |
70 Adder adder = adders.get(0); | 79 Adder adder = adders.get(0); |
71 if( adder instanceof ExpressionsAdder ) { | 80 if( adder instanceof ExpressionsAdder ) { |
72 ExpressionsAdder ea = (ExpressionsAdder)adder; | 81 ExpressionsAdder ea = (ExpressionsAdder)adder; |
73 return ea.expressions; | 82 return ea.expressions; |
74 } | 83 } |
75 ExprAdder ea = (ExprAdder)adder; | 84 ExprAdder ea = (ExprAdder)adder; |
76 return new SingleExpList(ea.expr); | 85 return new SingleExpList(ea.expr); |
77 } | 86 } |
78 return new ExpList( adders.toArray(new Adder[0]) ); | 87 Adder[] a = adders.toArray(new Adder[size]); |
88 for( int i=0; i<size-1; i++ ) { | |
89 Adder adder = a[i]; | |
90 if( adder instanceof ExpressionsAdder ) { | |
91 a[i] = new ExprAdder(new ExpressionsExpr(((ExpressionsAdder)adder).expressions)); | |
92 } | |
93 } | |
94 return new ExpList(a); | |
79 } | 95 } |
80 } | 96 } |
81 | 97 |
82 private static final Object[] EMPTY = new Object[0]; | 98 private static final Object[] EMPTY = new Object[0]; |
83 | 99 |