private static HashSet <string> CreateReservedWords()
        {
            var grammar = typeof(SqlTestsHelper).Assembly.GetResourceText("sql-grammar.lisp", true);
            var tokens  = TheLexer.Lexize(grammar);

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

            var nodeFactory = new SqlNodeFactory();
            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));
        }
Esempio n. 2
0
        public void Build_EmptySeq_ThrowsTinyLispException()
        {
            // Arrange
            var lisp = "(defblock :name foo :is-top t (seq))";

            var          tokens     = _lexer.Lexize(lisp);
            var          reader     = new TinyLispPseudoReader();
            var          pseudoList = reader.Read(tokens);
            ITreeBuilder builder    = new TreeBuilder();
            INodeFactory factory    = new SqlNodeFactory();

            // Act
            var ex = Assert.Throws <TinyLispException>(() => builder.Build(factory, pseudoList));

            // Assert
            Assert.That(ex.Message, Is.EqualTo("Free arguments not found."));
        }