public void ComplexEmbeddingTest() { //Set up tokenizer WaebricLexer lexer = new WaebricLexer(new StringReader("\"<a(href=\"http://www.microsoft.com\") \"Microsoft Corp\">\"")); lexer.LexicalizeStream(); TokenIterator tokens = lexer.GetTokenIterator(); //Test token Assert.AreEqual(1, tokens.GetSize()); Assert.AreEqual(TokenType.EMBEDDING, tokens.Peek(1).GetType()); //Test tokens in embedding EmbeddingToken embeddingToken = (EmbeddingToken)tokens.NextToken(); TokenIterator embeddingTokens = embeddingToken.GetTokenIterator(); Assert.AreEqual(12, embeddingTokens.GetSize()); Assert.AreEqual("\"", embeddingTokens.Peek(1).GetValue().ToString()); Assert.AreEqual("", embeddingTokens.Peek(2).GetValue().ToString()); Assert.AreEqual("<", embeddingTokens.Peek(3).GetValue().ToString()); Assert.AreEqual("a", embeddingTokens.Peek(4).GetValue().ToString()); Assert.AreEqual("(", embeddingTokens.Peek(5).GetValue().ToString()); Assert.AreEqual("href", embeddingTokens.Peek(6).GetValue().ToString()); Assert.AreEqual("=", embeddingTokens.Peek(7).GetValue().ToString()); Assert.AreEqual("http://www.microsoft.com", embeddingTokens.Peek(8).GetValue().ToString()); Assert.AreEqual(")", embeddingTokens.Peek(9).GetValue().ToString()); Assert.AreEqual("Microsoft Corp", embeddingTokens.Peek(10).GetValue().ToString()); Assert.AreEqual(">", embeddingTokens.Peek(11).GetValue().ToString()); Assert.AreEqual("\"", embeddingTokens.Peek(12).GetValue().ToString()); }
public void EmbeddingTest() { //Set up tokenizer WaebricLexer lexer = new WaebricLexer(new StringReader("\"pre<\"\\\">\">post\"")); lexer.LexicalizeStream(); TokenIterator tokens = lexer.GetTokenIterator(); //Test token Assert.AreEqual(1, tokens.GetSize()); Assert.AreEqual(TokenType.EMBEDDING, tokens.Peek(1).GetType()); //Get embedding and test inner tokens EmbeddingToken parsedToken = (EmbeddingToken)tokens.NextToken(); TokenIterator embeddingTokens = parsedToken.GetTokenIterator(); Assert.AreEqual(7, embeddingTokens.GetSize()); Assert.AreEqual("\"", embeddingTokens.Peek(1).GetValue().ToString()); Assert.AreEqual("pre", embeddingTokens.Peek(2).GetValue().ToString()); Assert.AreEqual("<", embeddingTokens.Peek(3).GetValue().ToString()); Assert.AreEqual("\\\">", embeddingTokens.Peek(4).GetValue().ToString()); Assert.AreEqual(">", embeddingTokens.Peek(5).GetValue().ToString()); Assert.AreEqual("post", embeddingTokens.Peek(6).GetValue().ToString()); Assert.AreEqual("\"", embeddingTokens.Peek(7).GetValue().ToString()); }
public void MultipleLineCommentTest() { //Set up tokenizer WaebricLexer lexer = new WaebricLexer(new StringReader("/*this is a comment \n on multiple \n lines*/")); lexer.LexicalizeStream(); TokenIterator tokens = lexer.GetTokenIterator(); Assert.AreEqual(0, tokens.GetSize()); }
public void SingleQuoteTest() { //Set up tokenizer WaebricLexer lexer = new WaebricLexer(new StringReader("\"")); lexer.LexicalizeStream(); TokenIterator tokens = lexer.GetTokenIterator(); Assert.AreEqual(1, tokens.GetSize()); Assert.AreEqual(TokenType.SYMBOL, tokens.Peek(1).GetType()); Assert.AreEqual("\"", tokens.Peek(1).GetValue().ToString()); }
private static String Path; //Path of file to compile #endregion #region Public Methods public static void Main(string[] args) { Console.WriteLine("Waebric Compiler/Interpreter v1.0"); Console.WriteLine("---------------------------------"); if (args.Length == 1) { //There is one file specified. Path = args[0]; } else { Console.WriteLine("WeabricCompiler: no input file specified."); Console.Read(); //Testing purposes only return; } //Let's lexicalize the file StreamReader sourceStream = new StreamReader(Path); WaebricLexer lexer = new WaebricLexer(sourceStream); lexer.LexicalizeStream(); TokenIterator tokens = lexer.GetTokenIterator(); if (tokens.GetSize() == 0) { //Not tokens parsed Console.WriteLine("WaebricCompiler: Empty file or comments only."); return; //Nothing to compile so end program } //Lets parse the file WaebricParser parser = new WaebricParser(tokens); parser.Parse(); SyntaxTree parsedTree = parser.GetTree(); //Initialize ModuleCache with correct DirectoryPath ModuleCache.Instance.SetDirectoryPath(GetDirectoryPath()); //Lets check the tree WaebricChecker checker = new WaebricChecker(); checker.CheckSyntaxTree(parsedTree); //Lets interpret the tree and generate XHTML WaebricInterpreter interpreter = new WaebricInterpreter(); interpreter.InterpretAST(parsedTree); }
public void WaebricSymbolTokenTest() { //Set up tokenizer WaebricLexer lexer = new WaebricLexer(new StringReader("'test")); lexer.LexicalizeStream(); TokenIterator tokens = lexer.GetTokenIterator(); //Test token Assert.AreEqual(1, tokens.GetSize()); Token token = tokens.NextToken(); Assert.AreEqual(TokenType.WAEBRICSYMBOL, token.GetType()); Assert.AreEqual("test", token.GetValue().ToString()); }
public void HasNextTest() { //Create list and add dummy tokens to it List <Token> tokenStream = new List <Token>(); Token token1 = new Token(); Token token2 = new Token(); tokenStream.Add(token1); tokenStream.Add(token2); //Create iterator with tokenstream and then test some things out TokenIterator iterator = new TokenIterator(tokenStream); //Check size Assert.IsTrue(iterator.GetSize() == tokenStream.Count); //Check if tokens are in list Assert.IsTrue(iterator.HasNext()); //Check also if there are 2 items in list Assert.IsTrue(iterator.HasNext(2)); //Get first token and check Token CurrentToken = iterator.NextToken(); Assert.AreEqual(token1, CurrentToken); //Get second token and check Assert.IsTrue(iterator.HasNext()); CurrentToken = iterator.NextToken(); Assert.AreEqual(token2, CurrentToken); //No items in list left Assert.IsFalse(iterator.HasNext()); }