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 <aha...@apache.org> Authored: Wed Apr 20 11:40:39 2016 -0700 Committer: Alex Harui <aha...@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"