Enhanced C#
Language of your choice: library documentation

Documentation moved to ecsharp.net

GitHub doesn't support HTTP redirects, so you'll be redirected in 3 seconds.

 All Classes Namespaces Functions Variables Enumerations Enumerator Properties Events Pages
Properties | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected static fields | List of all members
Loyc.Syntax.Les.LesPrecedenceMap Class Reference

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 cached for future reference. More...


Source file:

Remarks

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 cached for future reference.

Properties

static LesPrecedenceMap Default [get]
 

Public Member Functions

void Reset ()
 Forgets previously encountered operators to save memory. More...
 
Precedence Find (OperatorShape shape, object op, bool cacheWordOp=true)
 Gets the precedence of a prefix, suffix, or infix operator in LES, under the assumption that the operator isn't surrounded in backticks (in which case its precedence is always Backtick). 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 IsNaturalOperator (Symbol s)
 Returns true if the given Symbol can be printed as an operator without escaping it. More...
 
static bool IsSuffixOperatorName (Symbol name, out Symbol bareName, bool checkNatural)
 Decides whether the name appears to represent a suffix operator of the form sufOP or OP</c>. More...
 

Protected Member Functions

Precedence FindPrecedence (MMap< object, Precedence > table, object symbol, Precedence @default, bool cacheWordOp)
 

Protected static fields

static LesPrecedenceMap _default
 
static readonly Map< object,
Precedence
PredefinedPrefixPrecedence
 
static readonly Map< object,
Precedence
PredefinedSuffixPrecedence
 
static readonly Map< object,
Precedence
PredefinedInfixPrecedence
 

Member Function Documentation

Precedence Loyc.Syntax.Les.LesPrecedenceMap.Find ( OperatorShape  shape,
object  op,
bool  cacheWordOp = true 
)
inline

Gets the precedence of a prefix, suffix, or infix operator in LES, under the assumption that the operator isn't surrounded in backticks (in which case its precedence is always Backtick).

Parameters
opParsed form of the operator. op must be a Symbol, but the parameter has type object to avoid casting Token.Value in the parser.
static bool Loyc.Syntax.Les.LesPrecedenceMap.IsNaturalOperator ( Symbol  s)
inlinestatic

Returns true if the given Symbol can be printed as an operator without escaping it.

The parser should read something like +/* as an operator with three characters, rather than "+" and a comment, but the printer should be conservative, so this function returns false in such a case: "Be liberal in what you accept, and conservative in what you produce."

static bool Loyc.Syntax.Les.LesPrecedenceMap.IsOpChar ( char  c)
inlinestatic

Returns true if this character is one of those that operators are normally made out of in LES.

static bool Loyc.Syntax.Les.LesPrecedenceMap.IsSuffixOperatorName ( Symbol  name,
out Symbol  bareName,
bool  checkNatural 
)
inlinestatic

Decides whether the name appears to represent a suffix operator of the form sufOP or OP</c>.

Parameters
namePotential operator name to evaluate.
bareNameIf the name starts with "suf", this is the same name without "suf", otherwise it is set to name itself. This output is calculated even if the function returns false.
checkNaturalIf true, part of the requirement for returning true will be that IsNaturalOperator(bareName) == true.

References Loyc.Symbol.Name.

void Loyc.Syntax.Les.LesPrecedenceMap.Reset ( )
inline

Forgets previously encountered operators to save memory.

Symbol Loyc.Syntax.Les.LesPrecedenceMap.ToSuffixOpName ( object  symbol)
inline

Given a normal operator symbol like (Symbol)"++", gets the suffix form of the name, such as (Symbol)"suf++".

op must be a Symbol, but the parameter has type object to avoid casting Token.Value in the parser.

Member Data Documentation

readonly Map<object, Precedence> Loyc.Syntax.Les.LesPrecedenceMap.PredefinedPrefixPrecedence
staticprotected
Initial value:
=
new MMap<object, Precedence>() {
{ S.Substitute, P.Substitute },
{ S.Dot, P.Substitute },
{ S.Colon, P.Substitute },
{ S.NotBits, P.Prefix },
{ S.Not, P.Prefix },
{ S.Mod, P.Prefix },
{ S.XorBits, P.Prefix },
{ S._AddressOf, P.Prefix },
{ S._Dereference,P.Prefix },
{ S._UnaryPlus, P.Prefix },
{ S._Negate, P.Prefix },
{ S.DotDot, P.PrefixDots },
{ S.OrBits, P.PrefixOr },
{ S.Div, P.Reserved },
{ S.LT, P.Reserved },
{ S.GT, P.Reserved },
{ S.QuestionMark,P.Reserved },
{ S.Assign, P.Reserved },
}.AsImmutable()
readonly Map<object, Precedence> Loyc.Syntax.Les.LesPrecedenceMap.PredefinedSuffixPrecedence
staticprotected
Initial value:
=
new MMap<object, Precedence>() {
{ S.PreInc, P.Primary },
{ S.PreDec, P.Primary },
}.AsImmutable()