Chromium Code Reviews| Index: pkg/analyzer_experimental/lib/analyzer.dart |
| diff --git a/pkg/analyzer_experimental/lib/analyzer.dart b/pkg/analyzer_experimental/lib/analyzer.dart |
| index a88c94c2060b037c77b9500cb1837b6f55fa18ad..ebb253e56d15b2fe75f74ce1c24e24088ad188c0 100644 |
| --- a/pkg/analyzer_experimental/lib/analyzer.dart |
| +++ b/pkg/analyzer_experimental/lib/analyzer.dart |
| @@ -14,6 +14,7 @@ import 'src/generated/error.dart'; |
| import 'src/generated/parser.dart'; |
| import 'src/generated/scanner.dart'; |
| import 'src/generated/source_io.dart'; |
| +import 'src/string_source.dart'; |
| export 'src/error.dart'; |
| export 'src/generated/ast.dart'; |
| @@ -46,6 +47,24 @@ CompilationUnit parseDartFile(String path) { |
| return unit; |
| } |
| +/// Parses a string of Dart code into an AST. |
| +/// |
| +/// If [name] is passed, it's used in error messages as the name of the code |
| +/// being parsed. |
| +CompilationUnit parseDartString(String contents, {String name}) { |
|
Brian Wilkerson
2013/08/23 14:19:29
It might be better to name this something like par
nweiz
2013/08/26 17:03:39
Done.
|
| + var source = name == null ? null : new StringSource(contents, name); |
|
Brian Wilkerson
2013/08/23 14:19:29
It would be good to have some tests for this. In p
nweiz
2013/08/26 17:03:39
The error message does default to "<unknown source
|
| + var errorCollector = new _ErrorCollector(); |
| + var scanner = new StringScanner(source, contents, errorCollector); |
| + var token = scanner.tokenize(); |
| + var parser = new Parser(source, errorCollector); |
| + var unit = parser.parseCompilationUnit(token); |
| + unit.lineInfo = new LineInfo(scanner.lineStarts); |
| + |
| + if (errorCollector.hasErrors) throw errorCollector.group; |
| + |
| + return unit; |
| +} |
| + |
| /// Converts an AST node representing a string literal into a [String]. |
| String stringLiteralToString(StringLiteral literal) { |
| return literal.stringValue; |