You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2016/04/22 19:24:50 UTC

[03/35] git commit: [flex-falcon] [refs/heads/feature/maven-migration-test] - ant build seemed to need these files

ant build seemed to need these files


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/5e9cfb51
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/5e9cfb51
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/5e9cfb51

Branch: refs/heads/feature/maven-migration-test
Commit: 5e9cfb51d87ece6cb8d03464bba027e5ca6660b4
Parents: d4809e6
Author: Alex Harui <ah...@apache.org>
Authored: Wed Apr 20 11:40:39 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Fri Apr 22 09:02:56 2016 -0700

----------------------------------------------------------------------
 .../flex/compiler/internal/as/codegen/cmc.jbg   | 245 +++++++++++++++++++
 .../flex/compiler/internal/css/codegen/css.jbg  |  58 +++++
 2 files changed, 303 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/5e9cfb51/compiler/src/main/jburg/org/apache/flex/compiler/internal/as/codegen/cmc.jbg
----------------------------------------------------------------------
diff --git a/compiler/src/main/jburg/org/apache/flex/compiler/internal/as/codegen/cmc.jbg b/compiler/src/main/jburg/org/apache/flex/compiler/internal/as/codegen/cmc.jbg
new file mode 100644
index 0000000..df5a793
--- /dev/null
+++ b/compiler/src/main/jburg/org/apache/flex/compiler/internal/as/codegen/cmc.jbg
@@ -0,0 +1,245 @@
+/*
+ *
+ *  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 org.apache.flex.compiler.internal.as.codegen;
+
+header
+{
+    import org.apache.flex.compiler.problems.ICompilerProblem;
+    import org.apache.flex.compiler.problems.*;
+    import org.apache.flex.compiler.exceptions.BURMAbortException;
+
+    import static org.apache.flex.abc.ABCConstants.*;
+
+    import org.apache.flex.abc.semantics.Label;
+    import org.apache.flex.abc.semantics.Name;
+    import org.apache.flex.abc.semantics.Namespace;
+    import org.apache.flex.abc.semantics.ECMASupport;
+    import org.apache.flex.abc.instructionlist.InstructionList;
+
+    import org.apache.flex.compiler.constants.IASLanguageConstants;
+
+    import org.apache.flex.compiler.tree.ASTNodeID;
+    import static org.apache.flex.compiler.tree.ASTNodeID.*;
+
+    import org.apache.flex.compiler.internal.semantics.SemanticUtils;
+
+    import org.apache.flex.compiler.tree.as.IASNode;
+    import org.apache.flex.compiler.tree.as.ITryNode;
+
+}
+
+INodeType IASNode;
+OpcodeType ASTNodeID;
+
+/*
+ *  The I-node type is IASNode, and it has its own adapter.
+ */
+INodeAdapter org.apache.flex.compiler.internal.as.codegen.IASNodeAdapter;
+
+//  Generate Java output.
+Language java;
+
+ReturnType InstructionList;
+
+/*
+ *  A Name built for a declaration, such as the name for 'x' in:
+ *      var x : Foo;
+ *  A declaration name can just be a simple AET Name, as there is no need to resolve
+ *  it or do anything else to figure out what Name to use.
+ */
+ReturnType decl_name = Name;
+
+/**
+ *  This is a name to use in an expression context.  It is a Binding
+ *  as the Binding will also hold additional information like did the expression
+ *  resolve to anything, and if so what did it resolve to.  In an expression context
+ *  we will always need that information.
+ */
+ReturnType name = Binding;
+
+/**
+ *  Qualified name - this acts the same as a name above, but is built a little differently.
+ */
+ReturnType qualifiedName = Binding;
+ReturnType qualifiedNamePart = String;
+
+/**
+ *  This is a name used in a type annotation context, such as 'Foo' in:
+ *      var x : Foo;
+ *  It is a Binding, as type annotations must always be resolved.
+ *  A type_name also allows '*', which can't happen in a general expression context.
+ */
+ReturnType type_name = Binding;
+
+/**
+ *  Name of a return type from a function signature.
+ *  It is the same as a type_name, above, except it also allows 'void', which is not usually allowed as a type_name
+ */
+ReturnType return_type_name = Binding;
+
+/**
+ *  This is a name used in a new context, such as 'Foo' in:
+ *      new Foo();
+ *  We can do additional analysis when the new expression resolves to a Type, which
+ *  is why we have a special name for the new expression.
+ */
+ReturnType new_type_name = Binding;
+
+ReturnType dottedNamePart = String;
+
+ReturnType conditionalElements = ABCGeneratingReducer.ConditionalFragment;
+
+ReturnType ifElseIf = ABCGeneratingReducer.ConditionalFragment;
+
+ReturnType catch_block = ABCGeneratingReducer.CatchPrototype;
+
+ReturnType integer_constant = Integer;
+ReturnType uint_constant = Long;
+ReturnType double_constant = Double;
+ReturnType string_constant = String;
+ReturnType boolean_constant = Boolean;
+
+ReturnType numeric_constant = Number;
+
+ReturnType constant_value = Object;
+ReturnType required_constant_value = Object;
+
+ReturnType non_resolving_identifier = String;
+
+ReturnType runtime_name_expression = ABCGeneratingReducer.RuntimeMultiname;
+ReturnType multinameL = Name;
+ReturnType stmt_label = String;
+ReturnType e4x_literal = String;
+
+JBurg.Constant ERROR_TRAP = 268435456;
+
+{
+    final static boolean NEED_VALUE = true;
+    final static boolean DISCARD_VALUE = false;
+
+
+    /**
+     *  The reducer has all the implementation
+     *  logic for the rewrite; the BURM constructed
+     *  by this specification drives that logic.
+     */
+    ABCGeneratingReducer reducer;
+
+    /**
+     *  Delegate calls to pushNumericConstant to the reducer.
+     *  This routine is called from other parts of the code generator,
+     *  so it's necessary to keep this layer of indirection.
+     */
+    public static void pushNumericConstant(long value, InstructionList result_list)
+    {
+        ABCGeneratingReducer.pushNumericConstant(value, result_list);
+    }
+
+    /*
+     *  **  Cost functions  **
+     */
+
+
+    /**
+     *  @return "feasible" if the reducer can reduce this to a dotted name.
+     */
+    int isDottedName(IASNode iNode)
+    {
+       return reducer.isDottedName(iNode);
+    }
+
+    /**
+     *  @return "feasible" if the reducer can reduce this to a package name.
+     */
+    int isPackageName(IASNode iNode)
+    {
+       return reducer.isPackageName(iNode);
+    }
+
+    /**
+     *  @return "feasible" if this node's qualifier is a compile-time constant.
+     */
+    int qualifierIsCompileTimeConstant(IASNode iNode)
+    {
+       return reducer.qualifierIsCompileTimeConstant(iNode);
+    }
+
+    /**
+     *  @return "feasible" if this node can be resolved to a compile-time constant.
+     */
+    int isCompileTimeConstant(IASNode iNode)
+    {
+       return reducer.isCompileTimeConstant(iNode);
+    }
+
+    /**
+     *  @return "feasible" if this node is for 'new Array()'.
+     */
+    int isEmptyArrayConstructor(IASNode iNode)
+    {
+        return reducer.isEmptyArrayConstructor(iNode);
+    }
+
+    /**
+     *  @return "feasible" if this node is for 'new Object()'.
+     */
+    int isEmptyObjectConstructor(IASNode iNode)
+    {
+        return reducer.isEmptyObjectConstructor(iNode);
+    }
+    
+    /**
+     *  @return "feasible" if this node is "super(this)".
+     */
+    int isSuperThisForFieldAccess(IASNode iNode)
+    {
+        return SemanticUtils.isSuperThisForFieldAccess(iNode);
+    }
+
+    /**
+     *  recordError is a convenience method for error reductions;
+     *  it adds a problem to the current set of problems and
+     *  returns an empty InstructionList.
+     *  @return an empty InstructionList.
+     */
+    InstructionList recordError(ICompilerProblem problem)
+    {
+        reducer.getProblems().add(problem);
+        return new InstructionList();
+    }
+}
+
+/*
+ *  Error recovery routine: deduce what we can from the problem
+ *  tree, then abort this BURM with an exception that the caller
+ *  can catch and ignore.
+ */
+DefaultErrorHandler
+{
+    new UnknownTreeHandler(reducer.getProblems()).analyze(p);
+    BURMAbortException.abort();
+}
+
+/*
+ *  Patterns and rules are stored in their own, shareable file.
+ */
+JBurg.include "CmcPatterns.jbg"
+JBurg.include "CmcRules.jbg"
+JBurg.include "SemanticErrors.jbg"

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/5e9cfb51/compiler/src/main/jburg/org/apache/flex/compiler/internal/css/codegen/css.jbg
----------------------------------------------------------------------
diff --git a/compiler/src/main/jburg/org/apache/flex/compiler/internal/css/codegen/css.jbg b/compiler/src/main/jburg/org/apache/flex/compiler/internal/css/codegen/css.jbg
new file mode 100644
index 0000000..f5548aa
--- /dev/null
+++ b/compiler/src/main/jburg/org/apache/flex/compiler/internal/css/codegen/css.jbg
@@ -0,0 +1,58 @@
+/*
+ *
+ *  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 org.apache.flex.compiler.internal.css.codegen;
+
+header 
+{
+    import static org.apache.flex.abc.ABCConstants.*;
+    import static org.apache.flex.compiler.internal.css.CSSModelTreeType.*;
+    
+    import org.apache.flex.compiler.css.*;
+    import org.apache.flex.compiler.internal.css.*;
+
+    import org.apache.flex.abc.semantics.*;
+    import org.apache.flex.abc.instructionlist.InstructionList;
+    import org.apache.flex.compiler.internal.css.codegen.Pair.*;
+}
+
+INodeType ICSSNode;
+
+INodeAdapter jburg.burg.inode.DefaultAdapter;
+
+OpcodeType CSSModelTreeType;
+
+Language java;
+
+ReturnType PairOfInstructionLists;
+ReturnType selector = InstructionListAndString;
+ReturnType selectorGroup = InstructionListAndClosure;
+ReturnType rule = InstructionListAndClosure;
+
+{
+    public CSSEmitter(final CSSReducer reducer)
+    {
+        this.reducer = reducer;
+    }
+    
+    private final CSSReducer reducer;
+}
+
+JBurg.include "CSSPatterns.jbg"
+JBurg.include "CSSRules.jbg"