using System; using System.Collections.Generic; using System.IO; using Compiler.Lexer; using Compiler.Parser; namespace Compiler { public class Compiler { public static void Main() { List> tokensValid = TestLexer("../../../../tests/week_1/valid"); List> tokensInvalid = TestLexer("../../../../tests/week_1/invalid"); TestParser(tokensValid[0]); TestParser(tokensInvalid[0]); } static List> TestLexer(String path) { List> tokenLists = new List>(); String[] files = Directory.GetFiles(path); Lexer.Lexer lexer = new Lexer.Lexer(); foreach (String filename in files) { StreamReader file = new StreamReader(filename); String contents = file.ReadToEnd(); List tokens = lexer.Lex(contents); tokenLists.Add(tokens); Console.WriteLine("-----------" + filename + "-----------"); foreach (Token token in tokens) { Console.WriteLine(token.ToString()); } Console.WriteLine("--------------------------------------"); } return tokenLists; } static void TestParser(List tokenList) { Parser.Parser p = new Parser.Parser(); p.Parse(ref tokenList, NodeType.ProgramNode); } } }