public void DoubleFunctionDefinition() { //First parse the initial file and then request the rest //Let's lexicalize the file StreamReader sourceStream = new StreamReader("../../../../TestChecker/WaebricTestFiles/doublefunctiondefinition.wae"); WaebricLexer lexer = new WaebricLexer(sourceStream); lexer.LexicalizeStream(); TokenIterator tokens = lexer.GetTokenIterator(); //Lets parse the file WaebricParser parser = new WaebricParser(tokens); parser.Parse(); SyntaxTree parsedTree = parser.GetTree(); //Initialize ModuleCache with correct DirectoryPath ModuleCache.Instance.SetDirectoryPath("../../../../TestChecker/WaebricTestFiles/"); //Lets check the tree WaebricChecker checker = new WaebricChecker(); List <Exception> checkerExceptions = checker.CheckSyntaxTree(parsedTree); //Exception function already defined should be in list Assert.AreEqual(1, checkerExceptions.Count); Assert.AreEqual(typeof(FunctionAlreadyDefined), checkerExceptions.ToArray()[0].GetType()); }
public void WaebricCheckerImportTest() { //First parse the initial file and then request the rest //Let's lexicalize the file StreamReader sourceStream = new StreamReader("../../../../TestChecker/WaebricTestFiles/home.wae"); WaebricLexer lexer = new WaebricLexer(sourceStream); lexer.LexicalizeStream(); TokenIterator tokens = lexer.GetTokenIterator(); //Lets parse the file WaebricParser parser = new WaebricParser(tokens); parser.Parse(); SyntaxTree parsedTree = parser.GetTree(); //Initialize ModuleCache with correct DirectoryPath ModuleCache.Instance.SetDirectoryPath("../../../../TestChecker/WaebricTestFiles/"); //Lets check the tree WaebricChecker checker = new WaebricChecker(); List <Exception> checkerExceptions = checker.CheckSyntaxTree(parsedTree); //Test output Assert.AreEqual(0, checkerExceptions.Count); //Test if all modules except tree root are in cache Assert.IsTrue(ModuleCache.Instance.ContainsModule("first")); Assert.IsTrue(ModuleCache.Instance.ContainsModule("second")); Assert.IsTrue(ModuleCache.Instance.ContainsModule("common")); }
public void DoubleFunctionDefinition() { //First parse the initial file and then request the rest //Let's lexicalize the file StreamReader sourceStream = new StreamReader("../../../../TestChecker/WaebricTestFiles/doublefunctiondefinition.wae"); WaebricLexer lexer = new WaebricLexer(sourceStream); lexer.LexicalizeStream(); TokenIterator tokens = lexer.GetTokenIterator(); //Lets parse the file WaebricParser parser = new WaebricParser(tokens); parser.Parse(); SyntaxTree parsedTree = parser.GetTree(); //Initialize ModuleCache with correct DirectoryPath ModuleCache.Instance.SetDirectoryPath("../../../../TestChecker/WaebricTestFiles/"); //Lets check the tree WaebricChecker checker = new WaebricChecker(); List<Exception> checkerExceptions = checker.CheckSyntaxTree(parsedTree); //Exception function already defined should be in list Assert.AreEqual(1, checkerExceptions.Count); Assert.AreEqual(typeof(FunctionAlreadyDefined), checkerExceptions.ToArray()[0].GetType()); }
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("--------Builded with Oslo--------"); Console.WriteLine(""); if (args.Length == 1) { //There is one file specified. Path = args[0]; } else { Console.WriteLine("WeabricCompiler: no input file specified."); return; } //Lets parse the file WaebricParser.Instance.Parse(Path); Node rootNode = WaebricParser.Instance.GetAST(); //Initialize ModuleCache with correct DirectoryPath ModuleCache.Instance.SetDirectoryPath(GetDirectoryPath()); //Lets check the file WaebricChecker checker = new WaebricChecker(); checker.CheckSyntaxTree(rootNode); //Lets interpret the file WaebricInterpreter interpreter = new WaebricInterpreter(); interpreter.InterpretAST(rootNode); }
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); }
private static String Path; //Path of file to compile #endregion Fields #region 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 WaebricCheckerImportTest() { //First parse the initial file and then request the rest //Let's lexicalize the file StreamReader sourceStream = new StreamReader("../../../../TestChecker/WaebricTestFiles/home.wae"); WaebricLexer lexer = new WaebricLexer(sourceStream); lexer.LexicalizeStream(); TokenIterator tokens = lexer.GetTokenIterator(); //Lets parse the file WaebricParser parser = new WaebricParser(tokens); parser.Parse(); SyntaxTree parsedTree = parser.GetTree(); //Initialize ModuleCache with correct DirectoryPath ModuleCache.Instance.SetDirectoryPath("../../../../TestChecker/WaebricTestFiles/"); //Lets check the tree WaebricChecker checker = new WaebricChecker(); List<Exception> checkerExceptions = checker.CheckSyntaxTree(parsedTree); //Test output Assert.AreEqual(0, checkerExceptions.Count); //Test if all modules except tree root are in cache Assert.IsTrue(ModuleCache.Instance.ContainsModule("first")); Assert.IsTrue(ModuleCache.Instance.ContainsModule("second")); Assert.IsTrue(ModuleCache.Instance.ContainsModule("common")); }