public ElkhoundGlrParser( object context, BnfGrammar grammar, TransitionDelegate transition, GrammarActionDelegate grammarAction, int[] stateToPriorToken, int[] conflictActionsTable, Func <object, int, IReciever <Msg>, IReciever <Msg> > makeSwitch) { this.context = context; this.grammar = grammar; this.grammarAction = grammarAction; this.transition = transition; this.stateToPriorToken = stateToPriorToken; this.conflictActionsTable = conflictActionsTable; this.gss = new Gss(); gss.AddTopmost(0); }
private RnGlrParser( RuntimeGrammar grammar, int[] tokenComplexity, TransitionDelegate transition, int[] stateToPriorToken, int[] conflictActionsTable, IProducer <T> producer, ResourceAllocator allocator, ILogging logging, Gss <T> gss) { this.grammar = grammar; this.tokenComplexity = tokenComplexity; this.transition = transition; this.stateToPriorToken = stateToPriorToken; this.conflictActionsTable = conflictActionsTable; this.gss = gss; this.nodeBuffer = new T[grammar.MaxRuleSize]; this.producer = producer; this.allocator = allocator; this.logging = logging; this.pendingReductions = new ModifiedReduction[grammar.Productions.Count]; switch (producer.ReductionOrder) { case ReductionOrder.Unordered: { this.R = new ReductionQueue <T>(); break; } case ReductionOrder.ByRuleDependency: { this.R = new ReductionPathQueue <T>(tokenComplexity, grammar); break; } } }