Revision 44752 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/DefaultInterpreter.java
DefaultInterpreter.java | ||
---|---|---|
15 | 15 |
import org.gvsig.expressionevaluator.Code; |
16 | 16 |
import org.gvsig.expressionevaluator.Code.Constant; |
17 | 17 |
import org.gvsig.expressionevaluator.Code.Identifier; |
18 |
import org.gvsig.expressionevaluator.Code.Caller; |
|
19 | 18 |
import org.gvsig.expressionevaluator.Code.Method; |
20 | 19 |
import org.gvsig.expressionevaluator.Codes; |
21 | 20 |
import org.gvsig.expressionevaluator.ExpressionRuntimeException; |
... | ... | |
27 | 26 |
import org.gvsig.expressionevaluator.impl.function.programming.ReturnFunction.ReturnException; |
28 | 27 |
import org.gvsig.expressionevaluator.spi.AbstractSymbolTable; |
29 | 28 |
import org.gvsig.tools.resourcesstorage.ResourcesStorage; |
29 |
import org.gvsig.expressionevaluator.Code.Callable; |
|
30 | 30 |
|
31 | 31 |
public class DefaultInterpreter implements Interpreter { |
32 | 32 |
|
... | ... | |
291 | 291 |
value = method.call(this, argvalues); |
292 | 292 |
break; |
293 | 293 |
} |
294 |
case Code.CALLER:
|
|
295 |
Caller caller = (Caller) code;
|
|
294 |
case Code.CALLABLE:
|
|
295 |
Callable caller = (Callable) code;
|
|
296 | 296 |
Function function = caller.function(); |
297 | 297 |
if( function == null ) { |
298 | 298 |
function = this.getSymbolTable().function(caller.name()); |
... | ... | |
307 | 307 |
Codes args = caller.parameters(); |
308 | 308 |
try { |
309 | 309 |
switch( caller.type() ) { |
310 |
case Caller.UNARY_OPERATOR:
|
|
310 |
case Callable.UNARY_OPERATOR:
|
|
311 | 311 |
if( args == null || args.size() != 1 ) { |
312 | 312 |
throw new ExpressionRuntimeException(code, I18N.Number_of_argument_mistmatch_in_operator_XIdentifierX_expected_1_got_XargcX(function.name(),args==null?0:args.size())); |
313 | 313 |
} |
314 | 314 |
value = ((UnaryOperator) function).call(this, runCode(args.get(0))); |
315 | 315 |
break; |
316 | 316 |
|
317 |
case Caller.BINARY_OPERATOR:
|
|
317 |
case Callable.BINARY_OPERATOR:
|
|
318 | 318 |
if( args == null || args.size() != 2 ) { |
319 | 319 |
throw new ExpressionRuntimeException(code, I18N.Number_of_argument_mistmatch_in_operator_XIdentifierX_expected_2_got_XargcX(function.name(),args==null?0:args.size())); |
320 | 320 |
} |
321 | 321 |
value = ((BinaryOperator) function).call(this, runCode(args.get(0)), runCode(args.get(1))); |
322 | 322 |
break; |
323 | 323 |
|
324 |
case Caller.FUNCTION:
|
|
324 |
case Callable.FUNCTION:
|
|
325 | 325 |
int argc = (args == null) ? 0 : args.size(); |
326 | 326 |
if( !function.argc().contains(argc) ) { |
327 | 327 |
throw new ExpressionRuntimeException(code, I18N.Number_of_argument_mistmatch_in_function_XIdentifierX_expected_XexpectedX_got_XfoundX(function.name(),function.argc(),argc)); |
Also available in: Unified diff