diff options
author | Haibo Huang <hhb@google.com> | 2018-08-28 14:53:55 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-08-28 14:53:55 -0700 |
commit | 1a86e8ee41328e77cecf1b887d5eb616dbf77d0a (patch) | |
tree | 8cacab926d75eb6906a1c6c4c18489648e264709 /runtime/ObjC/ANTLR.framework/Headers/ANTLRIntStream.h | |
parent | 47bcf635f6793781ce4e6d080a4e804546e63597 (diff) | |
parent | b3f47eb6ae3fd805a1ce98c5b5125cb8c443af05 (diff) | |
download | antlr-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-x | runtime/ObjC/ANTLR.framework/Headers/ANTLRIntStream.h | 93 |
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 |