Module: ANTLR3::CharacterStream
Overview
CharacterStream further extends the abstract-ish base mixin Stream to add methods specific to navigating character-based input data. Thus, it serves as an immitation of the Java interface for text-based streams, which are primarily used by lexers.
It adds the “abstract” method, substring(start, stop)
, which must be implemented to return a slice of the input string from position start
to position stop
. It also adds attribute accessor methods line
and column
, which are expected to indicate the current line number and position within the current line, respectively.
A Word About line
and column
attributes
Presumably, the concept of line
and column
attirbutes of text are familliar to most developers. Line numbers of text are indexed from number 1 up (not 0). Column numbers are indexed from 0 up. Thus, examining sample text:
Hey this is the first line.
Oh, and this is the second line.
Line 1 is the string “Hey this is the first line\n”. If a character stream is at line 2, character 0, the stream cursor is sitting between the characters “\n” and “O”.
Note: most ANTLR runtime APIs for other languages refer to column
with the more-precise, but lengthy name charPositionInLine
. I prefered to keep it simple and familliar in this Ruby runtime API.
Constant Summary
Constants included from Constants
ANTLR3::Constants::BUILT_IN_TOKEN_NAMES, ANTLR3::Constants::DEFAULT, ANTLR3::Constants::DOWN, ANTLR3::Constants::EOF, ANTLR3::Constants::EOF_TOKEN, ANTLR3::Constants::EOR_TOKEN_TYPE, ANTLR3::Constants::HIDDEN, ANTLR3::Constants::INVALID, ANTLR3::Constants::INVALID_NODE, ANTLR3::Constants::INVALID_TOKEN, ANTLR3::Constants::MEMO_RULE_FAILED, ANTLR3::Constants::MEMO_RULE_UNKNOWN, ANTLR3::Constants::MIN_TOKEN_TYPE, ANTLR3::Constants::SKIP_TOKEN, ANTLR3::Constants::UP
Instance Attribute Summary collapse
-
#column ⇒ Object
Returns the value of attribute column.
-
#line ⇒ Object
Returns the value of attribute line.
Attributes included from Stream
Instance Method Summary collapse
-
#substring ⇒ Object
:method: substring(start,stop).
Methods included from Stream
#consume, #index, #look, #mark, #peek, #release, #rewind, #seek
Instance Attribute Details
#column ⇒ Object
Returns the value of attribute column.
266 267 268 |
# File 'lib/antlr3/streams.rb', line 266 def column @column end |
#line ⇒ Object
Returns the value of attribute line.
265 266 267 |
# File 'lib/antlr3/streams.rb', line 265 def line @line end |
Instance Method Details
#substring ⇒ Object
:method: substring(start,stop)
263 |
# File 'lib/antlr3/streams.rb', line 263 abstract :substring |