Enhanced C#
Language of your choice: library documentation
|
Handles EC# processor directives. More...
Handles EC# processor directives.
This class not only preprocesses C# source code, it saves preprocessor directives and comments so that any code excluded by the preprocessor can be added back in later, if and when the parsed code is printed out. For example, given input like this:
EcsPreprocessor removes the #if...#endif region of tokens, creates a single Token of type TokenType.PPFalseBlock to represent that region, and saves it, after the "see below" comment token, in a list.
C# has the following preprocessor directives:
Public fields | |
HashSet< Symbol > | DefinedSymbols = new HashSet<Symbol>() |
Properties | |
bool | SaveComments [get, set] |
Controls whether comments and newlines are saved into TriviaList. More... | |
DList< Token > | TriviaList [get] |
A list of saved trivia: comments, newlines, preprocessor directives and ignored regions. More... | |
Properties inherited from Loyc.Syntax.Lexing.LexerWrapper< Token > | |
ILexer< Token > | Lexer [get, set] |
ISourceFile | SourceFile [get] |
virtual IMessageSink | ErrorSink [get, set] |
int | IndentLevel [get] |
UString | IndentString [get] |
int | LineNumber [get] |
int | InputPosition [get] |
string | FileName [get] |
Properties inherited from Loyc.Syntax.Lexing.ILexer< Token > | |
ISourceFile | SourceFile [get] |
The file being lexed. More... | |
IMessageSink | ErrorSink [get, set] |
Event handler for errors. More... | |
int | IndentLevel [get] |
Indentation level of the current line. This is updated after scanning the first whitespaces on a new line, and may be reset to zero when NextToken() returns a newline. More... | |
UString | IndentString [get] |
Gets a string slice that holds the spaces or tabs that were used to indent the current line. More... | |
int | LineNumber [get] |
Current line number (1 for the first line). More... | |
int | InputPosition [get] |
Current input position (an index into SourceFile.Text). More... | |
Properties inherited from Loyc.Syntax.IHasFileName | |
string | FileName [get] |
Public Member Functions | |
EcsPreprocessor (ILexer< Token > source, bool saveComments) | |
override Maybe< Token > | NextToken () |
Returns the next (postprocessed) token. This method should set the _current field to the returned value. More... | |
Public Member Functions inherited from Loyc.Syntax.Lexing.LexerWrapper< Token > | |
LexerWrapper (ILexer< Token > sourceLexer) | |
ILineColumnFile | IndexToLine (int index) |
Returns the position in a source file of the specified index. More... | |
virtual void | Reset () |
Additional Inherited Members | |
Protected Member Functions inherited from Loyc.Syntax.Lexing.LexerWrapper< Token > | |
void | WriteError (int index, string msg, params object[] args) |
Protected fields inherited from Loyc.Syntax.Lexing.LexerWrapper< Token > | |
Maybe< Token > | _current |
Returns the next (postprocessed) token. This method should set the _current
field to the returned value.
Implements Loyc.Syntax.Lexing.LexerWrapper< Token >.
References Loyc.Collections.DList< T >.Add(), Loyc.Ecs.Parser.EcsPreprocessor.SaveComments, and Loyc.IMessageSink< in in TContext >.Write().
|
getset |
Controls whether comments and newlines are saved into TriviaList.
Referenced by Loyc.Ecs.Parser.EcsPreprocessor.NextToken().