C# 클래스 Loyc.Syntax.Les.Les2PrecedenceMap

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.
파일 보기 프로젝트 열기: qwertie/LoycCore 1 사용 예제들

보호된 프로퍼티들

프로퍼티 타입 설명
PredefinedInfixPrecedence Precedence>.Map
PredefinedPrefixPrecedence Precedence>.Map
PredefinedSuffixPrecedence Precedence>.Map
_precedenceMap Pair,Precedence>[]

공개 메소드들

메소드 설명
Find ( OperatorShape shape, object op, bool cacheWordOp = true, bool les3InfixOp = false ) : Precedence

Gets the precedence in LES of a prefix, suffix, or infix operator.

IsExtendedOperator ( string name, string expectPrefix = "'" ) : bool

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', '$'}.

IsNaturalOperator ( string name ) : bool

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.

IsOpChar ( char c ) : bool

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

IsOpCharEx ( char c ) : bool

Returns true if this character is one of those that can appear in "extended" LESv3 operators that start with an apostrophe.

IsSuffixOperatorName ( Symbol name, Symbol &bareName ) : bool

Decides whether the name appears to represent a suffix operator of the form sufOP or OP\.

Les2PrecedenceMap ( ) : System
Reset ( ) : void

Forgets previously encountered operators to save memory.

ToSuffixOpName ( object symbol ) : Symbol

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.

보호된 메소드들

메소드 설명
FindPrecedence ( MMap table, object symbol, Precedence @default, bool cacheWordOp, bool les3InfixOp = false ) : Precedence
this ( OperatorShape s ) : Pair,Precedence>

비공개 메소드들

메소드 설명
GetOpChars ( ) : BitArray
GetOpCharsEx ( ) : BitArray
IsOperator ( string name, BitArray opChars, bool rejectComment, string expectPrefix ) : bool

메소드 상세

Find() 공개 메소드

Gets the precedence in LES of a prefix, suffix, or infix operator.
public Find ( OperatorShape shape, object op, bool cacheWordOp = true, bool les3InfixOp = false ) : Precedence
shape OperatorShape Specifies which precedence table and rules to use /// (Prefix, Suffix or Infix). Note: when this is Suffix, "suf" must not be /// part of the name in op (see )
op object Parsed form of the operator. op must be a Symbol, but /// the parameter has type object to avoid casting Token.Value in the parser.
cacheWordOp bool
les3InfixOp bool
리턴 Precedence

FindPrecedence() 보호된 메소드

protected FindPrecedence ( MMap table, object symbol, Precedence @default, bool cacheWordOp, bool les3InfixOp = false ) : Precedence
table MMap
symbol object
@default Precedence
cacheWordOp bool
les3InfixOp bool
리턴 Precedence

IsExtendedOperator() 공개 정적인 메소드

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', '$'}.
public static IsExtendedOperator ( string name, string expectPrefix = "'" ) : bool
name string
expectPrefix string
리턴 bool

IsNaturalOperator() 공개 정적인 메소드

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.
public static IsNaturalOperator ( string name ) : bool
name string
리턴 bool

IsOpChar() 공개 정적인 메소드

Returns true if this character is one of those that operators are normally made out of in LES.
public static IsOpChar ( char c ) : bool
c char
리턴 bool

IsOpCharEx() 공개 정적인 메소드

Returns true if this character is one of those that can appear in "extended" LESv3 operators that start with an apostrophe.
public static IsOpCharEx ( char c ) : bool
c char
리턴 bool

IsSuffixOperatorName() 공개 정적인 메소드

Decides whether the name appears to represent a suffix operator of the form sufOP or OP\.
public static IsSuffixOperatorName ( Symbol name, Symbol &bareName ) : bool
name Symbol Potential operator name to evaluate.
bareName Symbol If the name ends 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. /// IsNaturalOperator(bareName) is true if the function returns true.
리턴 bool

Les2PrecedenceMap() 공개 메소드

public Les2PrecedenceMap ( ) : System
리턴 System

Reset() 공개 메소드

Forgets previously encountered operators to save memory.
public Reset ( ) : void
리턴 void

ToSuffixOpName() 공개 메소드

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.
public ToSuffixOpName ( object symbol ) : Symbol
symbol object
리턴 Symbol

this() 보호된 메소드

protected this ( OperatorShape s ) : Pair,Precedence>
s OperatorShape
리턴 Pair,Precedence>

프로퍼티 상세

PredefinedInfixPrecedence 보호되어 있는 정적으로 프로퍼티

protected static Map PredefinedInfixPrecedence
리턴 Precedence>.Map

PredefinedPrefixPrecedence 보호되어 있는 정적으로 프로퍼티

protected static Map PredefinedPrefixPrecedence
리턴 Precedence>.Map

PredefinedSuffixPrecedence 보호되어 있는 정적으로 프로퍼티

protected static Map PredefinedSuffixPrecedence
리턴 Precedence>.Map

_precedenceMap 보호되어 있는 프로퍼티

protected Pair,Precedence>[] _precedenceMap
리턴 Pair,Precedence>[]