úÎH¼CR_      !"#$%&'()*+,-./0123456789:;<= > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ None!"%&*,/69:;<=DLOQRTÛA singleton vertex is successfully parsed only if no other vertex is active yet. In particular, this allows us to insert "starting" points into graphs that mostly deal with edges. As a parsing symbol, it provides an Int which is the node index._None!"%&*,/69:;<=DLOQRTKAn edge in a graph. As a parsing symbol, it will provide (From:.To) pairs. _    None!"%&*,/69:;<=DLOQRT ` None!"%&*,/69:;<=DLOQRTTODO move to definition of aAnd if the set has a Last4 boundary, then we point from somewhere in the set To the NewNode , which is Last. In case our sets have a FirstI boundary, then we always point from the boundary "into" the set. Hence  SetNode == To and NewNode == From.!0We need to separate out the two cases of having  BS1 First and  BS1 Last& as this changes how we fill the Edge.;TODO separate out these cases into an Edge-Choice class ...  !" "!  !"None!"%&*,/69:;<=DLOQRT'0We need to separate out the two cases of having  BS1 First and  BS1 Last& as this changes how we fill the Edge.;TODO separate out these cases into an Edge-Choice class ...#$%&'(('&%$##$%&'(None!"%&*,/69:;<=DLOQRT)*+,--,+*))*+,-None!"%&*,/69:;<=DLOQRT ./0123456_0./ ./6540321./1235406None!"%&*,/69:;<=DLOQRT:cTODO 17.2.2017 added; probably wrong together with the syntactic variable instance in subtle ways.89:;<<;:9889:;< None!"%&*,/69:;<=DLOQRT =>?@ABCDEF`>= FED>C=BA@??@ABC=D>EF None!"%&*,/69:;<=DLOQRTGHIIHGGHINone!"%&*,/69:;<=DLOQRT bcdefgah`>=_i None!"%&*,/69:;<=DLOQRTJKLMNNMLKJJKLMNNone!"%&*,/69:;<=DLOQRT_  None!"%&*,/69:;<=DLOQRTOPQRS`OSROQPPQROS None!"%&*,/69:;<=DLOQRT TTODO 18.2.2017 addedUTODO 18.2.2017 addedVTODO 17.2.2017 addedWTODO 17.2.2017 addedX$Generate all possible bitsets until fullSet is reached. from is our Last, and to may not be set.Y1Given indices that index _only_ the current edge  First -> Last4, we want to go over all possible set combinations.The to1 element from an edge boundary will serve as the First3 element in a rule @X -> Last (from :-> to) FirstZ A single BoundaryP index allows us to get the optimal results ending on each individual boundary.[A UnitL index expands to the full set with all possible boundaries tried in order.]8For the inside case, we try all possible boundaries for Y in  X -> Y e$. For the outside case we now have: Y -> X e where Y is now extended. (yset,ybnd) -> (yset + ±,±) for all ± that are not in yset.TODO 17.2.2017 added^7Since there is only one boundary, it doesn't matter if k==First or k==Last;. As a result, the "name" of the boundary is kept variable._Given the outer (set,bnd) system, we try all boundaries ± for (set-bnd,±) for the smaller set Y in X -> Y e.*TODO After this case we should only allow S9, since we write, in essence, left-linear grammars here.-TODO we should try to statically assure that rb==0K holds always in this case. It should because every other symbol moves to  IVariable) once the number of of reserved bits is >0.9TODO kind-of hacked and should be written in a better way TUVWXYZ[\]^ ^]\[ZYXWVUT TUVWXYZ[\]^None!"%&*,/69:;<=DLOQRT`_ None!"%&*,/69:;<=DLOQRTj !"#$%%&&'()*+,-./,01-23,0-4456,-789,0- : ; < = > ? @ A B C D , E F G , 0 E H I J K L M N O P Q R S T U V WXYZXY[X\]X\^X\^X\_X\`X\`X\aX\]X\bc+ADPfusionSet-0.0.0.2-760pJsidhGs8PrmWiUo0YRADP.Fusion.Term.Singleton.Type ADP.Fusion.Term.EdgeWithSet.TypeADP.Fusion.Core.Set1ADP.Fusion.Term.Edge.Set1 ADP.Fusion.Term.EdgeWithSet.Set1ADP.Fusion.Term.Epsilon.Set1ADP.Fusion.Term.PeekIndex.Set1ADP.Fusion.Term.Singleton.Set1ADP.Fusion.Core.EdgeBoundary!ADP.Fusion.Term.Edge.EdgeBoundary(ADP.Fusion.Term.EdgeWithSet.EdgeBoundaryADP.Fusion.Core.BoundaryADP.Fusion.SynVar.Indices.Set1ADP.Fusion.EdgeBoundaryADP.Fusion.Term.EdgeWithSetADP.Fusion.Set1ADP.Fusion.Boundary Singleton ElmSingleton D:R:ElmPairi0$fElementPairi$fBuildSingleton $fShowElm EdgeWithSetElmEdgeWithSet$fBuildEdgeWithSetRiBs1ORiBs1I$fTableStaticVarucBS1$fTableStaticVarucBS10$fMkStreammSBS1$fMkStreammSBS10D:R:RunningIndexBS10D:R:RunningIndexBS12$fRuleContextBS1$fRuleContextBS10NewNodeSetNode EdgeFromTo edgeFromTo$fTermStaticVarEdgeBS1$fEdgeFromToLast$fEdgeFromToFirst$fTermStreammTermSymbols:.$fMkStreammPairBS1$fTermStaticVarEdgeWithSetBS1$fTermStaticVarEdgeWithSetBS10$fTermStreammTermSymbols:.0$fTermStreammTermSymbols:.1$fTermStaticVarEpsilonBS1$fTermStaticVarEpsilonBS10 PeekIndex ElmPeekIndex$fTermStaticVarPeekIndexBS1$fBuildPeekIndex$fTermStaticVarSingletonBS1$fTermStaticVarSingletonBS10RiEBCRiEBI$fTableStaticVarucEdgeBoundary$fTableStaticVarucEdgeBoundary0$fMkStreammSEdgeBoundary$fMkStreammSEdgeBoundary0D:R:RunningIndexEdgeBoundary0D:R:RunningIndexEdgeBoundary2$fRuleContextEdgeBoundary$fRuleContextEdgeBoundary0$fTermStaticVarEdgeEdgeBoundary$fMkStreammPairEdgeBoundary&$fTermStaticVarEdgeWithSetEdgeBoundary'$fTermStaticVarEdgeWithSetEdgeBoundary0RiBI$fTableStaticVarucBoundary$fMkStreammSBoundaryD:R:RunningIndexBoundary0$fRuleContextBoundary$fAddIndexDenses:.:.:.$fAddIndexDenses:.:.:.0$fAddIndexDenses:.:.:.1$fAddIndexDenses:.:.:.2$fAddIndexDenses:.:.:.3$fAddIndexDenses:.:.:.4$fAddIndexDenses:.:.:.5$fAddIndexDenses:.:.:.6$fAddIndexDenses:.:.:.7$fAddIndexDenses:.:.:.8$fAddIndexDenses:.:.:.9(ADPfusion-0.5.2.2-CJQnKmUocOx81RweH9Tp2bADP.Fusion.Core.ClassesElm RunningIndexADP.Fusion.Term.Edge.TypeEdgeFromgetFromTogetToElmEdge