AsLexemes <Terminal_T, Nonterminal_T> (this GrammarBase <Terminal_T, Nonterminal_T> .ParseTreeNode node) where Terminal_T : struct, IComparable, IConvertible where Nonterminal_T : struct, IComparable, IConvertible { return(node.Flatten().AsLexemes()); }
FirstSymbols <Terminal_T, Nonterminal_T> (this GrammarBase <Terminal_T, Nonterminal_T> .Production production) where Terminal_T : struct, IComparable, IConvertible where Nonterminal_T : struct, IComparable, IConvertible { return(production.Rules.Where(r => r.Length > 0).Select(r => r.Symbols[0]).Distinct()); }
protected Parser(GrammarBase <Terminal_T, Nonterminal_T> g, LexerBase l) { Grammar = g; Lexer = l; // Lazy lex }
SearchAll <Terminal_T, Nonterminal_T> (this IEnumerable <GrammarBase <Terminal_T, Nonterminal_T> .ParseTreeNode> nodes, GrammarBase <Terminal_T, Nonterminal_T> .Symbol sym, int start = 0) where Terminal_T : struct, IComparable, IConvertible where Nonterminal_T : struct, IComparable, IConvertible { return(nodes.Skip(start).SelectMany(n => n.SearchAll(sym))); }