/******************************************************************************* * Copyright (c) 2012 NumberFour AG * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * NumberFour AG - initial API and Implementation (Alex Panchenko) *******************************************************************************/ package org.eclipse.dltk.internal.javascript.parser.structure; import org.eclipse.dltk.compiler.ISourceElementRequestor; import org.eclipse.dltk.compiler.env.IModuleSource; import org.eclipse.dltk.compiler.problem.IProblemReporter; import org.eclipse.dltk.core.ISourceElementParser; import org.eclipse.dltk.javascript.ast.Script; import org.eclipse.dltk.javascript.parser.JavaScriptParserUtil; import org.eclipse.dltk.javascript.structure.IStructureNode; import org.eclipse.dltk.javascript.typeinfo.ReferenceSource; public class JavaScriptSourceElementParser3 implements ISourceElementParser { protected ISourceElementRequestor fRequestor = null; protected IProblemReporter fReporter = null; public void setRequestor(ISourceElementRequestor requestor) { this.fRequestor = requestor; } public void setReporter(IProblemReporter reporter) { this.fReporter = reporter; } public void parseSourceModule(IModuleSource module) { final Script script = parse(module); final StructureReporter3 reporter = new StructureReporter3( ReferenceSource.create(module.getModelElement())); final IStructureNode node = reporter.visit(script); reportStructure(script, node); } protected void reportStructure(final Script script, final IStructureNode node) { fRequestor.enterModule(); node.reportStructure(new StructureRequestor(fRequestor), new StructureContext()); fRequestor.exitModule(script.sourceEnd()); } protected Script parse(IModuleSource module) { return JavaScriptParserUtil.parse(module, fReporter); } }