private static Tuple <bool, bool, bool, bool> Debug_Semantic(string text) { AST.Program ast = (AST.Program)GetAST.Show(text); //Program.DFS(ast); bool check_def = false; bool check_types = false; bool check_sym = false; bool check_inherits = false; var DefChecker = new DefinitionsChecker(); check_def = DefChecker.Visit(ast); if (check_def) { Dictionary <string, IType> types = IType.GetAllTypes(ast); check_inherits = InheritsChecker.Check(ast, types); if (check_inherits) { ContextType context = new ContextType(types); var SymChecker = new SymCheckerVisitor(context); check_sym = SymChecker.Visit(ast); if (check_sym) { context = new ContextType(types); var TypeCheck = new TypeCheckerVisitor(context); TypeCheck.Visit(ast); check_types = TypeCheck.Logger == ""; } } } return(new Tuple <bool, bool, bool, bool>(check_def, check_sym, check_types, check_inherits)); }
static void Main1(string[] args) { StreamReader x = new StreamReader("a.txt"); string adsa = x.ReadToEnd(); Console.WriteLine(adsa); DFS(GetAST.Show(adsa)); }
static void Main(string[] args) { StreamReader x = new StreamReader("a.txt"); string text = x.ReadToEnd(); //Debug_Semantic_Files_Success(); //Debug_Semantic_Files_Fails(); AST.Program ast = (AST.Program)GetAST.Show(text); Program.DFS(ast); var DefChecker = new DefinitionsChecker(); bool check = DefChecker.Visit(ast); Console.WriteLine(DefChecker.Logger); if (check) { Console.WriteLine("Definiciones OK"); Dictionary <string, IType> types = IType.GetAllTypes(ast); bool check_inherits = InheritsChecker.Check(ast, types); if (check_inherits) { Console.WriteLine("Herencia OK"); ContextType context = new ContextType(types); var SymChecker = new SymCheckerVisitor(context); bool check_sym = SymChecker.Visit(ast); Console.WriteLine(SymChecker.Logger); if (check_sym) { Console.WriteLine("Simbolos OK"); context = new ContextType(types); var TypeCheck = new TypeCheckerVisitor(context); TypeCheck.Visit(ast); Console.WriteLine(TypeCheck.Logger); } else { Console.WriteLine("Simbolos al berro"); } } else { Console.WriteLine("Herencia al berro"); } } else { Console.WriteLine("Definiciones al berro"); } }
static void Main(string[] args) { StreamReader x = new StreamReader("../../../cool.cl"); string adsa = x.ReadToEnd(); Console.WriteLine(adsa); var ast = GetAST.Show(adsa); if (ast == null) { Console.ReadLine(); return; } var arg = (AST.Program)ast; if (Test_Semantic.Check(arg)) { var cil = GET_CIL_AST.CIL(arg); Console.WriteLine(cil); var visitorCIL = new CilToMips(IType.GetAllTypes(arg)); visitorCIL.Accept(cil); var data = visitorCIL.Data.Split('\n'); var text = visitorCIL.Text.Split('\n'); StreamWriter mipStreamWriter = new StreamWriter("../../../mips.s"); foreach (var s in data) { mipStreamWriter.WriteLine(s); } foreach (var s in text) { mipStreamWriter.WriteLine(s); } mipStreamWriter.Close(); } Console.ReadLine(); }