YaccConstructor


Tree<'TokenType>

Namespace: Yard.Generators.Common
Parent Module: AST

Constructors

ConstructorDescription
new(tokens, root, rules)
Signature: (tokens:'TokenType array * root:AstNode * rules:int [] []) -> Tree<'TokenType>

CompiledName: .ctor

new(...)
Signature: (tokens:'TokenType array * root:AstNode * rules:int [] [] * _leftSide:int array option * _numToString:(int -> string) option * isErrorToken:('TokenType -> bool) option) -> Tree<'TokenType>

CompiledName: .ctor

Instance members

Instance memberDescription
AstToDot(...)
Signature: (indToString:(int -> string)) -> (tokenToNumber:('TokenType -> int)) -> (tokenData:('TokenType -> obj) option) -> (leftSide:int array) -> path:string -> unit
CalculateStatistics(nonterminal)
Signature: nonterminal:string -> int * int * double
ChooseBestAst()
Signature: unit -> unit
ChooseLongestMatch()
Signature: unit -> unit

Select children, where the first subnode ends first. In case of ambiguity look at second one. If ranges are equal, then select one, having the smallest rule number. Eliminate cycles.

ChooseSingleAst()
Signature: unit -> unit

Choose first correct subtree without cycles.

ChooseSingleAstWhenHaveErrors()
Signature: unit -> unit
collectErrors(tokenToRange)
Signature: (tokenToRange:('TokenType -> '?7879 * '?7879)) -> ResizeArray<'?7879 * '?7879 * 'TokenType []>
collectWarnings(tokenToRange)
Signature: (tokenToRange:('TokenType -> '?7866 * '?7866)) -> ResizeArray<('?7866 * '?7866) * int []>
CountCounters()
Signature: unit -> int * int * int * int * int
EliminateCycles()
Signature: unit -> unit
FindNonterminalsByInd(nonterminal)
Signature: nonterminal:int -> AST []
FindNonterminalsByString(nonterminal)
Signature: nonterminal:string -> AST []
GetForestWithToken(...)
Signature: tokRange:'?7893 -> (tokenToRange:('TokenType -> seq<'?7893>)) -> Tree<'TokenType> list

Returns all trees that contain some token. tokRange - range of token tokenToRange - mapping from token to range

GetNextTree(unprocessed inputFilter)
Signature: (unprocessed:Terminal list) -> (inputFilter:(Family -> bool)) -> Tree<'TokenType> * Terminal list

Returns tree which contains some unprocessed tokens. Uses in highlighting. unprocessed - list of number of tokens that need process. inputFilter is a function that is involved in choosing trees.

getStructuredTokensFromFamily(family)
Signature: family:Family -> TS<'TokenType>
GetTokens(ast)
Signature: ast:AST -> TS<'TokenType>
GetTypeOfExpression(nonterminals)
Signature: (nonterminals:string []) -> string []
IsErrorToken(token)
Signature: token:'TokenType -> bool
Order
Signature: AST []

CompiledName: get_Order

PrintAst()
Signature: unit -> unit
Root
Signature: AstNode

CompiledName: get_Root

RulesCount
Signature: int

CompiledName: get_RulesCount

SpecifyLeftSide(ls)
Signature: (ls:int array option) -> unit
SpecifyNumToString(nts)
Signature: (nts:(int -> string) option) -> unit
Tokens
Signature: 'TokenType array

CompiledName: get_Tokens

TokensCount
Signature: int

CompiledName: get_TokensCount

Translate(...)
Signature: (funs:(obj [] -> 'Position * 'Position -> obj) array) -> (leftSides:int array) -> (concat:(obj list -> obj) array) -> (epsilons:Tree<'?7886> array) -> (tokenToRange:('TokenType -> 'Position * 'Position)) -> zeroPosition:'Position -> clearAST:bool -> errDict:ErrorDictionary<'TokenType> -> obj
Type parameters: '?7886
TraverseWithRanges(...)
Signature: (tokenToRange:('TokenType -> 'Position * 'Position)) -> (dispose:(int -> unit)) -> (handleCycleNode:(AST -> unit)) -> (f:(int -> BlockResizeArray<'Position * 'Position> -> unit)) -> unit

handleCycleNode is used for handling nodes, contained in cycles and having no children family, where each node has smaller position.

Static members

Static memberDescription
FamilyToTokens
Signature: Dictionary<Family,Terminal list>

CompiledName: get_FamilyToTokens

GetTokensFromFamily(family)
Signature: family:Family -> Terminal list
Fork me on GitHub