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);