pushdown.rule

Undocumented in source.

Members

Classes

BalancedEdgeRule
class BalancedEdgeRule(Node delegate(Node[]) res, bool delegate(Node[], Node[]) extra, T, U)

Similar to EdgeRule, except that it checks if the two given types are balanced Usually you'd want to use this instead of EdgeRule

EdgeRule
class EdgeRule(Node delegate(Node[]) res, bool delegate(Node[], Node[]) extra, T, U)

For an indefinite amount of things surrounded by two tokens

EndRule
class EndRule(Node delegate(Node[]) res, bool delegate(Node[], Node[]) extra, T)

Only checks the last node

ListRule
class ListRule(Node delegate(Node[]) res, bool delegate(Node[], Node[]) extra, T, U)

Checks for a list with T as the item and U as the delimiter T U T U => valid T U => valid T U T U T => valid T T U T => invalid

SequenceRule
class SequenceRule(Node delegate(Node[]) res, bool delegate(Node[], Node[]) extra, T...)

For a sequence with a given length

StartRule
class StartRule(Node delegate(Node[]) res, bool delegate(Node[], Node[]) extra, T)

Only checks the first node

Interfaces

Rule
interface Rule

The rule interface is what all rules much extend from. Note that these don't have to be a template if you don't want them to be

Meta