aboutsummaryrefslogtreecommitdiff
path: root/runtime/ObjC/ANTLR.framework/Headers/ANTLRIntStream.h
diff options
context:
space:
mode:
authorHaibo Huang <hhb@google.com>2018-08-28 14:53:55 -0700
committerandroid-build-merger <android-build-merger@google.com>2018-08-28 14:53:55 -0700
commit1a86e8ee41328e77cecf1b887d5eb616dbf77d0a (patch)
tree8cacab926d75eb6906a1c6c4c18489648e264709 /runtime/ObjC/ANTLR.framework/Headers/ANTLRIntStream.h
parent47bcf635f6793781ce4e6d080a4e804546e63597 (diff)
parentb3f47eb6ae3fd805a1ce98c5b5125cb8c443af05 (diff)
downloadantlr-1a86e8ee41328e77cecf1b887d5eb616dbf77d0a.tar.gz
Merge "Move files in antlr to match upstream directory structure" am: bbed35ef4b am: 32d1488b05
am: b3f47eb6ae Change-Id: I81ad1bf0e91c98ee403434178cb0b9194904d8b5
Diffstat (limited to 'runtime/ObjC/ANTLR.framework/Headers/ANTLRIntStream.h')
-rwxr-xr-xruntime/ObjC/ANTLR.framework/Headers/ANTLRIntStream.h93
1 files changed, 93 insertions, 0 deletions
diff --git a/runtime/ObjC/ANTLR.framework/Headers/ANTLRIntStream.h b/runtime/ObjC/ANTLR.framework/Headers/ANTLRIntStream.h
new file mode 100755
index 0000000..3790cd9
--- /dev/null
+++ b/runtime/ObjC/ANTLR.framework/Headers/ANTLRIntStream.h
@@ -0,0 +1,93 @@
+// [The "BSD licence"]
+// Copyright (c) 2006-2007 Kay Roepke 2010 Alan Condit
+// 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.
+
+@protocol ANTLRIntStream < NSObject, NSCopying >
+
+- (void) consume;
+
+// Get unichar at current input pointer + i ahead where i=1 is next character as int for including ANTLRCharStreamEOF (-1) in the data range
+- (NSInteger) LA:(NSInteger) i;
+
+// Tell the stream to start buffering if it hasn't already. Return
+// current input position, index(), or some other marker so that
+// when passed to rewind() you get back to the same spot.
+// rewind(mark()) should not affect the input cursor.
+// TODO: problem in that lexer stream returns not index but some marker
+
+- (NSInteger) mark;
+
+// Return the current input symbol index 0..n where n indicates the
+// last symbol has been read.
+
+- (NSInteger) getIndex;
+
+// Reset the stream so that next call to index would return marker.
+// The marker will usually be -index but it doesn't have to be. It's
+// just a marker to indicate what state the stream was in. This is
+// essentially calling -release: and -seek:. If there are markers
+// created after this marker argument, this routine must unroll them
+// like a stack. Assume the state the stream was in when this marker
+// was created.
+
+- (void) rewind;
+- (void) rewind:(NSInteger) marker;
+
+// You may want to commit to a backtrack but don't want to force the
+// stream to keep bookkeeping objects around for a marker that is
+// no longer necessary. This will have the same behavior as
+// rewind() except it releases resources without the backward seek.
+
+- (void) release:(NSInteger) marker;
+
+// Set the input cursor to the position indicated by index. This is
+// normally used to seek ahead in the input stream. No buffering is
+// required to do this unless you know your stream will use seek to
+// move backwards such as when backtracking.
+// This is different from rewind in its multi-directional
+// requirement and in that its argument is strictly an input cursor (index).
+//
+// For char streams, seeking forward must update the stream state such
+// as line number. For seeking backwards, you will be presumably
+// backtracking using the mark/rewind mechanism that restores state and
+// so this method does not need to update state when seeking backwards.
+//
+// Currently, this method is only used for efficient backtracking, but
+// in the future it may be used for incremental parsing.
+
+- (void) seek:(NSInteger) index;
+
+/** Only makes sense for streams that buffer everything up probably, but
+ * might be useful to display the entire stream or for testing. This
+ * value includes a single EOF.
+ */
+- (NSUInteger) size;
+/** Where are you getting symbols from? Normally, implementations will
+ * pass the buck all the way to the lexer who can ask its input stream
+ * for the file name or whatever.
+ */
+- (NSString *)getSourceName;
+
+@end