SyntaxTree
public enum SyntaxTree<Element, LeafElement>
extension SyntaxTree: CustomDebugStringConvertible
extension SyntaxTree: CustomStringConvertible
A tree which can store different types of values in its leafs
- leaf: A leaf
- node: A node with a key and an arbitrary list of elements
-
A leaf storing a leaf element
Declaration
Swift
case leaf(LeafElement) -
A node with a key and an arbitrary list of elements
Declaration
Swift
indirect case node(key: Element, children: [SyntaxTree<Element, LeafElement>]) -
Generates a new syntax tree by applying the transform function to every key of the tree
Declaration
Swift
func map<Result>(_ transform: (Element) throws -> Result) rethrows -> SyntaxTree<Result, LeafElement>Parameters
transformTransform function
Return Value
A tree generated by applying the transform function to every key
-
Generates a new syntax tree by applying the transform function to every leaf of the tree
Declaration
Swift
func mapLeafs<Result>(_ transform: (LeafElement) throws -> Result) rethrows -> SyntaxTree<Element, Result>Parameters
transformTransform function
Return Value
A tree generated by applying the transform function to every leaf value
-
All leafs of the tree
Declaration
Swift
var leafs: [LeafElement] { get } -
Filters the tree by removing all nodes and their corresponding subtrees if the given predicate is false
Declaration
Swift
func filter(_ predicate: (Element) throws -> Bool) rethrows -> SyntaxTree<Element, LeafElement>?Parameters
predicatePredicate to filter the tree
Return Value
A tree generated by filtering out nodes for which the predicate returned false
-
Explodes nodes and passes all child nodes to the parent node if the given closure returns true
Declaration
Swift
func explode(_ shouldExplode: (Element) throws -> Bool) rethrows -> [SyntaxTree<Element, LeafElement>]Parameters
shouldExplodeDetermines if a node should be exploded
Return Value
A tree generated by exploding nodes determined by the given predicate
-
Compresses the tree by exploding nodes which have exactly one child node
Declaration
Swift
func compressed() -> SyntaxTree<Element, LeafElement>Return Value
Tree generated by compressing the current tree
-
Returns all nodes which match the given predicate.
Declaration
Swift
func allNodes(where predicate: (Element) throws -> Bool) rethrows -> [SyntaxTree<Element, LeafElement>]Parameters
predicatePredicate to match
Return Value
A collection of nodes which match the given predicate
-
Declaration
Swift
public var debugDescription: String { get } -
Declaration
Swift
public var description: String { get } -
Creates a new syntax tree node with a given key and a list of children
Declaration
Swift
init(key: Element, children: [SyntaxTree<Element, LeafElement>])Parameters
keyRoot key
childrenChildren of the root node
-
Creates a new syntax tree with a given root key and no children
Declaration
Swift
init(key: Element)Parameters
keyRoot key
-
Creates a new syntax tree with a given leaf value
Declaration
Swift
init(value: LeafElement)Parameters
valueLeaf value
-
Returns the root key of the tree or nil if no root key exists
Declaration
Swift
var root: Element? { get } -
Returns the value stored in the current node if the current node is a leaf. Otherwise, nil is returned
Declaration
Swift
var leaf: LeafElement? { get } -
Returns the direct children of the root node
Declaration
Swift
var children: [SyntaxTree<Element, LeafElement>]? { get }
-
Creates an empty tree
Declaration
Swift
init()
View on GitHub
SyntaxTree Enumeration Reference