|
Enhanced C#
Language of your choice: library documentation
|
This class's main job is to maintain a table of Precedence values for LES operators. When you ask about a new operator, its precedence is chosen by this class and cached for future reference. More...
This class's main job is to maintain a table of Precedence values for LES operators. When you ask about a new operator, its precedence is chosen by this class and cached for future reference.
Properties | |
| static Les2PrecedenceMap?? | Default [get] |
| Pair< MMap< object, Precedence >, Precedence > | this[OperatorShape s] [get, set] |
Public Member Functions | |
| virtual void | Reset () |
| Forgets previously encountered operators to save memory. More... | |
| Precedence | Find (OperatorShape shape, object op, bool cacheWordOp=true) |
| Gets the precedence in LES of a prefix, suffix, or infix operator. More... | |
| Symbol | ToSuffixOpName (object symbol) |
Given a normal operator symbol like (Symbol)"'++", gets the suffix form of the name, such as (Symbol)"'suf++". More... | |
Static Public Member Functions | |
| static bool | IsOpChar (char c) |
| Returns true if this character is one of those that operators are normally made out of in LES. More... | |
| static bool | IsOpCharEx (char c) |
| Returns true if this character is one of those that can appear in "extended" LESv3 operators that start with an apostrophe. More... | |
| static bool | IsNaturalOperator (UString name) |
| Returns true if the given Symbol can be printed as an operator without escaping it in LESv2. More... | |
| static bool | IsNaturalOperatorToken (UString name) |
| Like IsNaturalOperator, but doesn't expect name[0] is apostrophe. More... | |
| static bool | IsExtendedOperatorToken (UString name) |
| Returns true if the given Symbol can ever be used as an "extended" binary operator in LESv3. More... | |
| static bool | ResemblesSuffixOperator (Symbol name, out Symbol bareName) |
| Decides whether the name resembles a suffix operator. More... | |
Protected Member Functions | |
| Precedence | FindPrecedence (MMap< object, Precedence > table, object symbol, Precedence @default, bool cacheWordOp) |
Protected fields | |
| Pair< MMap< object, Precedence >, Precedence >[] | _precedenceMap = new Pair<MMap<object, Precedence>, Precedence>[4] |
Protected static fields | |
| static Les2PrecedenceMap | _default |
| static readonly Map< object, Precedence > | PredefinedPrefixPrecedence |
| static readonly Map< object, Precedence > | PredefinedSuffixPrecedence |
| static readonly Map< object, Precedence > | PredefinedInfixPrecedence |
|
inline |
Gets the precedence in LES of a prefix, suffix, or infix operator.
| shape | Specifies which precedence table and rules to use (Prefix, Suffix or Infix). Note: when this is Suffix, "_" is not expected to be part of the name in op, i.e. op should be a Symbol like "'++" rather than "'_++" (see also ResemblesSuffixOperator) |
| op | Parsed form of the operator. op must be a Symbol, but the parameter has type object to avoid casting Token.Value in the parser. |
|
inlinestatic |
Returns true if the given Symbol can ever be used as an "extended" binary operator in LESv3.
A binary operator's length must be between 2 and 255, its name must start with an apostrophe, and each remaining character must be punctuation marks from natural operators and/or characters from the set {'#', '_', 'a'..'z', 'A'..'Z', '0'..'9', '$'}.
|
inlinestatic |
Returns true if the given Symbol can be printed as an operator without escaping it in LESv2.
The parser should read something like +/* as an operator with three characters, rather than "+" and a comment, but the printer is more conservative, so this function returns false in such a case.
References Loyc.Syntax.Les.Les2PrecedenceMap.IsNaturalOperatorToken(), Loyc.UString.Length, and Loyc.UString.Slice().
|
inlinestatic |
Like IsNaturalOperator, but doesn't expect name[0] is apostrophe.
References Loyc.UString.Length, and Loyc.UString.Slice().
Referenced by Loyc.Syntax.Les.Les2PrecedenceMap.IsNaturalOperator().
|
inlinestatic |
Returns true if this character is one of those that operators are normally made out of in LES.
|
inlinestatic |
Returns true if this character is one of those that can appear in "extended" LESv3 operators that start with an apostrophe.
|
inlinestatic |
Decides whether the name resembles a suffix operator.
| name | Potential operator name to evaluate. |
| bareName | If the name begins with "'suf", this is the same name with "suf" removed, otherwise it is set to name itself. This output is calculated even if the function returns false. |
This method doesn't verify that the operator IS a legal suffix operator, just that it has the form of one.
References Loyc.Symbol.Name.
|
inlinevirtual |
Forgets previously encountered operators to save memory.
Reimplemented in Loyc.Syntax.Les.Les3PrecedenceMap.
|
inline |
|
staticprotected |
|
staticprotected |
1.8.17