Added VF2JS SWC backend Signed-off-by: Erik de Bruin <[email protected]>
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/2b12a201 Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/2b12a201 Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/2b12a201 Branch: refs/heads/develop Commit: 2b12a201c830941b1277901615079bb61232afd0 Parents: 667f93e Author: Erik de Bruin <[email protected]> Authored: Fri Oct 31 17:43:19 2014 +0100 Committer: Erik de Bruin <[email protected]> Committed: Fri Oct 31 17:44:04 2014 +0100 ---------------------------------------------------------------------- .../driver/mxml/vf2js/MXMLVF2JSSWCBackend.java | 121 +++++++++++++++++++ 1 file changed, 121 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/2b12a201/compiler.jx/src/org/apache/flex/compiler/internal/driver/mxml/vf2js/MXMLVF2JSSWCBackend.java ---------------------------------------------------------------------- diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/driver/mxml/vf2js/MXMLVF2JSSWCBackend.java b/compiler.jx/src/org/apache/flex/compiler/internal/driver/mxml/vf2js/MXMLVF2JSSWCBackend.java new file mode 100644 index 0000000..f9390fc --- /dev/null +++ b/compiler.jx/src/org/apache/flex/compiler/internal/driver/mxml/vf2js/MXMLVF2JSSWCBackend.java @@ -0,0 +1,121 @@ +/* + * + * 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.driver.mxml.vf2js; + +import java.io.FilterWriter; +import java.util.List; + +import org.apache.flex.compiler.codegen.IDocEmitter; +import org.apache.flex.compiler.codegen.as.IASEmitter; +import org.apache.flex.compiler.codegen.js.IJSEmitter; +import org.apache.flex.compiler.codegen.js.IJSWriter; +import org.apache.flex.compiler.codegen.mxml.IMXMLEmitter; +import org.apache.flex.compiler.config.Configurator; +import org.apache.flex.compiler.driver.IBackend; +import org.apache.flex.compiler.internal.codegen.js.vf2js.JSVF2JSDocEmitter; +import org.apache.flex.compiler.internal.codegen.js.vf2js.JSVF2JSEmitter; +import org.apache.flex.compiler.internal.codegen.mxml.MXMLBlockWalker; +import org.apache.flex.compiler.internal.codegen.mxml.MXMLWriter; +import org.apache.flex.compiler.internal.codegen.mxml.flexjs.MXMLFlexJSBlockWalker; +import org.apache.flex.compiler.internal.codegen.mxml.vf2js.MXMLVF2JSEmitter; +import org.apache.flex.compiler.internal.driver.js.vf2js.JSVF2JSConfiguration; +import org.apache.flex.compiler.internal.driver.mxml.MXMLBackend; +import org.apache.flex.compiler.internal.targets.FlexJSSWCTarget; +import org.apache.flex.compiler.internal.targets.JSTarget; +import org.apache.flex.compiler.internal.visitor.as.ASNodeSwitch; +import org.apache.flex.compiler.internal.visitor.mxml.MXMLNodeSwitch; +import org.apache.flex.compiler.problems.ICompilerProblem; +import org.apache.flex.compiler.projects.IASProject; +import org.apache.flex.compiler.targets.ITargetProgressMonitor; +import org.apache.flex.compiler.targets.ITargetSettings; +import org.apache.flex.compiler.tree.mxml.IMXMLFileNode; +import org.apache.flex.compiler.units.ICompilationUnit; +import org.apache.flex.compiler.visitor.IBlockVisitor; +import org.apache.flex.compiler.visitor.IBlockWalker; +import org.apache.flex.compiler.visitor.mxml.IMXMLBlockWalker; + +/** + * A concrete implementation of the {@link IBackend} API where the + * {@link MXMLBlockWalker} is used to traverse the {@link IMXMLFileNode} AST. + * + * @author Erik de Bruin + */ +public class MXMLVF2JSSWCBackend extends MXMLBackend +{ + + @Override + public Configurator createConfigurator() + { + return new Configurator(JSVF2JSConfiguration.class); + } + + @Override + public IMXMLEmitter createMXMLEmitter(FilterWriter out) + { + return new MXMLVF2JSEmitter(out); + } + + @Override + public IMXMLBlockWalker createMXMLWalker(IASProject project, + List<ICompilerProblem> errors, IMXMLEmitter mxmlEmitter, + IASEmitter asEmitter, IBlockWalker asBlockWalker) + { + MXMLBlockWalker walker = new MXMLFlexJSBlockWalker(errors, project, + mxmlEmitter, asEmitter, asBlockWalker); + + ASNodeSwitch asStrategy = new ASNodeSwitch( + (IBlockVisitor) asBlockWalker); + walker.setASStrategy(asStrategy); + + MXMLNodeSwitch mxmlStrategy = new MXMLNodeSwitch(walker); + walker.setMXMLStrategy(mxmlStrategy); + + return walker; + } + + @Override + public IDocEmitter createDocEmitter(IASEmitter emitter) + { + return new JSVF2JSDocEmitter((IJSEmitter) emitter); + } + + @Override + public IJSEmitter createEmitter(FilterWriter out) + { + IJSEmitter emitter = new JSVF2JSEmitter(out); + emitter.setDocEmitter(createDocEmitter(emitter)); + return emitter; + } + + @Override + public IJSWriter createMXMLWriter(IASProject project, + List<ICompilerProblem> problems, ICompilationUnit compilationUnit, + boolean enableDebug) + { + return new MXMLWriter(project, problems, compilationUnit, enableDebug); + } + + @Override + public JSTarget createTarget(IASProject project, ITargetSettings settings, + ITargetProgressMonitor monitor) + { + return new FlexJSSWCTarget(project, settings, monitor); + } +}
