Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
 protected GrammarParser(ITokenNamer <TTok> naming)
 {
     _naming = naming;
 }