Index: pkg/compiler/lib/src/parser/listener.dart |
diff --git a/pkg/compiler/lib/src/parser/listener.dart b/pkg/compiler/lib/src/parser/listener.dart |
deleted file mode 100644 |
index b33bd84d2b2d4b2c9019ad806fc37ac1c27ef8bb..0000000000000000000000000000000000000000 |
--- a/pkg/compiler/lib/src/parser/listener.dart |
+++ /dev/null |
@@ -1,637 +0,0 @@ |
-// Copyright (c) 2012, 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 dart2js.parser.listener; |
- |
-import '../common.dart'; |
-import '../diagnostics/messages.dart' show MessageTemplate; |
-import '../tokens/precedence_constants.dart' as Precedence |
- show EOF_INFO, IDENTIFIER_INFO; |
-import '../tokens/token.dart' |
- show |
- BadInputToken, |
- BeginGroupToken, |
- ErrorToken, |
- StringToken, |
- Token, |
- UnmatchedToken, |
- UnterminatedToken; |
-import '../tree/tree.dart'; |
- |
-const bool VERBOSE = false; |
- |
-/** |
- * A parser event listener that does nothing except throw exceptions |
- * on parser errors. |
- */ |
-class Listener { |
- set suppressParseErrors(bool value) {} |
- |
- void beginArguments(Token token) {} |
- |
- void endArguments(int count, Token beginToken, Token endToken) {} |
- |
- /// Handle async modifiers `async`, `async*`, `sync`. |
- void handleAsyncModifier(Token asyncToken, Token startToken) {} |
- |
- void beginAwaitExpression(Token token) {} |
- |
- void endAwaitExpression(Token beginToken, Token endToken) {} |
- |
- void beginBlock(Token token) {} |
- |
- void endBlock(int count, Token beginToken, Token endToken) {} |
- |
- void beginCascade(Token token) {} |
- |
- void endCascade() {} |
- |
- void beginClassBody(Token token) {} |
- |
- void endClassBody(int memberCount, Token beginToken, Token endToken) {} |
- |
- void beginClassDeclaration(Token token) {} |
- |
- void endClassDeclaration(int interfacesCount, Token beginToken, |
- Token extendsKeyword, Token implementsKeyword, Token endToken) {} |
- |
- void beginCombinators(Token token) {} |
- |
- void endCombinators(int count) {} |
- |
- void beginCompilationUnit(Token token) {} |
- |
- void endCompilationUnit(int count, Token token) {} |
- |
- void beginConstructorReference(Token start) {} |
- |
- void endConstructorReference( |
- Token start, Token periodBeforeName, Token endToken) {} |
- |
- void beginDoWhileStatement(Token token) {} |
- |
- void endDoWhileStatement( |
- Token doKeyword, Token whileKeyword, Token endToken) {} |
- |
- void beginEnum(Token enumKeyword) {} |
- |
- void endEnum(Token enumKeyword, Token endBrace, int count) {} |
- |
- void beginExport(Token token) {} |
- |
- void endExport(Token exportKeyword, Token semicolon) {} |
- |
- void beginExpressionStatement(Token token) {} |
- |
- void endExpressionStatement(Token token) {} |
- |
- void beginFactoryMethod(Token token) {} |
- |
- void endFactoryMethod(Token beginToken, Token endToken) {} |
- |
- void beginFormalParameter(Token token) {} |
- |
- void endFormalParameter(Token thisKeyword) {} |
- |
- void handleNoFormalParameters(Token token) {} |
- |
- void beginFormalParameters(Token token) {} |
- |
- void endFormalParameters(int count, Token beginToken, Token endToken) {} |
- |
- void endFields(int count, Token beginToken, Token endToken) {} |
- |
- void beginForStatement(Token token) {} |
- |
- void endForStatement( |
- int updateExpressionCount, Token beginToken, Token endToken) {} |
- |
- void endForIn( |
- Token awaitToken, Token forToken, Token inKeyword, Token endToken) {} |
- |
- void beginFunction(Token token) {} |
- |
- void endFunction(Token getOrSet, Token endToken) {} |
- |
- void beginFunctionDeclaration(Token token) {} |
- |
- void endFunctionDeclaration(Token token) {} |
- |
- void beginFunctionBody(Token token) {} |
- |
- void endFunctionBody(int count, Token beginToken, Token endToken) {} |
- |
- void handleNoFunctionBody(Token token) {} |
- |
- void skippedFunctionBody(Token token) {} |
- |
- void beginFunctionName(Token token) {} |
- |
- void endFunctionName(Token token) {} |
- |
- void beginFunctionTypeAlias(Token token) {} |
- |
- void endFunctionTypeAlias(Token typedefKeyword, Token endToken) {} |
- |
- void beginMixinApplication(Token token) {} |
- |
- void endMixinApplication() {} |
- |
- void beginNamedMixinApplication(Token token) {} |
- |
- void endNamedMixinApplication( |
- Token classKeyword, Token implementsKeyword, Token endToken) {} |
- |
- void beginHide(Token hideKeyword) {} |
- |
- void endHide(Token hideKeyword) {} |
- |
- void beginIdentifierList(Token token) {} |
- |
- void endIdentifierList(int count) {} |
- |
- void beginTypeList(Token token) {} |
- |
- void endTypeList(int count) {} |
- |
- void beginIfStatement(Token token) {} |
- |
- void endIfStatement(Token ifToken, Token elseToken) {} |
- |
- void beginImport(Token importKeyword) {} |
- |
- void endImport(Token importKeyword, Token DeferredKeyword, Token asKeyword, |
- Token semicolon) {} |
- |
- void beginConditionalUris(Token token) {} |
- |
- void endConditionalUris(int count) {} |
- |
- void beginConditionalUri(Token ifKeyword) {} |
- |
- void endConditionalUri(Token ifKeyword, Token equalitySign) {} |
- |
- void beginDottedName(Token token) {} |
- |
- void endDottedName(int count, Token firstIdentifier) {} |
- |
- void beginInitializedIdentifier(Token token) {} |
- |
- void endInitializedIdentifier() {} |
- |
- void beginInitializer(Token token) {} |
- |
- void endInitializer(Token assignmentOperator) {} |
- |
- void beginInitializers(Token token) {} |
- |
- void endInitializers(int count, Token beginToken, Token endToken) {} |
- |
- void handleNoInitializers() {} |
- |
- void handleLabel(Token token) {} |
- |
- void beginLabeledStatement(Token token, int labelCount) {} |
- |
- void endLabeledStatement(int labelCount) {} |
- |
- void beginLibraryName(Token token) {} |
- |
- void endLibraryName(Token libraryKeyword, Token semicolon) {} |
- |
- void beginLiteralMapEntry(Token token) {} |
- |
- void endLiteralMapEntry(Token colon, Token endToken) {} |
- |
- void beginLiteralString(Token token) {} |
- |
- void endLiteralString(int interpolationCount) {} |
- |
- void handleStringJuxtaposition(int literalCount) {} |
- |
- void beginMember(Token token) {} |
- |
- void endMember() {} |
- |
- void endMethod(Token getOrSet, Token beginToken, Token endToken) {} |
- |
- void beginMetadataStar(Token token) {} |
- |
- void endMetadataStar(int count, bool forParameter) {} |
- |
- void beginMetadata(Token token) {} |
- |
- void endMetadata(Token beginToken, Token periodBeforeName, Token endToken) {} |
- |
- void beginOptionalFormalParameters(Token token) {} |
- |
- void endOptionalFormalParameters( |
- int count, Token beginToken, Token endToken) {} |
- |
- void beginPart(Token token) {} |
- |
- void endPart(Token partKeyword, Token semicolon) {} |
- |
- void beginPartOf(Token token) {} |
- |
- void endPartOf(Token partKeyword, Token semicolon) {} |
- |
- void beginRedirectingFactoryBody(Token token) {} |
- |
- void endRedirectingFactoryBody(Token beginToken, Token endToken) {} |
- |
- void beginReturnStatement(Token token) {} |
- |
- void endReturnStatement( |
- bool hasExpression, Token beginToken, Token endToken) {} |
- |
- void beginSend(Token token) {} |
- |
- void endSend(Token token) {} |
- |
- void beginShow(Token showKeyword) {} |
- |
- void endShow(Token showKeyword) {} |
- |
- void beginSwitchStatement(Token token) {} |
- |
- void endSwitchStatement(Token switchKeyword, Token endToken) {} |
- |
- void beginSwitchBlock(Token token) {} |
- |
- void endSwitchBlock(int caseCount, Token beginToken, Token endToken) {} |
- |
- void beginLiteralSymbol(Token token) {} |
- |
- void endLiteralSymbol(Token hashToken, int identifierCount) {} |
- |
- void beginThrowExpression(Token token) {} |
- |
- void endThrowExpression(Token throwToken, Token endToken) {} |
- |
- void beginRethrowStatement(Token token) {} |
- |
- void endRethrowStatement(Token throwToken, Token endToken) {} |
- |
- void endTopLevelDeclaration(Token token) {} |
- |
- void beginTopLevelMember(Token token) {} |
- |
- void endTopLevelFields(int count, Token beginToken, Token endToken) {} |
- |
- void endTopLevelMethod(Token beginToken, Token getOrSet, Token endToken) {} |
- |
- void beginTryStatement(Token token) {} |
- |
- void handleCaseMatch(Token caseKeyword, Token colon) {} |
- |
- void handleCatchBlock(Token onKeyword, Token catchKeyword) {} |
- |
- void handleFinallyBlock(Token finallyKeyword) {} |
- |
- void endTryStatement( |
- int catchCount, Token tryKeyword, Token finallyKeyword) {} |
- |
- void endType(Token beginToken, Token endToken) {} |
- |
- void beginTypeArguments(Token token) {} |
- |
- void endTypeArguments(int count, Token beginToken, Token endToken) {} |
- |
- void handleNoTypeArguments(Token token) {} |
- |
- void beginTypeVariable(Token token) {} |
- |
- void endTypeVariable(Token token, Token extendsOrSuper) {} |
- |
- void beginTypeVariables(Token token) {} |
- |
- void endTypeVariables(int count, Token beginToken, Token endToken) {} |
- |
- void beginUnnamedFunction(Token token) {} |
- |
- void endUnnamedFunction(Token token) {} |
- |
- void beginVariablesDeclaration(Token token) {} |
- |
- void endVariablesDeclaration(int count, Token endToken) {} |
- |
- void beginWhileStatement(Token token) {} |
- |
- void endWhileStatement(Token whileKeyword, Token endToken) {} |
- |
- void handleAsOperator(Token operator, Token endToken) {} |
- |
- void handleAssignmentExpression(Token token) {} |
- |
- void handleBinaryExpression(Token token) {} |
- |
- void handleConditionalExpression(Token question, Token colon) {} |
- |
- void handleConstExpression(Token token) {} |
- |
- void handleFunctionTypedFormalParameter(Token token) {} |
- |
- void handleIdentifier(Token token) {} |
- |
- void handleIndexedExpression( |
- Token openCurlyBracket, Token closeCurlyBracket) {} |
- |
- void handleIsOperator(Token operator, Token not, Token endToken) {} |
- |
- void handleLiteralBool(Token token) {} |
- |
- void handleBreakStatement( |
- bool hasTarget, Token breakKeyword, Token endToken) {} |
- |
- void handleContinueStatement( |
- bool hasTarget, Token continueKeyword, Token endToken) {} |
- |
- void handleEmptyStatement(Token token) {} |
- |
- void handleAssertStatement( |
- Token assertKeyword, Token commaToken, Token semicolonToken) {} |
- |
- /** Called with either the token containing a double literal, or |
- * an immediately preceding "unary plus" token. |
- */ |
- void handleLiteralDouble(Token token) {} |
- |
- /** Called with either the token containing an integer literal, |
- * or an immediately preceding "unary plus" token. |
- */ |
- void handleLiteralInt(Token token) {} |
- |
- void handleLiteralList( |
- int count, Token beginToken, Token constKeyword, Token endToken) {} |
- |
- void handleLiteralMap( |
- int count, Token beginToken, Token constKeyword, Token endToken) {} |
- |
- void handleLiteralNull(Token token) {} |
- |
- void handleModifier(Token token) {} |
- |
- void handleModifiers(int count) {} |
- |
- void handleNamedArgument(Token colon) {} |
- |
- void handleNewExpression(Token token) {} |
- |
- void handleNoArguments(Token token) {} |
- |
- void handleNoExpression(Token token) {} |
- |
- void handleNoType(Token token) {} |
- |
- void handleNoTypeVariables(Token token) {} |
- |
- void handleOperator(Token token) {} |
- |
- void handleOperatorName(Token operatorKeyword, Token token) {} |
- |
- void handleParenthesizedExpression(BeginGroupToken token) {} |
- |
- void handleQualified(Token period) {} |
- |
- void handleStringPart(Token token) {} |
- |
- void handleSuperExpression(Token token) {} |
- |
- void handleSwitchCase( |
- int labelCount, |
- int expressionCount, |
- Token defaultKeyword, |
- int statementCount, |
- Token firstToken, |
- Token endToken) {} |
- |
- void handleThisExpression(Token token) {} |
- |
- void handleUnaryPostfixAssignmentExpression(Token token) {} |
- |
- void handleUnaryPrefixExpression(Token token) {} |
- |
- void handleUnaryPrefixAssignmentExpression(Token token) {} |
- |
- void handleValuedFormalParameter(Token equals, Token token) {} |
- |
- void handleVoidKeyword(Token token) {} |
- |
- void beginYieldStatement(Token token) {} |
- |
- void endYieldStatement(Token yieldToken, Token starToken, Token endToken) {} |
- |
- Token expected(String string, Token token) { |
- if (token is ErrorToken) { |
- reportErrorToken(token); |
- } else { |
- error("expected '$string', but got '${token.value}'", token); |
- } |
- return skipToEof(token); |
- } |
- |
- Token synthesizeIdentifier(Token token) { |
- Token synthesizedToken = new StringToken.fromString( |
- Precedence.IDENTIFIER_INFO, '?', token.charOffset); |
- synthesizedToken.next = token.next; |
- return synthesizedToken; |
- } |
- |
- Token expectedIdentifier(Token token) { |
- if (token is ErrorToken) { |
- reportErrorToken(token); |
- } else { |
- error("expected identifier, but got '${token.value}'", token); |
- } |
- return skipToEof(token); |
- } |
- |
- Token expectedType(Token token) { |
- if (token is ErrorToken) { |
- reportErrorToken(token); |
- } else { |
- error("expected a type, but got '${token.value}'", token); |
- } |
- return skipToEof(token); |
- } |
- |
- Token expectedExpression(Token token) { |
- if (token is ErrorToken) { |
- reportErrorToken(token); |
- } else { |
- error("expected an expression, but got '${token.value}'", token); |
- } |
- return skipToEof(token); |
- } |
- |
- Token unexpected(Token token) { |
- if (token is ErrorToken) { |
- reportErrorToken(token); |
- } else { |
- error("unexpected token '${token.value}'", token); |
- } |
- return skipToEof(token); |
- } |
- |
- Token expectedBlockToSkip(Token token) { |
- if (token is ErrorToken) { |
- reportErrorToken(token); |
- } else { |
- error("expected a block, but got '${token.value}'", token); |
- } |
- return skipToEof(token); |
- } |
- |
- Token expectedFunctionBody(Token token) { |
- if (token is ErrorToken) { |
- reportErrorToken(token); |
- } else { |
- error("expected a function body, but got '${token.value}'", token); |
- } |
- return skipToEof(token); |
- } |
- |
- Token expectedClassBody(Token token) { |
- if (token is ErrorToken) { |
- reportErrorToken(token); |
- } else { |
- error("expected a class body, but got '${token.value}'", token); |
- } |
- return skipToEof(token); |
- } |
- |
- Token expectedClassBodyToSkip(Token token) { |
- if (token is ErrorToken) { |
- reportErrorToken(token); |
- } else { |
- error("expected a class body, but got '${token.value}'", token); |
- } |
- return skipToEof(token); |
- } |
- |
- Token expectedDeclaration(Token token) { |
- if (token is ErrorToken) { |
- reportErrorToken(token); |
- } else { |
- error("expected a declaration, but got '${token.value}'", token); |
- } |
- return skipToEof(token); |
- } |
- |
- Token unmatched(Token token) { |
- if (token is ErrorToken) { |
- reportErrorToken(token); |
- } else { |
- error("unmatched '${token.value}'", token); |
- } |
- return skipToEof(token); |
- } |
- |
- skipToEof(Token token) { |
- while (!identical(token.info, Precedence.EOF_INFO)) { |
- token = token.next; |
- } |
- return token; |
- } |
- |
- void recoverableError(Token token, String message) { |
- error(message, token); |
- } |
- |
- void error(String message, Token token) { |
- throw new ParserError("$message @ ${token.charOffset}"); |
- } |
- |
- void reportError(Spannable spannable, MessageKind messageKind, |
- [Map arguments = const {}]) { |
- if (spannable is ErrorToken) { |
- reportErrorToken(spannable); |
- } else { |
- reportErrorHelper(spannable, messageKind, arguments); |
- } |
- } |
- |
- void reportErrorHelper(Spannable spannable, MessageKind messageKind, |
- [Map arguments = const {}]) { |
- MessageTemplate template = MessageTemplate.TEMPLATES[messageKind]; |
- String message = template.message(arguments, true).toString(); |
- Token token; |
- if (spannable is Token) { |
- token = spannable; |
- } else if (spannable is Node) { |
- token = spannable.getBeginToken(); |
- } else { |
- throw new ParserError(message); |
- } |
- recoverableError(token, message); |
- } |
- |
- void reportErrorToken(ErrorToken token) { |
- if (token is BadInputToken) { |
- String hex = token.character.toRadixString(16); |
- if (hex.length < 4) { |
- String padding = "0000".substring(hex.length); |
- hex = "$padding$hex"; |
- } |
- reportErrorHelper( |
- token, MessageKind.BAD_INPUT_CHARACTER, {'characterHex': hex}); |
- } else if (token is UnterminatedToken) { |
- MessageKind kind; |
- var arguments = const {}; |
- switch (token.start) { |
- case '1e': |
- kind = MessageKind.EXPONENT_MISSING; |
- break; |
- case '"': |
- case "'": |
- case '"""': |
- case "'''": |
- case 'r"': |
- case "r'": |
- case 'r"""': |
- case "r'''": |
- kind = MessageKind.UNTERMINATED_STRING; |
- arguments = {'quote': token.start}; |
- break; |
- case '0x': |
- kind = MessageKind.HEX_DIGIT_EXPECTED; |
- break; |
- case r'$': |
- kind = MessageKind.MALFORMED_STRING_LITERAL; |
- break; |
- case '/*': |
- kind = MessageKind.UNTERMINATED_COMMENT; |
- break; |
- default: |
- kind = MessageKind.UNTERMINATED_TOKEN; |
- break; |
- } |
- reportErrorHelper(token, kind, arguments); |
- } else if (token is UnmatchedToken) { |
- String begin = token.begin.value; |
- String end = closeBraceFor(begin); |
- reportErrorHelper( |
- token, MessageKind.UNMATCHED_TOKEN, {'begin': begin, 'end': end}); |
- } else { |
- throw new SpannableAssertionFailure(token, token.assertionMessage); |
- } |
- } |
-} |
- |
-String closeBraceFor(String openBrace) { |
- return const { |
- '(': ')', |
- '[': ']', |
- '{': '}', |
- '<': '>', |
- r'${': '}', |
- }[openBrace]; |
-} |
- |
-class ParserError { |
- final String reason; |
- ParserError(this.reason); |
- toString() => reason; |
-} |