From 2c98cae7518cb4e7b50cbdb54fda56998717f00e Mon Sep 17 00:00:00 2001 From: parrt Date: Sun, 20 Nov 2011 15:03:15 -0800 Subject: [PATCH] no more line/col in string stream [git-p4: depot-paths = "//depot/code/antlr4/main/": change = 9417] --- .../antlr/v4/runtime/ANTLRStringStream.java | 86 +------------------ .../org/antlr/v4/runtime/CharStreamState.java | 46 ---------- 2 files changed, 2 insertions(+), 130 deletions(-) delete mode 100644 runtime/Java/src/org/antlr/v4/runtime/CharStreamState.java diff --git a/runtime/Java/src/org/antlr/v4/runtime/ANTLRStringStream.java b/runtime/Java/src/org/antlr/v4/runtime/ANTLRStringStream.java index 7efb3a726..f042cc0b8 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/ANTLRStringStream.java +++ b/runtime/Java/src/org/antlr/v4/runtime/ANTLRStringStream.java @@ -28,8 +28,6 @@ */ package org.antlr.v4.runtime; -import java.util.*; - /** A pretty quick CharStream that pulls all data from an array * directly. Every method call counts in the lexer. Java's * strings aren't very good so I'm avoiding. @@ -44,25 +42,6 @@ public class ANTLRStringStream implements CharStream { /** 0..n-1 index into string of next char */ protected int p=0; - /** line number 1..n within the input */ - protected int line = 1; - - /** The index of the character relative to the beginning of the line 0..n-1 */ - protected int charPositionInLine = 0; - - /** tracks how deep mark() calls are nested */ - protected int markDepth = 0; - - /** A list of CharStreamState objects that tracks the stream state - * values line, charPositionInLine, and p that can change as you - * move through the input stream. Indexed from 1..markDepth. - * A null is kept @ index 0. Create upon first call to mark(). - */ - protected List markers; - - /** Track the last mark() call result value for use in rewind(). */ - protected int lastMarker; - /** What is name or source of this char stream? */ public String name; @@ -89,24 +68,12 @@ public class ANTLRStringStream implements CharStream { */ public void reset() { p = 0; - line = 1; - charPositionInLine = 0; - markDepth = 0; } @Override public void consume() { //System.out.println("prev p="+p+", c="+(char)data[p]); if ( p < n ) { - charPositionInLine++; - if ( data[p]=='\n' ) { - /* - System.out.println("newline char found on line: "+line+ - "@ pos="+charPositionInLine); - */ - line++; - charPositionInLine=0; - } p++; //System.out.println("p moves to "+p+" (c='"+(char)data[p]+"')"); } @@ -151,47 +118,14 @@ public class ANTLRStringStream implements CharStream { return n; } + /** mark/release do nothing; we have entire buffer */ @Override public int mark() { - if ( markers==null ) { - markers = new ArrayList(); - markers.add(null); // depth 0 - } - markDepth++; - CharStreamState state; - if ( markDepth>=markers.size() ) { - state = new CharStreamState(); - markers.add(state); - } - else { - state = markers.get(markDepth); - } - state.p = p; - state.line = line; - state.charPositionInLine = charPositionInLine; - lastMarker = markDepth; - return markDepth; + return p; } - public void rewind(int m) { - CharStreamState state = markers.get(m); - // restore stream state - seek(state.p); - line = state.line; - charPositionInLine = state.charPositionInLine; - release(m); - } - - public void rewind() { - rewind(lastMarker); - } - @Override public void release(int marker) { - // unwind any other markers made after m and release m - markDepth = marker; - // release this marker - markDepth--; } /** consume() ahead until p==index; can't just set p=index as we must @@ -220,22 +154,6 @@ public class ANTLRStringStream implements CharStream { return new String(data, start, count); } - public int getLine() { - return line; - } - - public int getCharPositionInLine() { - return charPositionInLine; - } - - public void setLine(int line) { - this.line = line; - } - - public void setCharPositionInLine(int pos) { - this.charPositionInLine = pos; - } - @Override public String getSourceName() { return name; diff --git a/runtime/Java/src/org/antlr/v4/runtime/CharStreamState.java b/runtime/Java/src/org/antlr/v4/runtime/CharStreamState.java deleted file mode 100644 index 6632abfd0..000000000 --- a/runtime/Java/src/org/antlr/v4/runtime/CharStreamState.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - [The "BSD license"] - Copyright (c) 2011 Terence Parr - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. - IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, - INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF - THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ -package org.antlr.v4.runtime; - -/** When walking ahead with cyclic DFA or for syntactic predicates, - * we need to record the state of the input stream (char index, - * line, etc...) so that we can rewind the state after scanning ahead. - * - * This is the complete state of a stream. - */ -public class CharStreamState { - /** Index into the char stream of next lookahead char */ - public int p; - - /** What line number is the scanner at before processing buffer[p]? */ - public int line; - - /** What char position 0..n-1 in line is scanner before processing buffer[p]? */ - public int charPositionInLine; -}