Beispiel #1
0
        private static HashSet <string> CreateReservedWords()
        {
            var grammar = typeof(SQLiteParsingHelper).Assembly.GetResourceText("sql-sqlite-grammar.lisp", true);
            var tokens  = TheLexer.Lexize(grammar);

            var reader = new TinyLispPseudoReader();
            var form   = reader.Read(tokens);

            var nodeFactory = new SQLiteNodeFactory();
            var builder     = new TreeBuilder();
            var root        = builder.Build(nodeFactory, form);
            var nodes       = root.FetchTree();

            var words = new List <string>();

            words.AddRange(nodes
                           .Where(x => x is ExactTextNode)
                           .Cast <ExactTextNode>()
                           .Select(x => x.ExactText.ToLowerInvariant()));

            words.AddRange(nodes
                           .Where(x => x is MultiTextNode)
                           .Cast <MultiTextNode>()
                           .SelectMany(x => x.Texts.Select(y => y.ToLowerInvariant())));

            return(new HashSet <string>(words));
        }
Beispiel #2
0
        private INode BuildRoot()
        {
            var    nodeFactory = new SQLiteNodeFactory();
            var    input       = this.GetType().Assembly.GetResourceText("sql-sqlite-grammar.lisp", true);
            ILexer lexer       = new TinyLispLexer();
            var    tokens      = lexer.Lexize(input);

            var reader = new TinyLispPseudoReader();
            var list   = reader.Read(tokens);

            ITreeBuilder builder = new TreeBuilder();
            var          root    = builder.Build(nodeFactory, list);

            this.ChargeRoot(root);

            return(root);
        }