01dddf659e
This adds shared helpers for parsing bool, int, and double literals to their corresponding values. The macro metadata literals are updated support digit separators and to hold the literal value. Change-Id: I709018b6c3a3b8ab09188d36c28f3c09636e0ea0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/391964 Reviewed-by: Konstantin Shcheglov <scheglov@google.com> Reviewed-by: Jens Johansen <jensj@google.com> Commit-Queue: Johnni Winther <johnniwinther@google.com>
77 lines
2.2 KiB
Dart
77 lines
2.2 KiB
Dart
// 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 _fe_analyzer_shared.parser;
|
|
|
|
import '../scanner/token.dart' show Token;
|
|
|
|
import 'listener.dart' show Listener;
|
|
|
|
import 'parser_impl.dart' show Parser;
|
|
|
|
import 'parser_error.dart' show ParserError;
|
|
|
|
import '../messages/codes.dart'
|
|
show Message, messageNativeClauseShouldBeAnnotation;
|
|
|
|
export 'assert.dart' show Assert;
|
|
|
|
export 'block_kind.dart' show BlockKind;
|
|
|
|
export 'class_member_parser.dart' show ClassMemberParser;
|
|
|
|
export 'constructor_reference_context.dart' show ConstructorReferenceContext;
|
|
|
|
export 'formal_parameter_kind.dart' show FormalParameterKind;
|
|
|
|
export 'identifier_context.dart' show IdentifierContext;
|
|
|
|
export 'listener.dart' show Listener;
|
|
|
|
export 'declaration_kind.dart' show DeclarationHeaderKind, DeclarationKind;
|
|
|
|
export 'directive_context.dart' show DirectiveContext;
|
|
|
|
export 'member_kind.dart' show MemberKind;
|
|
|
|
export 'parser_impl.dart' show ConstantPatternContext, Parser;
|
|
|
|
export 'parser_error.dart' show ParserError;
|
|
|
|
export 'top_level_parser.dart' show TopLevelParser;
|
|
|
|
export 'util.dart'
|
|
show
|
|
boolFromToken,
|
|
doubleFromToken,
|
|
intFromToken,
|
|
lengthForToken,
|
|
lengthOfSpan,
|
|
optional,
|
|
stripSeparators;
|
|
|
|
class ErrorCollectingListener extends Listener {
|
|
final List<ParserError> recoverableErrors = <ParserError>[];
|
|
|
|
@override
|
|
void handleRecoverableError(
|
|
Message message, Token startToken, Token endToken) {
|
|
/// TODO(danrubel): Ignore this error until we deprecate `native` support.
|
|
if (message == messageNativeClauseShouldBeAnnotation) {
|
|
return;
|
|
}
|
|
recoverableErrors
|
|
.add(new ParserError.fromTokens(startToken, endToken, message));
|
|
}
|
|
}
|
|
|
|
List<ParserError> parse(Token tokens,
|
|
{bool useImplicitCreationExpression = true}) {
|
|
ErrorCollectingListener listener = new ErrorCollectingListener();
|
|
Parser parser = new Parser(listener,
|
|
useImplicitCreationExpression: useImplicitCreationExpression);
|
|
parser.parseUnit(tokens);
|
|
return listener.recoverableErrors;
|
|
}
|