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)); }
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.")); }