public ParseContextEvaluator( ITokenNamer <TTok> namer, TokenReader <TTok> reader, Func <int, TCtxt> toContext) { Rules = new RuleSet( typeof(TGrammar), typeof(TTok), typeof(TRez), (int)(object)reader.EndOfStream, reader.PublicChildren.ToDictionary( kv => (int)(object)kv.Key, kv => (IReadOnlyList <int>)kv.Value.Select(i => (int)(object)i).ToArray())); var smb = new StateMachineBuilder(Rules); _namer = namer; _initialState = smb.Build(); _actions = smb.Actions; _stateContexts = smb.TagContexts.Select(arr => arr.Select(toContext).ToArray()).ToArray(); }
protected GrammarParser(ITokenNamer <TTok> naming) { _naming = naming; }