You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ms...@apache.org on 2013/01/16 23:05:22 UTC

svn commit: r1434433 - in /flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler: as/codegen/ internal/as/codegen/ internal/as/visitor/ visitor/

Author: mschmalle
Date: Wed Jan 16 22:05:22 2013
New Revision: 1434433

URL: http://svn.apache.org/viewvc?rev=1434433&view=rev
Log:
Flex:FalconJx
- ASBlockWalker is fully abstracted up the the implemented tests

Modified:
    flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/as/codegen/IASEmitter.java
    flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASBlockWalker.java
    flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASEmitter.java
    flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/visitor/ASNodeSwitch.java
    flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/visitor/IASBlockVisitor.java

Modified: flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/as/codegen/IASEmitter.java
URL: http://svn.apache.org/viewvc/flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/as/codegen/IASEmitter.java?rev=1434433&r1=1434432&r2=1434433&view=diff
==============================================================================
--- flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/as/codegen/IASEmitter.java (original)
+++ flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/as/codegen/IASEmitter.java Wed Jan 16 22:05:22 2013
@@ -23,6 +23,7 @@ import java.io.Writer;
 
 import org.apache.flex.compiler.internal.tree.as.FunctionObjectNode;
 import org.apache.flex.compiler.internal.tree.as.LabeledStatementNode;
+import org.apache.flex.compiler.internal.tree.as.NamespaceAccessExpressionNode;
 import org.apache.flex.compiler.tree.as.IASNode;
 import org.apache.flex.compiler.tree.as.IBinaryOperatorNode;
 import org.apache.flex.compiler.tree.as.IBlockNode;
@@ -40,6 +41,7 @@ import org.apache.flex.compiler.tree.as.
 import org.apache.flex.compiler.tree.as.IInterfaceNode;
 import org.apache.flex.compiler.tree.as.IIterationFlowNode;
 import org.apache.flex.compiler.tree.as.IKeywordNode;
+import org.apache.flex.compiler.tree.as.ILanguageIdentifierNode;
 import org.apache.flex.compiler.tree.as.ILiteralNode;
 import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
 import org.apache.flex.compiler.tree.as.INamespaceNode;
@@ -47,12 +49,14 @@ import org.apache.flex.compiler.tree.as.
 import org.apache.flex.compiler.tree.as.IObjectLiteralValuePairNode;
 import org.apache.flex.compiler.tree.as.IPackageNode;
 import org.apache.flex.compiler.tree.as.IParameterNode;
+import org.apache.flex.compiler.tree.as.IReturnNode;
 import org.apache.flex.compiler.tree.as.ISetterNode;
 import org.apache.flex.compiler.tree.as.ISwitchNode;
 import org.apache.flex.compiler.tree.as.ITernaryOperatorNode;
 import org.apache.flex.compiler.tree.as.IThrowNode;
 import org.apache.flex.compiler.tree.as.ITryNode;
 import org.apache.flex.compiler.tree.as.ITypedExpressionNode;
+import org.apache.flex.compiler.tree.as.IUnaryOperatorNode;
 import org.apache.flex.compiler.tree.as.IVariableNode;
 import org.apache.flex.compiler.tree.as.IWhileLoopNode;
 import org.apache.flex.compiler.tree.as.IWithNode;
@@ -275,6 +279,8 @@ public interface IASEmitter
      */
     void emitLabelStatement(LabeledStatementNode node);
 
+    void emitReturn(IReturnNode node);
+
     //--------------------------------------------------------------------------
     // Expressions
     //--------------------------------------------------------------------------
@@ -311,6 +317,8 @@ public interface IASEmitter
 
     void emitIterationFlow(IIterationFlowNode node);
 
+    void emitNamespaceAccessExpression(NamespaceAccessExpressionNode node);
+
     void emitMemberAccessExpression(IMemberAccessExpressionNode node);
 
     void emitDynamicAccess(IDynamicAccessNode node);
@@ -331,6 +339,8 @@ public interface IASEmitter
     // Operators
     //--------------------------------------------------------------------------
 
+    void emitUnaryOperator(IUnaryOperatorNode node);
+
     /**
      * Emit an operator statement.
      * 
@@ -345,4 +355,7 @@ public interface IASEmitter
     //--------------------------------------------------------------------------
 
     void emitKeyword(IKeywordNode node);
+
+    void emitLanguageIdentifier(ILanguageIdentifierNode node);
+
 }

Modified: flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASBlockWalker.java
URL: http://svn.apache.org/viewvc/flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASBlockWalker.java?rev=1434433&r1=1434432&r2=1434433&view=diff
==============================================================================
--- flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASBlockWalker.java (original)
+++ flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASBlockWalker.java Wed Jan 16 22:05:22 2013
@@ -39,7 +39,6 @@ import org.apache.flex.compiler.tree.as.
 import org.apache.flex.compiler.tree.as.IBlockNode;
 import org.apache.flex.compiler.tree.as.ICatchNode;
 import org.apache.flex.compiler.tree.as.IClassNode;
-import org.apache.flex.compiler.tree.as.IConditionalNode;
 import org.apache.flex.compiler.tree.as.IContainerNode;
 import org.apache.flex.compiler.tree.as.IDefaultXMLNamespaceNode;
 import org.apache.flex.compiler.tree.as.IDynamicAccessNode;
@@ -434,9 +433,7 @@ public class ASBlockWalker implements IA
             NamespaceAccessExpressionNode node)
     {
         debug("visitNamespaceAccessExpression()");
-        walk(node.getLeftOperandNode());
-        emitter.write(node.getOperator().getOperatorText());
-        walk(node.getRightOperandNode());
+        emitter.emitNamespaceAccessExpression(node);
     }
 
     @Override
@@ -458,7 +455,6 @@ public class ASBlockWalker implements IA
     {
         debug("visitBinaryOperator(" + node.getOperator().getOperatorText()
                 + ")");
-
         emitter.emitBinaryOperator(node);
     }
 
@@ -466,47 +462,7 @@ public class ASBlockWalker implements IA
     public void visitUnaryOperator(IUnaryOperatorNode node)
     {
         debug("visitUnaryOperator()");
-        if (node.getNodeID() == ASTNodeID.Op_PreIncrID
-                || node.getNodeID() == ASTNodeID.Op_PreDecrID
-                || node.getNodeID() == ASTNodeID.Op_BitwiseNotID
-                || node.getNodeID() == ASTNodeID.Op_LogicalNotID
-                || node.getNodeID() == ASTNodeID.Op_SubtractID
-                || node.getNodeID() == ASTNodeID.Op_AddID)
-        {
-            emitter.write(node.getOperator().getOperatorText());
-            walk(node.getOperandNode());
-        }
-
-        else if (node.getNodeID() == ASTNodeID.Op_PostIncrID
-                || node.getNodeID() == ASTNodeID.Op_PostDecrID)
-        {
-            walk(node.getOperandNode());
-            emitter.write(node.getOperator().getOperatorText());
-        }
-        else if (node.getNodeID() == ASTNodeID.Op_DeleteID
-                || node.getNodeID() == ASTNodeID.Op_VoidID)
-        {
-            emitter.write(node.getOperator().getOperatorText());
-            emitter.write(" ");
-            walk(node.getOperandNode());
-        }
-        else if (node.getNodeID() == ASTNodeID.Op_TypeOfID)
-        {
-            emitter.write(node.getOperator().getOperatorText());
-            emitter.write("(");
-            walk(node.getOperandNode());
-            emitter.write(")");
-        }
-    }
-
-    @Override
-    public void visitConditional(IConditionalNode node)
-    {
-        debug("visitConditional()");
-        emitter.write("(");
-        walk(node.getConditionalExpressionNode());
-        emitter.write(")");
-        walk(node.getStatementContentsNode());
+        emitter.emitUnaryOperator(node);
     }
 
     @Override
@@ -562,13 +518,7 @@ public class ASBlockWalker implements IA
     public void visitReturn(IReturnNode node)
     {
         debug("visitReturn()");
-        emitter.write("return");
-        IExpressionNode rnode = node.getReturnValueNode();
-        if (rnode != null && rnode.getNodeID() != ASTNodeID.NilID)
-        {
-            emitter.write(" ");
-            walk(rnode);
-        }
+        emitter.emitReturn(node);
     }
 
     @Override
@@ -595,26 +545,7 @@ public class ASBlockWalker implements IA
     @Override
     public void visitLanguageIdentifierNode(ILanguageIdentifierNode node)
     {
-        if (node.getKind() == ILanguageIdentifierNode.LanguageIdentifierKind.ANY_TYPE)
-        {
-            emitter.write("*");
-        }
-        else if (node.getKind() == ILanguageIdentifierNode.LanguageIdentifierKind.REST)
-        {
-            emitter.write("...");
-        }
-        else if (node.getKind() == ILanguageIdentifierNode.LanguageIdentifierKind.SUPER)
-        {
-            emitter.write("super");
-        }
-        else if (node.getKind() == ILanguageIdentifierNode.LanguageIdentifierKind.THIS)
-        {
-            emitter.write("this");
-        }
-        else if (node.getKind() == ILanguageIdentifierNode.LanguageIdentifierKind.VOID)
-        {
-            emitter.write("void");
-        }
+        emitter.emitLanguageIdentifier(node);
     }
 
     //--------------------------------------------------------------------------

Modified: flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASEmitter.java
URL: http://svn.apache.org/viewvc/flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASEmitter.java?rev=1434433&r1=1434432&r2=1434433&view=diff
==============================================================================
--- flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASEmitter.java (original)
+++ flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/codegen/ASEmitter.java Wed Jan 16 22:05:22 2013
@@ -36,6 +36,7 @@ import org.apache.flex.compiler.internal
 import org.apache.flex.compiler.internal.tree.as.FunctionNode;
 import org.apache.flex.compiler.internal.tree.as.FunctionObjectNode;
 import org.apache.flex.compiler.internal.tree.as.LabeledStatementNode;
+import org.apache.flex.compiler.internal.tree.as.NamespaceAccessExpressionNode;
 import org.apache.flex.compiler.problems.ICompilerProblem;
 import org.apache.flex.compiler.tree.ASTNodeID;
 import org.apache.flex.compiler.tree.as.IASNode;
@@ -58,6 +59,7 @@ import org.apache.flex.compiler.tree.as.
 import org.apache.flex.compiler.tree.as.IInterfaceNode;
 import org.apache.flex.compiler.tree.as.IIterationFlowNode;
 import org.apache.flex.compiler.tree.as.IKeywordNode;
+import org.apache.flex.compiler.tree.as.ILanguageIdentifierNode;
 import org.apache.flex.compiler.tree.as.ILiteralNode;
 import org.apache.flex.compiler.tree.as.IMemberAccessExpressionNode;
 import org.apache.flex.compiler.tree.as.INamespaceNode;
@@ -65,6 +67,7 @@ import org.apache.flex.compiler.tree.as.
 import org.apache.flex.compiler.tree.as.IObjectLiteralValuePairNode;
 import org.apache.flex.compiler.tree.as.IPackageNode;
 import org.apache.flex.compiler.tree.as.IParameterNode;
+import org.apache.flex.compiler.tree.as.IReturnNode;
 import org.apache.flex.compiler.tree.as.IScopedNode;
 import org.apache.flex.compiler.tree.as.ISetterNode;
 import org.apache.flex.compiler.tree.as.IStatementNode;
@@ -75,6 +78,7 @@ import org.apache.flex.compiler.tree.as.
 import org.apache.flex.compiler.tree.as.ITryNode;
 import org.apache.flex.compiler.tree.as.ITypeNode;
 import org.apache.flex.compiler.tree.as.ITypedExpressionNode;
+import org.apache.flex.compiler.tree.as.IUnaryOperatorNode;
 import org.apache.flex.compiler.tree.as.IVariableNode;
 import org.apache.flex.compiler.tree.as.IContainerNode.ContainerType;
 import org.apache.flex.compiler.tree.as.IWhileLoopNode;
@@ -999,6 +1003,18 @@ public class ASEmitter implements IASEmi
         getWalker().walk(node.getStatementContentsNode());
     }
 
+    @Override
+    public void emitReturn(IReturnNode node)
+    {
+        write("return");
+        IExpressionNode rnode = node.getReturnValueNode();
+        if (rnode != null && rnode.getNodeID() != ASTNodeID.NilID)
+        {
+            write(" ");
+            getWalker().walk(rnode);
+        }
+    }
+
     //--------------------------------------------------------------------------
     // Expressions
     //--------------------------------------------------------------------------
@@ -1304,4 +1320,73 @@ public class ASEmitter implements IASEmi
         write(" ");
         getWalker().walk(node.getLabeledStatement());
     }
+
+    @Override
+    public void emitNamespaceAccessExpression(NamespaceAccessExpressionNode node)
+    {
+        getWalker().walk(node.getLeftOperandNode());
+        write(node.getOperator().getOperatorText());
+        getWalker().walk(node.getRightOperandNode());
+    }
+
+    @Override
+    public void emitUnaryOperator(IUnaryOperatorNode node)
+    {
+        if (node.getNodeID() == ASTNodeID.Op_PreIncrID
+                || node.getNodeID() == ASTNodeID.Op_PreDecrID
+                || node.getNodeID() == ASTNodeID.Op_BitwiseNotID
+                || node.getNodeID() == ASTNodeID.Op_LogicalNotID
+                || node.getNodeID() == ASTNodeID.Op_SubtractID
+                || node.getNodeID() == ASTNodeID.Op_AddID)
+        {
+            write(node.getOperator().getOperatorText());
+            getWalker().walk(node.getOperandNode());
+        }
+
+        else if (node.getNodeID() == ASTNodeID.Op_PostIncrID
+                || node.getNodeID() == ASTNodeID.Op_PostDecrID)
+        {
+            getWalker().walk(node.getOperandNode());
+            write(node.getOperator().getOperatorText());
+        }
+        else if (node.getNodeID() == ASTNodeID.Op_DeleteID
+                || node.getNodeID() == ASTNodeID.Op_VoidID)
+        {
+            write(node.getOperator().getOperatorText());
+            write(" ");
+            getWalker().walk(node.getOperandNode());
+        }
+        else if (node.getNodeID() == ASTNodeID.Op_TypeOfID)
+        {
+            write(node.getOperator().getOperatorText());
+            write("(");
+            getWalker().walk(node.getOperandNode());
+            write(")");
+        }
+    }
+
+    @Override
+    public void emitLanguageIdentifier(ILanguageIdentifierNode node)
+    {
+        if (node.getKind() == ILanguageIdentifierNode.LanguageIdentifierKind.ANY_TYPE)
+        {
+            write("*");
+        }
+        else if (node.getKind() == ILanguageIdentifierNode.LanguageIdentifierKind.REST)
+        {
+            write("...");
+        }
+        else if (node.getKind() == ILanguageIdentifierNode.LanguageIdentifierKind.SUPER)
+        {
+            write("super");
+        }
+        else if (node.getKind() == ILanguageIdentifierNode.LanguageIdentifierKind.THIS)
+        {
+            write("this");
+        }
+        else if (node.getKind() == ILanguageIdentifierNode.LanguageIdentifierKind.VOID)
+        {
+            write("void");
+        }
+    }
 }

Modified: flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/visitor/ASNodeSwitch.java
URL: http://svn.apache.org/viewvc/flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/visitor/ASNodeSwitch.java?rev=1434433&r1=1434432&r2=1434433&view=diff
==============================================================================
--- flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/visitor/ASNodeSwitch.java (original)
+++ flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/as/visitor/ASNodeSwitch.java Wed Jan 16 22:05:22 2013
@@ -27,7 +27,6 @@ import org.apache.flex.compiler.tree.as.
 import org.apache.flex.compiler.tree.as.IBlockNode;
 import org.apache.flex.compiler.tree.as.ICatchNode;
 import org.apache.flex.compiler.tree.as.IClassNode;
-import org.apache.flex.compiler.tree.as.IConditionalNode;
 import org.apache.flex.compiler.tree.as.IDefaultXMLNamespaceNode;
 import org.apache.flex.compiler.tree.as.IDynamicAccessNode;
 import org.apache.flex.compiler.tree.as.IEmbedNode;
@@ -183,11 +182,7 @@ public class ASNodeSwitch implements IAS
         {
             visitor.visitWhileLoop((IWhileLoopNode) node);
         }
-        else if (node instanceof IConditionalNode)
-        {
-            visitor.visitConditional((IConditionalNode) node);
-        }
-
+        
         // IExpressionNode
         else if (node instanceof IEmbedNode)
         {

Modified: flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/visitor/IASBlockVisitor.java
URL: http://svn.apache.org/viewvc/flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/visitor/IASBlockVisitor.java?rev=1434433&r1=1434432&r2=1434433&view=diff
==============================================================================
--- flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/visitor/IASBlockVisitor.java (original)
+++ flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/visitor/IASBlockVisitor.java Wed Jan 16 22:05:22 2013
@@ -28,7 +28,6 @@ import org.apache.flex.compiler.tree.as.
 import org.apache.flex.compiler.tree.as.IBlockNode;
 import org.apache.flex.compiler.tree.as.ICatchNode;
 import org.apache.flex.compiler.tree.as.IClassNode;
-import org.apache.flex.compiler.tree.as.IConditionalNode;
 import org.apache.flex.compiler.tree.as.IDefaultXMLNamespaceNode;
 import org.apache.flex.compiler.tree.as.IDynamicAccessNode;
 import org.apache.flex.compiler.tree.as.IEmbedNode;
@@ -143,8 +142,6 @@ public interface IASBlockVisitor
 
     void visitIterationFlow(IIterationFlowNode node);
 
-    void visitConditional(IConditionalNode node);
-
     // is a IVariableNode
     void visitParameter(IParameterNode node);