| /* |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| */ |
| |
| package flash.swf.tools.as3; |
| |
| import macromedia.asc.parser.*; |
| import macromedia.asc.semantics.Value; |
| import macromedia.asc.util.Context; |
| import flash.localization.LocalizationManager; |
| |
| /** |
| * An adapter for visiting the nodes of an ASC AST. |
| * |
| * @author Clement Wong |
| * @author Paul Reilly |
| */ |
| public abstract class EvaluatorAdapter implements Evaluator |
| { |
| public void setLocalizationManager(LocalizationManager l10n) |
| { |
| this.l10n = l10n; |
| } |
| |
| protected LocalizationManager l10n; |
| |
| |
| /* |
| * FIXME: check whether we need to change the current Context in certain evaulate methods. |
| * FlowAnalyzer does this- do we use Context and need to do this as well? |
| */ |
| public boolean checkFeature(Context cx, Node node) |
| { |
| return true; |
| } |
| |
| // Base node |
| |
| public Value evaluate(Context cx, Node node) |
| { |
| return null; |
| } |
| |
| // Expression evaluators |
| |
| public Value evaluate(Context cx, IdentifierNode node) |
| { |
| return null; |
| } |
| |
| // Expression evaluators |
| |
| public Value evaluate(Context cx, IncrementNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, ThisExpressionNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, QualifiedIdentifierNode node) |
| { |
| if (node.qualifier != null) |
| { |
| node.qualifier.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, QualifiedExpressionNode node) |
| { |
| if( node.ref == null) |
| { |
| evaluate(cx,(QualifiedIdentifierNode)node); |
| node.expr.evaluate(cx,this); |
| } |
| return node.ref; |
| } |
| |
| public Value evaluate(Context cx, LiteralBooleanNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, LiteralNumberNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, LiteralStringNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, LiteralNullNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, LiteralRegExpNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, LiteralXMLNode node) |
| { |
| if (node.list != null) |
| { |
| node.list.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context unused_cx, FunctionCommonNode node) |
| { |
| Context cx = node.cx; |
| |
| if (node.signature != null) |
| { |
| node.signature.evaluate(cx, this); |
| } |
| if (node.body != null) |
| { |
| node.body.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, ParenExpressionNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, ParenListExpressionNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, LiteralObjectNode node) |
| { |
| if (node.fieldlist != null) |
| { |
| node.fieldlist.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, LiteralFieldNode node) |
| { |
| if (node.name != null) |
| { |
| node.name.evaluate(cx, this); |
| } |
| if (node.value != null) |
| { |
| node.value.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, LiteralArrayNode node) |
| { |
| if (node.elementlist != null) |
| { |
| node.elementlist.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, LiteralVectorNode node) |
| { |
| node.type.evaluate(cx,this); |
| |
| if (node.elementlist != null) |
| { |
| node.elementlist.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, SuperExpressionNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, MemberExpressionNode node) |
| { |
| if (node.base != null) |
| { |
| node.base.evaluate(cx, this); |
| } |
| if (node.selector != null) |
| { |
| node.selector.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, InvokeNode node) |
| { |
| if (node.args != null) |
| { |
| node.args.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, CallExpressionNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| if (node.args != null) |
| { |
| node.args.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, DeleteExpressionNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, GetExpressionNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, SetExpressionNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| if (node.args != null) |
| { |
| node.args.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, UnaryExpressionNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, BinaryExpressionNode node) |
| { |
| if (node.lhs != null) |
| { |
| node.lhs.evaluate(cx, this); |
| } |
| if (node.rhs != null) |
| { |
| node.rhs.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, ConditionalExpressionNode node) |
| { |
| if (node.condition != null) |
| { |
| node.condition.evaluate(cx, this); |
| } |
| if (node.thenexpr != null) |
| { |
| node.thenexpr.evaluate(cx, this); |
| } |
| if (node.elseexpr != null) |
| { |
| node.elseexpr.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, ArgumentListNode node) |
| { |
| // for (Node n : node.items) |
| for (int i = 0, size = node.items.size(); i < size; i++) |
| { |
| Node n = node.items.get(i); |
| n.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, ListNode node) |
| { |
| // for (Node n : node.items) |
| for (int i = 0, size = node.items.size(); i < size; i++) |
| { |
| Node n = node.items.get(i); |
| n.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| // Statements |
| |
| public Value evaluate(Context cx, StatementListNode node) |
| { |
| // Reevaluate the size for each iteration, because Nodes can |
| // be added to "items" (See the NodeMagic.addImport() call in |
| // flex2.compiler.as3.SyntaxTreeEvaluator.processResourceBundle()) |
| // and if the last Node is an IncludeDirectiveNode, we need to |
| // be sure to evaluate it, so that in_this_include is turned |
| // off. |
| |
| // for (Node n : node.items) |
| for (int i = 0; i < node.items.size(); i++) |
| { |
| Node n = node.items.get(i); |
| if (n != null) |
| { |
| n.evaluate(cx, this); |
| } |
| } |
| |
| return null; |
| } |
| |
| public Value evaluate(Context cx, EmptyElementNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, EmptyStatementNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, ExpressionStatementNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, SuperStatementNode node) |
| { |
| if (node.call.args != null) |
| { |
| node.call.args.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, LabeledStatementNode node) |
| { |
| if (node.label != null) |
| { |
| node.label.evaluate(cx, this); |
| } |
| if (node.statement != null) |
| { |
| node.statement.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, IfStatementNode node) |
| { |
| if (node.condition != null) |
| { |
| node.condition.evaluate(cx, this); |
| } |
| if (node.thenactions != null) |
| { |
| node.thenactions.evaluate(cx, this); |
| } |
| if (node.elseactions != null) |
| { |
| node.elseactions.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, SwitchStatementNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| if (node.statements != null) |
| { |
| node.statements.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, CaseLabelNode node) |
| { |
| if (node.label != null) |
| { |
| node.label.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, DoStatementNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| if (node.statements != null) |
| { |
| node.statements.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, WhileStatementNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| if (node.statement != null) |
| { |
| node.statement.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, ForStatementNode node) |
| { |
| if (node.initialize != null) |
| { |
| node.initialize.evaluate(cx, this); |
| } |
| if (node.test != null) |
| { |
| node.test.evaluate(cx, this); |
| } |
| if (node.increment != null) |
| { |
| node.increment.evaluate(cx, this); |
| } |
| if (node.statement != null) |
| { |
| node.statement.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, WithStatementNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| if (node.statement != null) |
| { |
| node.statement.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, ContinueStatementNode node) |
| { |
| if (node.id != null) |
| { |
| node.id.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, BreakStatementNode node) |
| { |
| if (node.id != null) |
| { |
| node.id.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, ReturnStatementNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, ThrowStatementNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, TryStatementNode node) |
| { |
| if (node.tryblock != null) |
| { |
| node.tryblock.evaluate(cx, this); |
| } |
| if (node.catchlist != null) |
| { |
| node.catchlist.evaluate(cx, this); |
| } |
| if (node.finallyblock != null) |
| { |
| node.finallyblock.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, CatchClauseNode node) |
| { |
| if (node.parameter != null) |
| { |
| node.parameter.evaluate(cx, this); |
| } |
| if (node.statements != null) |
| { |
| node.statements.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, FinallyClauseNode node) |
| { |
| if (node.statements != null) |
| { |
| node.statements.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, UseDirectiveNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, IncludeDirectiveNode node) |
| { |
| if( !node.in_this_include ) |
| { |
| node.in_this_include = true; |
| node.prev_cx = new Context(cx.statics); |
| node.prev_cx.switchToContext(cx); |
| |
| // DANGER: it may not be obvious that we are setting the |
| // the context of the outer statementlistnode here |
| cx.switchToContext(node.cx); |
| } |
| else |
| { |
| node.in_this_include = false; |
| cx.switchToContext(node.prev_cx); // restore prevailing context |
| node.prev_cx = null; |
| } |
| |
| return null; |
| } |
| |
| // Definitions |
| |
| public Value evaluate(Context unused_cx, ImportDirectiveNode node) |
| { |
| Context cx = node.cx; |
| |
| if (node.attrs != null) |
| { |
| node.attrs.evaluate(cx, this); |
| } |
| if (node.name != null) |
| { |
| node.name.evaluate(cx, this); |
| } |
| |
| return null; |
| } |
| |
| public Value evaluate(Context cx, AttributeListNode node) |
| { |
| // for (Node n : node.items) |
| for (int i = 0, size = node.items.size(); i < size; i++) |
| { |
| Node n = node.items.get(i); |
| n.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, VariableDefinitionNode node) |
| { |
| if (node.attrs != null) |
| { |
| node.attrs.evaluate(cx, this); |
| } |
| if (node.list != null) |
| { |
| node.list.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, VariableBindingNode node) |
| { |
| if (node.variable != null) |
| { |
| node.variable.evaluate(cx, this); |
| } |
| if (node.initializer != null) |
| { |
| node.initializer.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, UntypedVariableBindingNode node) |
| { |
| if (node.identifier != null) |
| { |
| node.identifier.evaluate(cx, this); |
| } |
| if (node.initializer != null) |
| { |
| node.initializer.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, TypedIdentifierNode node) |
| { |
| if (node.identifier != null) |
| { |
| node.identifier.evaluate(cx, this); |
| } |
| if (node.type != null) |
| { |
| node.type.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, BinaryFunctionDefinitionNode node) |
| { |
| return evaluate(cx, (FunctionDefinitionNode) node); |
| } |
| |
| public Value evaluate(Context unused_cx, FunctionDefinitionNode node) |
| { |
| Context cx = node.cx; |
| |
| if (node.attrs != null) |
| { |
| node.attrs.evaluate(cx, this); |
| } |
| if (node.name != null) |
| { |
| node.name.evaluate(cx, this); |
| } |
| if (node.fexpr != null) |
| { |
| node.fexpr.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, FunctionNameNode node) |
| { |
| if (node.identifier != null) |
| { |
| node.identifier.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, FunctionSignatureNode node) |
| { |
| if (node.parameter != null) |
| { |
| node.parameter.evaluate(cx, this); |
| } |
| if (node.result != null) |
| { |
| node.result.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, ParameterNode node) |
| { |
| if (node.identifier != null) |
| { |
| node.identifier.evaluate(cx, this); |
| } |
| if (node.type != null) |
| { |
| node.type.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, RestExpressionNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, RestParameterNode node) |
| { |
| if (node.parameter != null) |
| { |
| node.parameter.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, BinaryClassDefNode node) |
| { |
| return evaluate(cx, (ClassDefinitionNode)node); |
| } |
| |
| public Value evaluate(Context cx, BinaryInterfaceDefinitionNode node) |
| { |
| return evaluate(cx, (BinaryClassDefNode) node); |
| } |
| |
| public Value evaluate(Context unused_cx, ClassDefinitionNode node) |
| { |
| Context cx = node.cx; |
| |
| if (node.attrs != null) |
| { |
| node.attrs.evaluate(cx, this); |
| } |
| if (node.name != null) |
| { |
| node.name.evaluate(cx, this); |
| } |
| if (node.baseclass != null) |
| { |
| node.baseclass.evaluate(cx, this); |
| } |
| if (node.interfaces != null) |
| { |
| node.interfaces.evaluate(cx, this); |
| } |
| |
| if (node.fexprs != null) |
| { |
| // for (FunctionCommonNode n : node.fexprs) |
| for (int i = 0, size = node.fexprs.size(); i < size; i++) |
| { |
| FunctionCommonNode n = node.fexprs.get(i); |
| n.evaluate(cx, this); |
| } |
| } |
| |
| if (node.staticfexprs != null) |
| { |
| // for (FunctionCommonNode n : node.staticfexprs) |
| for (int i = 0, size = node.staticfexprs.size(); i < size; i++) |
| { |
| FunctionCommonNode n = node.staticfexprs.get(i); |
| n.evaluate(cx, this); |
| } |
| } |
| |
| if (node.instanceinits != null) |
| { |
| // for (Node n : node.instanceinits) |
| for (int i = 0, size = node.instanceinits.size(); i < size; i++) |
| { |
| Node n = node.instanceinits.get(i); |
| n.evaluate(cx, this); |
| } |
| } |
| |
| if (node.statements != null) |
| { |
| node.statements.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, InterfaceDefinitionNode node) |
| { |
| if (node.attrs != null) |
| { |
| node.attrs.evaluate(cx, this); |
| } |
| if (node.name != null) |
| { |
| node.name.evaluate(cx, this); |
| } |
| if (node.interfaces != null) |
| { |
| node.interfaces.evaluate(cx, this); |
| } |
| if (node.statements != null) |
| { |
| node.statements.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, ClassNameNode node) |
| { |
| if (node.pkgname != null) |
| { |
| node.pkgname.evaluate(cx, this); |
| } |
| if (node.ident != null) |
| { |
| node.ident.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, InheritanceNode node) |
| { |
| if (node.baseclass != null) |
| { |
| node.baseclass.evaluate(cx, this); |
| } |
| if (node.interfaces != null) |
| { |
| node.interfaces.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, NamespaceDefinitionNode node) |
| { |
| if (node.attrs != null) |
| { |
| node.attrs.evaluate(cx, this); |
| } |
| if (node.name != null) |
| { |
| node.name.evaluate(cx, this); |
| } |
| if (node.value != null) |
| { |
| node.value.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, ConfigNamespaceDefinitionNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, PackageDefinitionNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, PackageIdentifiersNode node) |
| { |
| // for (IdentifierNode n : node.list) |
| for (int i = 0, size = node.list.size(); i < size; i++) |
| { |
| IdentifierNode n = node.list.get(i); |
| n.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, PackageNameNode node) |
| { |
| if (node.id != null) |
| { |
| node.id.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context unused_cx, ProgramNode node) |
| { |
| Context cx = node.cx; |
| |
| if (node.pkgdefs != null) |
| { |
| // for (PackageDefinitionNode n : node.pkgdefs) |
| for (int i = 0, size = node.pkgdefs.size(); i < size; i++) |
| { |
| PackageDefinitionNode n = node.pkgdefs.get(i); |
| n.evaluate(cx, this); |
| } |
| } |
| |
| if (node.statements != null) |
| { |
| node.statements.evaluate(cx, this); |
| } |
| |
| if (node.fexprs != null) |
| { |
| // for (FunctionCommonNode n : node.fexprs) |
| for (int i = 0, size = node.fexprs.size(); i < size; i++) |
| { |
| FunctionCommonNode n = node.fexprs.get(i); |
| n.evaluate(cx, this); |
| } |
| } |
| |
| if (node.clsdefs != null) |
| { |
| // for (FunctionCommonNode n : node.clsdefs) |
| for (int i = 0, size = node.clsdefs.size(); i < size; i++) |
| { |
| ClassDefinitionNode n = node.clsdefs.get(i); |
| n.evaluate(cx, this); |
| } |
| } |
| |
| return null; |
| } |
| |
| public Value evaluate(Context cx, ErrorNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, ToObjectNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, LoadRegisterNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, StoreRegisterNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, BoxNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, CoerceNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, PragmaNode node) |
| { |
| if (node.list != null) |
| { |
| node.list.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, PragmaExpressionNode node) |
| { |
| if (node.identifier != null) |
| { |
| node.identifier.evaluate(cx, this); |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, ParameterListNode node) |
| { |
| for (int i = 0, size = node.items.size(); i < size; i++) |
| { |
| // ParameterNode param = node.items.get(i); |
| ParameterNode param = node.items.get(i); |
| if (param != null) |
| { |
| param.evaluate(cx, this); |
| } |
| } |
| return null; |
| } |
| |
| public Value evaluate(Context cx, MetaDataNode node) |
| { |
| if (node.data != null) |
| { |
| MetaDataEvaluator mde = new MetaDataEvaluator(); |
| node.evaluate(cx, mde); |
| } |
| |
| return null; |
| } |
| |
| public Value evaluate(Context context, DefaultXMLNamespaceNode defaultXMLNamespaceNode) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, BinaryProgramNode node) |
| { |
| return evaluate(cx, (ProgramNode)node); |
| } |
| |
| public Value evaluate(Context cx, DocCommentNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, ImportNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, RegisterNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, HasNextNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, TypeExpressionNode node) |
| { |
| return node.expr.evaluate(cx, this); |
| } |
| |
| public Value evaluate(Context cx, ApplyTypeExprNode node) |
| { |
| if (node.expr != null) |
| { |
| node.expr.evaluate(cx, this); |
| } |
| |
| if (node.typeArgs != null) |
| { |
| node.typeArgs.evaluate(cx, this); |
| } |
| |
| return null; |
| } |
| |
| public Value evaluate(Context cx, UseNumericNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, UsePrecisionNode node) |
| { |
| return null; |
| } |
| |
| public Value evaluate(Context cx, UseRoundingNode node) |
| { |
| return null; |
| } |
| } |