Chromium Code Reviews| Index: compiler/java/com/google/dart/compiler/parser/DartParser.java |
| diff --git a/compiler/java/com/google/dart/compiler/parser/DartParser.java b/compiler/java/com/google/dart/compiler/parser/DartParser.java |
| index 47acd159c327788f1529c04ef9af83d6e8408cc0..bfb9291f38ff6fd6422b914dcf1b7291a1afd818 100644 |
| --- a/compiler/java/com/google/dart/compiler/parser/DartParser.java |
| +++ b/compiler/java/com/google/dart/compiler/parser/DartParser.java |
| @@ -93,6 +93,7 @@ import com.google.dart.compiler.ast.DartWhileStatement; |
| import com.google.dart.compiler.ast.LibraryNode; |
| import com.google.dart.compiler.ast.LibraryUnit; |
| import com.google.dart.compiler.ast.Modifiers; |
| +import com.google.dart.compiler.metrics.CompilerMetrics; |
| import com.google.dart.compiler.parser.DartScanner.Location; |
| import com.google.dart.compiler.parser.DartScanner.Position; |
| import com.google.dart.compiler.util.Lists; |
| @@ -112,6 +113,8 @@ import java.util.Set; |
| */ |
| public class DartParser extends CompletionHooksParserBase { |
| + private final Source source; |
| + private final String sourceCode; |
| private final boolean isDietParse; |
| private final Set<String> prefixes; |
| private final boolean corelibParse; |
| @@ -201,48 +204,60 @@ public class DartParser extends CompletionHooksParserBase { |
| public DartParser(Source source, |
| String sourceCode, |
| - DartCompilerListener listener) { |
| - this(new DartScannerParserContext(source, sourceCode, listener)); |
| - } |
| - |
| - public DartParser(ParserContext ctx) { |
| - this(ctx, false); |
| - } |
| - |
| - public DartParser(ParserContext ctx, Set<String> prefixes, boolean isDietParse) { |
| - this(ctx, isDietParse, prefixes); |
| - } |
| - |
| - public DartParser(ParserContext ctx, boolean isDietParse) { |
| - this(ctx, isDietParse, Collections.<String>emptySet()); |
| - } |
| - |
| - public DartParser(ParserContext ctx, boolean isDietParse, Set<String> prefixes) { |
| - super(ctx); |
| + boolean isDietParse, |
| + Set<String> prefixes, |
| + DartCompilerListener listener, |
| + CompilerMetrics compilerMetrics) { |
| + super(new DartParserCommentsHelper.CommentParserContext(source, sourceCode, listener, compilerMetrics)); |
| + this.source = source; |
| + this.sourceCode = sourceCode; |
| this.isDietParse = isDietParse; |
| this.prefixes = prefixes; |
| - { |
| - Source source = ctx.getSource(); |
| - this.corelibParse = source != null && SystemLibraryManager.isDartUri(source.getUri()); |
| - } |
| - } |
| - |
| - private DartParser(Source source, DartCompilerListener listener) throws IOException { |
| - this(source, source.getSourceReader(), listener); |
| - } |
| - |
| - private DartParser(Source source, |
| - Reader sourceReader, |
| - DartCompilerListener listener) throws IOException { |
| - this(new DartScannerParserContext(source, read(sourceReader), listener)); |
| + this.corelibParse = source != null && SystemLibraryManager.isDartUri(source.getUri()); |
| } |
| - public static DartParser getSourceParser(Source source, DartCompilerListener listener) |
| - throws IOException { |
| - return new DartParser(source, listener); |
| +// public DartParser(ParserContext ctx) { |
|
Brian Wilkerson
2012/06/25 14:24:38
Do we need this commented out code, or can we dele
scheglov
2012/06/26 19:46:34
Done.
|
| +// this(ctx, false); |
| +// } |
| +// |
| +// public DartParser(ParserContext ctx, Set<String> prefixes, boolean isDietParse) { |
| +// this(ctx, isDietParse, prefixes); |
| +// } |
| +// |
| +// public DartParser(ParserContext ctx, boolean isDietParse) { |
| +// this(ctx, isDietParse, Collections.<String>emptySet()); |
| +// } |
| +// |
| +// public DartParser(ParserContext ctx, boolean isDietParse, Set<String> prefixes) { |
| +// super(ctx); |
| +// this.isDietParse = isDietParse; |
| +// this.prefixes = prefixes; |
| +// { |
| +// Source source = ctx.getSource(); |
| +// this.corelibParse = source != null && SystemLibraryManager.isDartUri(source.getUri()); |
| +// } |
| +// } |
| +// |
| +// private DartParser(Source source, DartCompilerListener listener) throws IOException { |
| +// this(source, source.getSourceReader(), listener); |
| +// } |
| +// |
| +// private DartParser(Source source, |
| +// Reader sourceReader, |
| +// DartCompilerListener listener) throws IOException { |
| +// this(new DartScannerParserContext(source, read(sourceReader), listener)); |
| +// } |
| +// |
| +// public static DartParser getSourceParser(Source source, DartCompilerListener listener) |
| +// throws IOException { |
| +// return new DartParser(source, listener); |
| +// } |
| + |
| + public static String read(Source source) throws IOException { |
| + return read(source.getSourceReader()); |
| } |
| - |
| - private static String read(Reader reader) throws IOException { |
| + |
| + public static String read(Reader reader) throws IOException { |
| try { |
| return CharStreams.toString(reader); |
| } finally { |
| @@ -302,11 +317,12 @@ public class DartParser extends CompletionHooksParserBase { |
| */ |
| @Terminals(tokens={Token.EOS, Token.CLASS, Token.LIBRARY, Token.IMPORT, Token.SOURCE, |
| Token.RESOURCE, Token.NATIVE}) |
| - public DartUnit parseUnit(DartSource source) { |
| + public DartUnit parseUnit() { |
| + DartSource dartSource = (DartSource) source; |
| try { |
| beginCompilationUnit(); |
| - ctx.unitAboutToCompile(source, isDietParse); |
| - DartUnit unit = new DartUnit(source, isDietParse); |
| + ctx.unitAboutToCompile(dartSource, isDietParse); |
| + DartUnit unit = new DartUnit(dartSource, isDietParse); |
| // parse any directives at the beginning of the source |
| parseDirectives(unit); |
| @@ -353,6 +369,12 @@ public class DartParser extends CompletionHooksParserBase { |
| } |
| } |
| expect(Token.EOS); |
| + // add comments |
| + { |
| + List<int[]> commentLocs = ((DartParserCommentsHelper.CommentParserContext) ctx).getCommentLocs(); |
| + DartParserCommentsHelper.addComments(unit, source, sourceCode, commentLocs); |
| + } |
| + // done |
| return done(unit); |
| } catch (StringInterpolationParseError exception) { |
| throw new InternalCompilerException("Failed to parse " + source.getUri(), exception); |