Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(200)

Unified Diff: pkg/front_end/lib/src/fasta/parser/type_continuation.dart

Issue 2978063002: Move parser helper classes to own files and clean them up. (Closed)
Patch Set: Don't use problems.dart in parser. Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/front_end/lib/src/fasta/parser/parser_error.dart ('k') | pkg/front_end/lib/src/fasta/parser/util.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/front_end/lib/src/fasta/parser/type_continuation.dart
diff --git a/pkg/front_end/lib/src/fasta/parser/type_continuation.dart b/pkg/front_end/lib/src/fasta/parser/type_continuation.dart
new file mode 100644
index 0000000000000000000000000000000000000000..a6227707feae518e1e494fc98c701bf1a00863a9
--- /dev/null
+++ b/pkg/front_end/lib/src/fasta/parser/type_continuation.dart
@@ -0,0 +1,87 @@
+// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+library fasta.parser.type_continuation;
+
+import 'formal_parameter_kind.dart' show FormalParameterKind;
+
+/// Indication of how the parser should continue after (attempting) to parse a
+/// type.
+///
+/// Depending on the continuation, the parser may not parse a type at all.
+enum TypeContinuation {
+ /// Indicates that a type is unconditionally expected.
+ Required,
+
+ /// Indicates that a type may follow. If the following matches one of these
+ /// productions, it is parsed as a type:
+ ///
+ /// - `'void'`
+ /// - `'Function' ( '(' | '<' )`
+ /// - `identifier ('.' identifier)? ('<' ... '>')? identifer`
+ ///
+ /// Otherwise, do nothing.
+ Optional,
+
+ /// Same as [Optional], but we have seen `var`.
+ OptionalAfterVar,
+
+ /// Indicates that the keyword `typedef` has just been seen, and the parser
+ /// should parse the following as a type unless it is followed by `=`.
+ Typedef,
+
+ /// Indicates that what follows is either a local declaration or an
+ /// expression.
+ ExpressionStatementOrDeclaration,
+
+ /// Indicates that the keyword `const` has just been seen, and what follows
+ /// may be a local variable declaration or an expression.
+ ExpressionStatementOrConstDeclaration,
+
+ /// Indicates that the parser is parsing an expression and has just seen an
+ /// identifier.
+ SendOrFunctionLiteral,
+
+ /// Indicates that the parser has just parsed `for '('` and is looking to
+ /// parse a variable declaration or expression.
+ VariablesDeclarationOrExpression,
+
+ /// Indicates that an optional type followed by a normal formal parameter is
+ /// expected.
+ NormalFormalParameter,
+
+ /// Indicates that an optional type followed by an optional positional formal
+ /// parameter is expected.
+ OptionalPositionalFormalParameter,
+
+ /// Indicates that an optional type followed by a named formal parameter is
+ /// expected.
+ NamedFormalParameter,
+
+ /// Same as [NormalFormalParameter], but we have seen `var`.
+ NormalFormalParameterAfterVar,
+
+ /// Same as [OptionalPositionalFormalParameter], but we have seen `var`.
+ OptionalPositionalFormalParameterAfterVar,
+
+ /// Same as [NamedFormalParameter], but we have seen `var`.
+ NamedFormalParameterAfterVar,
+}
+
+TypeContinuation typeContiunationFromFormalParameterKind(
+ FormalParameterKind type) {
+ if (type != null) {
+ switch (type) {
+ case FormalParameterKind.mandatory:
+ return TypeContinuation.NormalFormalParameter;
+
+ case FormalParameterKind.optionalNamed:
+ return TypeContinuation.NamedFormalParameter;
+
+ case FormalParameterKind.optionalPositional:
+ return TypeContinuation.OptionalPositionalFormalParameter;
+ }
+ }
+ return null;
+}
« no previous file with comments | « pkg/front_end/lib/src/fasta/parser/parser_error.dart ('k') | pkg/front_end/lib/src/fasta/parser/util.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698