Enhanced C#
Language of your choice: library documentation
|
The Value property provides easy access to the lexer, parser and printer for Enhanced C#. More...
The Value property provides easy access to the lexer, parser and printer for Enhanced C#.
EC# overview: https://ecsharp.net
Public static fields | |
static readonly EcsLanguageService | Value = new EcsLanguageService(false) |
static readonly EcsLanguageService | WithPlainCSharpPrinter = new EcsLanguageService(true) |
Properties | |
IEnumerable< string > | FileExtensions [get] |
bool | HasTokenizer [get] |
bool | CanPreserveComments [get] |
Properties inherited from Loyc.Syntax.IParsingService | |
IEnumerable< string > | FileExtensions [get] |
Standard file extensions for this language, without leading dots, with the first one being the most common. More... | |
bool | HasTokenizer [get] |
Returns true if the Tokenize method is available. More... | |
bool | CanPreserveComments [get] |
Returns true if the parser supports preserving comments. More... | |
Public Member Functions | |
override string | ToString () |
void | Print (LNode node, StringBuilder target, IMessageSink sink=null, ParsingMode mode=null, ILNodePrinterOptions options=null) |
Serializes the specified syntax tree to a StringBuilder in the syntax supported by this object. More... | |
void | Print (IEnumerable< LNode > nodes, StringBuilder target, IMessageSink sink=null, ParsingMode mode=null, ILNodePrinterOptions options=null) |
Serializes a list of syntax trees to a StringBuilder in the syntax supported by this object. More... | |
ILexer< Token > | Tokenize (ICharSource text, string fileName, IMessageSink msgs, IParsingOptions options) |
Returns a lexer that is configured to begin reading the specified file. More... | |
IListSource< LNode > | Parse (ICharSource text, string fileName, IMessageSink msgs, IParsingOptions options) |
Parses a source file into one or more Loyc trees. More... | |
IListSource< LNode > | Parse (ILexer< Token > input, IMessageSink msgs, IParsingOptions options) |
If HasTokenizer is true, this method accepts a lexer returned by Tokenize() and begins parsing. More... | |
IListSource< LNode > | Parse (IListSource< Token > input, ISourceFile file, IMessageSink msgs, IParsingOptions options) |
Parses a token tree, such as one that came from a token literal. More... | |
|
inline |
Parses a source file into one or more Loyc trees.
text | input file or string. |
fileName | A file name to associate with errors, warnings, and output nodes. |
msgs | Error and warning messages are sent to this object. If this parameter is null, messages should be sent to MessageSink.Default. |
options | Parsing options. |
Implements Loyc.Syntax.IParsingService.
References Loyc.Ecs.EcsLanguageService.Tokenize().
Referenced by Loyc.Ecs.EcsLanguageService.Parse().
|
inline |
If HasTokenizer is true, this method accepts a lexer returned by Tokenize() and begins parsing.
input | A source of tokens. |
msgs | Error and warning messages are sent to this object. If this parameter is null, messages should be sent to MessageSink.Default. |
NotSupportedException | HasTokenizer is false. |
This method adds any preprocessing steps to the lexer (tree-ification or token preprocessing) that are required by this language before it sends the results to the parser. If possible, the output is computed lazily.
Implements Loyc.Syntax.IParsingService.
References Loyc.Syntax.ParsingMode.Expressions, Loyc.Syntax.ParsingMode.FormalArguments, Loyc.Syntax.IParsingOptions.Mode, Loyc.Ecs.EcsLanguageService.Parse(), Loyc.Syntax.IParsingOptions.PreserveComments, and Loyc.Syntax.Lexing.ILexer< Token >.SourceFile.
|
inline |
Parses a token tree, such as one that came from a token literal.
tokens | List of tokens |
file | A source file to associate with errors, warnings, and output nodes. |
msgs | Error and warning messages are sent to this object. If this parameter is null, messages should be sent to MessageSink.Default. |
options | Indicates how the input should be parsed. |
Some languages may offer token literals, which are stored as token trees that can be processed by "macros" or compiler plugins. A macro may wish to parse some of the token literal using the host language's parser (e.g. LLLPG needs to do this), so this method is provided for that purpose.
NotSupportedException | This feature is not supported by this parsing service. |
Implements Loyc.Syntax.IParsingService.
References Loyc.Syntax.ParsingMode.Expressions, Loyc.Syntax.ParsingMode.FormalArguments, Loyc.Syntax.IParsingOptions.Mode, and Loyc.Syntax.ParsingMode.Types.
|
inline |
Serializes a list of syntax trees to a StringBuilder in the syntax supported by this object.
nodes | Syntax trees to print. |
target | An output buffer, to which output is appended. |
sink | An object used to print warning and error messages. If this is null, messages are sent to MessageSink.Default. |
mode | Indicates the context in which the node(s) to be printed should be understood (e.g. is it a statement or an expression?). |
options | A set of options to control printer behavior. If null, an appropriate default set of options should be used. Some languages may support additional option interfaces beyond ILNodePrinterOptions. |
Some implementations can simply call LNodePrinter.PrintMultiple.
Implements Loyc.Syntax.ILNodePrinter.
References Loyc.Syntax.LNodePrinter.PrintMultiple().
|
inline |
Serializes the specified syntax tree to a StringBuilder in the syntax supported by this object.
node | A syntax tree to print. |
target | An output buffer, to which output is appended. |
sink | An object used to print warning and error messages. If this is null, messages are sent to MessageSink.Default. |
mode | Indicates the context in which the node(s) to be printed should be understood (e.g. is it a statement or an expression?). |
options | A set of options to control printer behavior. If null, an appropriate default set of options should be used. Some languages may support additional option interfaces beyond ILNodePrinterOptions. |
Implements Loyc.Syntax.ILNodePrinter.
References Loyc.Ecs.EcsNodePrinter.PrintECSharp(), and Loyc.Ecs.EcsNodePrinter.PrintPlainCSharp().
|
inline |
Returns a lexer that is configured to begin reading the specified file.
text | Text to be tokenized (e.g. UString) |
fileName | File name to be associated with any errors that occur. |
msgs | Error messages are sent to this object. |
The returned lexer should be a "simple" tokenizer. If the language uses tree lexing (in which tokens are grouped by parentheses and braces), the returned lexer should NOT include the grouping process.
It is recommended that the implementation of this method filter out spaces (for best performance) but not comments or newlines. If there is a preprocessor, it should not run. If ParsingOptions.PreserveComments is false, it is not this method's responsibility to filter them out.
Implements Loyc.Syntax.IParsingService.
References Loyc.Syntax.IParsingOptions.SpacesPerTab.
Referenced by Loyc.Ecs.EcsLanguageService.Parse().