StateCluster |
NFAFactory.build_AB(StateCluster A,
StateCluster B) |
From A B build A-e->B (that is, build an epsilon arc from right
of A to left of B).
|
StateCluster |
NFAFactory.build_Action(GrammarAST action) |
Build what amounts to an epsilon transition with an action.
|
StateCluster |
NFAFactory.build_AlternativeBlock(java.util.List<StateCluster> alternativeStateClusters) |
From A|B|..|Z alternative block build
o->o-A->o->o (last NFAState is blockEndNFAState pointed to by all alts)
| ^
o->o-B->o--|
| |
...
|
StateCluster |
NFAFactory.build_AlternativeBlockFromSet(StateCluster set) |
From a set ('a'|'b') build
o->o-'a'..'b'->o->o (last NFAState is blockEndNFAState pointed to by all alts)
|
StateCluster |
NFAFactory.build_Aoptional(StateCluster A) |
From (A)? build either:
o--A->o
| ^
o---->|
or, if A is a block, just add an empty alt to the end of the block
|
StateCluster |
NFAFactory.build_Aplus(StateCluster A) |
From (A)+ build
|---| (Transition 2 from A.right points at alt 1)
v | (follow of loop is Transition 1)
o->o-A-o->o
Meaning that the last NFAState in A points back to A's left Transition NFAState
and we add a new begin/end NFAState.
|
StateCluster |
NFAFactory.build_Astar(StateCluster A) |
From (A)* build
|---|
v |
o->o-A-o--o (Transition 2 from block end points at alt 1; follow is Transition 1)
| ^
o---------| (optional branch is 2nd alt of optional block containing A+)
Meaning that the last (end) NFAState in A points back to A's
left side NFAState and we add 3 new NFAStates (the
optional branch is built just like an optional subrule).
|
StateCluster |
NFAFactory.build_Atom(int label,
GrammarAST associatedAST) |
From label A build Graph o-A->o
|
StateCluster |
NFAFactory.build_Atom(GrammarAST atomAST) |
|
StateCluster |
NFAFactory.build_CharLiteralAtom(GrammarAST charLiteralAST) |
From char 'c' build StateCluster o-intValue(c)->o
|
StateCluster |
NFAFactory.build_CharRange(java.lang.String a,
java.lang.String b) |
From char 'c' build StateCluster o-intValue(c)->o
can include unicode spec likes '$' later.
|
StateCluster |
NFAFactory.build_Epsilon() |
From an empty alternative build StateCluster o-e->o
|
StateCluster |
NFAFactory.build_Range(int a,
int b) |
Can only complement block of simple alts; can complement build_Set()
result, that is.
|
StateCluster |
NFAFactory.build_RuleRef(Rule refDef,
NFAState ruleStart) |
For reference to rule r, build
o-e->(r) o
where (r) is the start of rule r and the trailing o is not linked
to from rule ref state directly (it's done thru the transition(0)
RuleClosureTransition.
|
StateCluster |
NFAFactory.build_SemanticPredicate(GrammarAST pred) |
Build what amounts to an epsilon transition with a semantic
predicate action.
|
StateCluster |
NFAFactory.build_Set(IntSet set,
GrammarAST associatedAST) |
From set build single edge graph o->o-set->o.
|
StateCluster |
NFAFactory.build_StringLiteralAtom(GrammarAST stringLiteralAST) |
For a non-lexer, just build a simple token reference atom.
|
StateCluster |
NFAFactory.build_Wildcard(GrammarAST associatedAST) |
Build an atom with all possible values in its label
|
StateCluster |
NFAFactory.build_WildcardTree(GrammarAST associatedAST) |
Build a subrule matching ^(.
|