Struct syntex_syntax::parse::lexer::StringReader
[−]
[src]
pub struct StringReader<'a> { pub span_diagnostic: &'a SpanHandler, pub pos: BytePos, pub last_pos: BytePos, pub col: CharPos, pub curr: Option<char>, pub filemap: Rc<FileMap>, pub peek_tok: Token, pub peek_span: Span, // some fields omitted }
Fields
span_diagnostic | |
pos | The absolute offset within the codemap of the next character to read |
last_pos | The absolute offset within the codemap of the last character read(curr) |
col | The column of the next character to read |
curr | The last character to be read |
filemap | |
peek_tok | |
peek_span |
Methods
impl<'a> StringReader<'a>
fn new_raw<'b>(span_diagnostic: &'b SpanHandler, filemap: Rc<FileMap>) -> StringReader<'b>
For comments.rs, which hackily pokes into pos and curr
fn new<'b>(span_diagnostic: &'b SpanHandler, filemap: Rc<FileMap>) -> StringReader<'b>
fn curr_is(&self, c: char) -> bool
fn fatal_span(&self, sp: Span, m: &str) -> FatalError
Report a fatal lexical error with a given span.
fn err_span(&self, sp: Span, m: &str)
Report a lexical error with a given span.
fn help_span(&self, sp: Span, m: &str)
Suggest some help with a given span.
fn with_str_from<T, F>(&self, start: BytePos, f: F) -> T where F: FnOnce(&str) -> T
Calls f
with a string slice of the source text spanning from start
up to but excluding self.last_pos
, meaning the slice does not include
the character self.curr
.
fn name_from(&self, start: BytePos) -> Name
Create a Name from a given offset to the current offset, each adjusted 1 towards each other (assumes that on either side there is a single-byte delimiter).
fn name_from_to(&self, start: BytePos, end: BytePos) -> Name
As name_from, with an explicit endpoint.
fn bump(&mut self)
Advance the StringReader by one character. If a newline is discovered, add it to the FileMap's list of line start offsets.