Detailed Description

Provides a wrapper for reading characters from a string of code. It strips comments and other junk internally such as tabs and spaces.

Inheritance diagram for Nitro.CodeLexer:
Wrench.StringReader

Public Member Functions

 CodeLexer (string code)
 Creates a new code lexer with the given code text. More...
 
override char Read ()
 Reads a character from the string. More...
 
bool PeekJunk ()
 Finds if the current location is followed by junk. Note that the junk has already been read off. More...
 
bool ReadJunk ()
 Skips junk in the text such as tabs or comments. More...
 
- Public Member Functions inherited from Wrench.StringReader
 StringReader (byte[] str)
 Creates a new reader for the raw single-byte encoded string. Useful if you're talking to e.g. a webserver with a binary protocol. More...
 
 StringReader (string str)
 Creates a new reader for the given string. More...
 
bool More ()
 Checks if there is anything left to read. More...
 
char Peek ()
 Takes a peek at the next character in the stream without reading it. More...
 
char Peek (int delta)
 Takes a peek at the character that is a number of characters away from the next one without actually reading it. Peek(0) is the next character, Peek(1) is the one after that etc. More...
 
void StepBack ()
 Steps back one place in the stream. More...
 
void Advance ()
 Steps forward one place in the stream. More...
 
void Advance (int places)
 Steps forward the given number of places in the stream. More...
 
int Length ()
 The length of the string. More...
 
void ReadUntil (char character)
 Keeps reading the given character from the stream until it's no longer next. Used for e.g. stripping an unknown length block of whitespaces in the stream. More...
 
void ReadOff (char[] chars)
 Keeps reading from the stream until no characters in the given set are next. Used for e.g. stripping an unknown number of newlines (
or ) from this stream. More...
 
void ReadOff (char[] chars, out int count)
 Keeps reading from the stream until no characters in the given set are next. Used for e.g. stripping an unknown number of newlines (
or ) from this stream. More...
 
int GetLineNumber ()
 Gets the line number that the pointer is currently at. More...
 
int GetLineNumber (out int charOnLine)
 Gets the line number and character number that the pointer is currently at. More...
 
string ReadLine (int lineNumber)
 Reads the numbered line from this stream. More...
 

Public Attributes

bool Literal
 Set this true if no junk should be stripped out. More...
 
int LineNumber =1
 The current line the lexer is on. More...
 
bool DidReadJunk
 True if the lexer just read some junk. More...
 
- Public Attributes inherited from Wrench.StringReader
string Input
 The original string. More...
 
int Position
 The current position this reader is at in the string. More...
 
int InputLength
 The length of the input string. More...
 

Private Member Functions

void LineCheck (char c)
 Increases the line count if the given character is a newline. More...
 

Additional Inherited Members

- Static Public Attributes inherited from Wrench.StringReader
static char NULL ='\0'
 The null character. This is returned when operations are working beyond the end of the stream. More...
 

Constructor & Destructor Documentation

Nitro.CodeLexer.CodeLexer ( string  code)
inline

Creates a new code lexer with the given code text.

Parameters
codeThe code to parse.

Member Function Documentation

void Nitro.CodeLexer.LineCheck ( char  c)
inlineprivate

Increases the line count if the given character is a newline.

bool Nitro.CodeLexer.PeekJunk ( )
inline

Finds if the current location is followed by junk. Note that the junk has already been read off.

Returns
True if it is, false otherwise.
override char Nitro.CodeLexer.Read ( )
inlinevirtual

Reads a character from the string.

Returns
The character read.

Reimplemented from Wrench.StringReader.

bool Nitro.CodeLexer.ReadJunk ( )
inline

Skips junk in the text such as tabs or comments.

Returns
True if junk was read off.

Member Data Documentation

bool Nitro.CodeLexer.DidReadJunk

True if the lexer just read some junk.

int Nitro.CodeLexer.LineNumber =1

The current line the lexer is on.

bool Nitro.CodeLexer.Literal

Set this true if no junk should be stripped out.