static void Compile(string inputPath, string outputPath, bool debug) { //Lexing Lexer.Lexer lexer = new Lexer.Lexer(); StreamReader file = new StreamReader(inputPath); string contents = file.ReadToEnd(); List <Token> tokens = lexer.Lex(contents); if (debug) { Console.WriteLine($"Lexed {inputPath.Split("/").Last()}."); } //Parsing Parser.Parser p = new Parser.Parser(tokens); try { Node programNode = p.Parse(NodeType.ProgramNode); if (debug) { Console.WriteLine($"Parsed \"{inputPath.Split("/").Last()}\""); } //Generating Generator.Generator generator = new Generator.Generator(); string program = generator.Generate(programNode); File.WriteAllText(outputPath, program); } catch (Exception e) { Console.WriteLine($"Error in file \"{inputPath.Split("/").Last()}\""); Console.WriteLine(e.Message); } }
private static List <LexerInfo> MakeLexer() { var reader = new StreamReader(PATH_DATA); var lexer = new Lexer.Lexer(PATH_IDENTIFICATOR, PATH_NUMBER10, PATH_NUMBER2816); string line; var lexerData = new List <LexerInfo>(); int numberString = 0; while ((line = reader.ReadLine()) != null) { var lexerInfo = lexer.GetLexerInfo(line, numberString); foreach (var item in lexerInfo) { // Console.WriteLine("Value: " + item.Value + " => Type: " + item.Type + ", IsReserve: " + item.IsReserve); lexerData.Add(item); } numberString++; } return(lexerData); }
static List <Token> TestLexer(string path, int debugLevel) { Lexer.Lexer lexer = new Lexer.Lexer(); StreamReader file = new StreamReader(path); string contents = file.ReadToEnd(); List <Token> tokens = lexer.Lex(contents); Console.WriteLine("Lexed \"" + path.Split("/").Last() + "\""); if (debugLevel > 0) { foreach (Token token in tokens) { Console.WriteLine(token.ToString()); } } return(tokens); }
public static void Main() { var reader = new StreamReader(PATH_DATA); var lexer = new Lexer.Lexer(PATH_IDENTIFICATOR, PATH_NUMBER10, PATH_NUMBER2816); //var generator = new Generator.Generator(); var finder = new DirSetFinder(); finder.Find(); /*string line; * while ((line = reader.ReadLine()) != null) * { * var lexerInfo = lexer.GetLexerInfo(line); * foreach (var item in lexerInfo) * { * Console.WriteLine("Value: " + item.Value + " => Type: " + item.Type + ", IsReserve: " + item.IsReserve); * } * var recDown = new RecDown.RecDown(lexerInfo); * Console.WriteLine("Var is valid: " + recDown.CheckVar()); * }*/ }