Index: pkg/fasta/lib/src/source/diet_parser.dart |
diff --git a/pkg/fasta/lib/src/source/diet_parser.dart b/pkg/fasta/lib/src/source/diet_parser.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1811f859f1e8f60b2c7f996b130e28be8d59b0d2 |
--- /dev/null |
+++ b/pkg/fasta/lib/src/source/diet_parser.dart |
@@ -0,0 +1,47 @@ |
+// Copyright (c) 2016, 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.diet_parser; |
+ |
+import 'package:dart_scanner/src/token.dart' show |
+ BeginGroupToken, |
+ Token; |
+ |
+import 'package:dart_parser/src/class_member_parser.dart' show |
+ ClassMemberParser; |
+ |
+import 'package:dart_parser/src/error_kind.dart' show |
+ ErrorKind; |
+ |
+import 'package:dart_parser/src/listener.dart' show |
+ Listener; |
+ |
+import 'package:dart_parser/src/parser.dart' show |
+ optional; |
+ |
+// TODO(ahe): Move this to parser package. |
+class DietParser extends ClassMemberParser { |
+ DietParser(Listener listener, |
+ {bool asyncAwaitKeywordsEnabled: false, |
+ bool enableGenericMethodSyntax: false}) |
+ : super(listener, asyncAwaitKeywordsEnabled: asyncAwaitKeywordsEnabled, |
+ enableGenericMethodSyntax: enableGenericMethodSyntax); |
+ |
+ Token parseFormalParameters(Token token) => skipFormals(token); |
+ |
+ Token skipFormals(Token token) { |
+ listener.beginOptionalFormalParameters(token); |
+ if (!optional('(', token)) { |
+ if (optional(';', token)) { |
+ listener.reportError(token, ErrorKind.EXPECTED_OPEN_PARENS); |
+ return token; |
+ } |
+ return listener.unexpected(token); |
+ } |
+ BeginGroupToken beginGroupToken = token; |
+ Token endToken = beginGroupToken.endGroup; |
+ listener.endFormalParameters(0, token, endToken); |
+ return endToken.next; |
+ } |
+} |