| Index: dart/compiler/java/com/google/dart/compiler/parser/DartScannerParserContext.java
|
| diff --git a/dart/compiler/java/com/google/dart/compiler/parser/DartScannerParserContext.java b/dart/compiler/java/com/google/dart/compiler/parser/DartScannerParserContext.java
|
| deleted file mode 100644
|
| index e40bb4c2d089bca7315e12f5195be2b6548c87dc..0000000000000000000000000000000000000000
|
| --- a/dart/compiler/java/com/google/dart/compiler/parser/DartScannerParserContext.java
|
| +++ /dev/null
|
| @@ -1,201 +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.
|
| -
|
| -package com.google.dart.compiler.parser;
|
| -
|
| -import com.google.dart.compiler.DartCompilationError;
|
| -import com.google.dart.compiler.DartCompilerListener;
|
| -import com.google.dart.compiler.DartSource;
|
| -import com.google.dart.compiler.Source;
|
| -import com.google.dart.compiler.ast.DartUnit;
|
| -import com.google.dart.compiler.common.HasSourceInfo;
|
| -import com.google.dart.compiler.common.HasSourceInfoSetter;
|
| -import com.google.dart.compiler.common.SourceInfo;
|
| -import com.google.dart.compiler.metrics.CompilerMetrics;
|
| -import com.google.dart.compiler.parser.DartScanner.Location;
|
| -import com.google.dart.compiler.parser.DartScanner.State;
|
| -
|
| -import java.util.ArrayDeque;
|
| -import java.util.Deque;
|
| -import java.util.Stack;
|
| -
|
| -/**
|
| - * A ParserContext backed by a DartScanner.
|
| - */
|
| -class DartScannerParserContext implements ParserContext {
|
| - private DartScanner scanner;
|
| - private Deque<DartScanner.State> stateStack = new ArrayDeque<DartScanner.State>();
|
| - private Deque<Integer> positionStack = new ArrayDeque<Integer>();
|
| - private Source source;
|
| - private DartCompilerListener listener;
|
| - private final CompilerMetrics compilerMetrics;
|
| -
|
| - public DartScannerParserContext(Source source, String sourceCode,
|
| - DartCompilerListener listener) {
|
| - this(source, sourceCode, listener, null);
|
| - }
|
| -
|
| - public DartScannerParserContext(Source source, String sourceCode,
|
| - DartCompilerListener listener, CompilerMetrics compilerMetrics) {
|
| - this.source = source;
|
| - this.scanner = createScanner(sourceCode, source, listener);
|
| - this.listener = listener;
|
| - this.compilerMetrics = compilerMetrics;
|
| - }
|
| -
|
| - @Override
|
| - public void begin() {
|
| - stateStack.push(scanner.getState());
|
| - positionStack.push(getBeginLocation(0));
|
| - }
|
| -
|
| - private int getBeginLocation(int n) {
|
| - DartScanner.Location tokenLocation = scanner.peekTokenLocation(n);
|
| - return tokenLocation != null ? tokenLocation.getBegin() : 0;
|
| - }
|
| -
|
| - private int getEndLocation() {
|
| - DartScanner.Location tokenLocation = scanner.getTokenLocation();
|
| - return tokenLocation != null ? tokenLocation.getEnd() : 0;
|
| - }
|
| -
|
| - @Override
|
| - public <T> T done(T result) {
|
| - DartScanner.State oldState = stateStack.pop();
|
| - DartScanner.State newState = stateStack.peek();
|
| -
|
| - // If there is more state left, push the newer token changes to them.
|
| - if (newState != null) {
|
| - if (oldState.rollbackTokens != null) {
|
| - if (newState.rollbackTokens != null) {
|
| - oldState.rollbackTokens.addAll(newState.rollbackTokens);
|
| - }
|
| - newState.rollbackTokens = oldState.rollbackTokens;
|
| - }
|
| - }
|
| -
|
| - setSourcePosition(result, positionStack.pop());
|
| -
|
| - if (result instanceof DartUnit) {
|
| - if (compilerMetrics != null) {
|
| - compilerMetrics.unitParsed(scanner.getCharCount(), scanner.getNonCommentCharCount(),
|
| - 0, 0);
|
| - }
|
| - }
|
| -
|
| - // want next begin() call to seek to the next token and skip whitespace after previous done()
|
| - return result;
|
| - }
|
| -
|
| - /**
|
| - * Set the source position on a result, if it is a {@link HasSourceInfo}.
|
| - *
|
| - * @param <T> result type
|
| - * @param result
|
| - * @param startPos
|
| - */
|
| - private <T> void setSourcePosition(T result, int startPos) {
|
| - if (result instanceof HasSourceInfoSetter) {
|
| - HasSourceInfoSetter hasSourceInfoSetter = (HasSourceInfoSetter) result;
|
| - int start = startPos;
|
| - int end = getEndLocation();
|
| - if (start != -1 && end < start) {
|
| - // handle 0-length tokens, including where there is trailing whitespace
|
| - end = start;
|
| - }
|
| - hasSourceInfoSetter.setSourceInfo(new SourceInfo(source, start, end - start));
|
| - }
|
| - }
|
| -
|
| - @Override
|
| - public <T> T doneWithoutConsuming(T result) {
|
| - // do not throw away state
|
| - setSourcePosition(result, positionStack.peek());
|
| -
|
| - // want next begin() call to seek to the next token and skip whitespace after previous done()
|
| - return result;
|
| - }
|
| -
|
| - @Override
|
| - public void error(DartCompilationError dartError) {
|
| - listener.onError(dartError);
|
| - }
|
| -
|
| - @Override
|
| - public void unitAboutToCompile(DartSource source, boolean diet) {
|
| - listener.unitAboutToCompile(source, diet);
|
| - }
|
| -
|
| - @Override
|
| - public void advance() {
|
| - scanner.next();
|
| - }
|
| -
|
| - @Override
|
| - public Token getCurrentToken() {
|
| - return scanner.getToken();
|
| - }
|
| -
|
| - @Override
|
| - public Token peek(int steps) {
|
| - return scanner.peek(steps);
|
| - }
|
| -
|
| - @Override
|
| - public void rollback() {
|
| - // undo changes made to scanner tokens
|
| - DartScanner.State oldState = stateStack.pop();
|
| - scanner.restoreState(oldState);
|
| -
|
| - // Restore the replaced tokens to their state.
|
| - if (oldState.rollbackTokens != null) {
|
| - while (!oldState.rollbackTokens.isEmpty()) {
|
| - State.RollbackToken token = oldState.rollbackTokens.pop();
|
| - scanner.setAbsolutePeek(token.absoluteOffset, token.replacedToken);
|
| - }
|
| - }
|
| - positionStack.pop();
|
| - }
|
| -
|
| - @Override
|
| - public String getTokenString() {
|
| - return scanner.getTokenValue();
|
| - }
|
| -
|
| - @Override
|
| - public Location peekTokenLocation(int n) {
|
| - return scanner.peekTokenLocation(n);
|
| - }
|
| -
|
| - @Override
|
| - public String peekTokenString(int steps) {
|
| - return scanner.peekTokenValue(steps);
|
| - }
|
| -
|
| - @Override
|
| - public void replaceNextToken(Token token) {
|
| - DartScanner.State state = stateStack.peek();
|
| - DartScanner.State.RollbackToken oldToken
|
| - = new DartScanner.State.RollbackToken(scanner.getOffset() + 1, scanner.peek(0));
|
| - if (state.rollbackTokens == null) {
|
| - state.rollbackTokens = new Stack<State.RollbackToken>();
|
| - }
|
| - state.rollbackTokens.push(oldToken);
|
| - scanner.setPeek(0, token);
|
| - }
|
| -
|
| - @Override
|
| - public DartScanner.Location getTokenLocation() {
|
| - return scanner.getTokenLocation();
|
| - }
|
| -
|
| - protected DartScanner createScanner(String sourceCode, Source source, DartCompilerListener listener) {
|
| - return new DartScanner(sourceCode, 0, source, listener);
|
| - }
|
| -
|
| - @Override
|
| - public Source getSource() {
|
| - return source;
|
| - }
|
| -}
|
|
|