Enhanced C#
Language of your choice: library documentation
|
A class filled with methods for checking whether a node has the correct LNode.Name and structure. For example, IsPropertyDefinition(node)
checks whether node
meets the requirements for being a property definition, such as having a Name equal to #property, and having name and return value that are complex identifiers.
More...
A class filled with methods for checking whether a node has the correct LNode.Name and structure. For example, IsPropertyDefinition(node)
checks whether node
meets the requirements for being a property definition, such as having a Name equal to #property, and having name and return value that are complex identifiers.
This class also has useful helper functions, such as KeyNameComponentOf(LNode).
Public Types | |
enum | Pedantics { IgnoreWeirdAttributes = 1, IgnoreIllegalParentheses = 2, Lax = IgnoreWeirdAttributes | IgnoreIllegalParentheses } |
This is needed by the EC# node printer, but perhaps no one else. More... | |
enum | EventDef { Invalid, WithBody, List } |
Static Public Member Functions | |
static Symbol | SpaceStatementKind (LNode n, Pedantics p=Pedantics.Lax) |
Returns true iff the specified node has one of the names #struct, #class, #enum, #interface, #namespace, #alias, #trait and its tree structure is valid for a space statement. More... | |
static bool | IsMethodDefinition (LNode n, bool orDelegate, Pedantics p=Pedantics.Lax) |
Returns true iff the given node has a valid syntax tree for a method definition, a constructor, or (when orDelegate is true) a delegate definition. More... | |
static bool | IsPropertyDefinition (LNode n, Pedantics p=Pedantics.Lax) |
static bool | IsEventDefinition (LNode n, Pedantics p) |
static bool | IsVariableDecl (LNode _n, bool allowMultiple, bool allowNoAssignment, Pedantics p) |
static bool | IsSimpleIdentifier (LNode n, Pedantics p) |
static bool | IsComplexIdentifier (LNode n, ICI f=ICI.Default, Pedantics p=Pedantics.Lax) |
static bool | IsPrintableTypeParam (LNode n, Pedantics p=Pedantics.Lax) |
Checks if 'n' is a legal type parameter definition. More... | |
static bool | IsExecutableBlockStmt (LNode _n, Pedantics p=Pedantics.Lax) |
static Symbol | ExecutableBlockStmtType (LNode _n, Pedantics p=Pedantics.Lax) |
static bool | IsBracedBlock (LNode n) |
static bool | IsLabelStmt (LNode _n, Pedantics p=Pedantics.Lax) |
static bool | IsNamedArgument (LNode _n, Pedantics p=Pedantics.Lax) |
static bool | IsResultExpr (LNode n, Pedantics p=Pedantics.Lax) |
static bool | IsForwardedProperty (LNode _n, Pedantics p=Pedantics.Lax) |
static Symbol | KeyNameComponentOf (LNode name) |
Given a complex name such as global::Foo<int>.Bar<T> , this method identifies the base name component, which in this example is Bar. This is used, for example, to identify the expected name for a constructor based on the class name, e.g. Foo<T> => Foo. More... | |
This is needed by the EC# node printer, but perhaps no one else.
|
inlinestatic |
Returns true iff the given node has a valid syntax tree for a method definition, a constructor, or (when orDelegate is true) a delegate definition.
|
inlinestatic |
Checks if 'n' is a legal type parameter definition.
A type parameter definition must be a simple symbol with at most one #in or #out attribute, and at most one #where attribute with an argument list consisting of complex identifiers.
References Loyc.Syntax.LNode.Attrs.
Given a complex name such as global::Foo<int>.Bar<T>
, this method identifies the base name component, which in this example is Bar. This is used, for example, to identify the expected name for a constructor based on the class name, e.g. Foo<T>
=> Foo.
It is not verified that name is a complex identifier. There is no error detection but in some cases an empty name may be returned, e.g. for input like Foo."Hello"
.
References Loyc.Syntax.LNode.Args, and Loyc.Syntax.LNode.Target.
|
inlinestatic |
Returns true iff the specified node has one of the names #struct, #class, #enum, #interface, #namespace, #alias, #trait and its tree structure is valid for a space statement.
References Loyc.Syntax.LNode.Args.