static bool debug_new_types(string text) { var root = BuildAST_Cool.BUILD(text); var v0 = new CheckTypesVisitor(); return(v0.Visit(root)); bool r = true; try { r = v0.Visit(root); Console.WriteLine(r); } catch (Exception) { Console.WriteLine("Se partio debug types"); } Console.WriteLine(r + "types"); if (!r) { foreach (var item in v0.CurrErrorLoger.Log) { Console.WriteLine(item); } } return(r); }
public static Tuple <bool, ErrorLoger> SemanticChecking(Cool_Compiler.AST.AST_Root root) { var v0 = new CheckIDSandTypeDecVisitor(); if (v0.Visit(root)) { var v1 = new CheckClassesVisitor(); if (v1.Visit(root)) { var v2 = new CheckVariablesVisitor(); if (v2.Visit(root)) { var v3 = new CheckTypesVisitor(); if (v3.Visit(root)) { return(new Tuple <bool, ErrorLoger>(true, null)); } else { return(new Tuple <bool, ErrorLoger>(false, v3.CurrErrorLoger)); } } else { return(new Tuple <bool, ErrorLoger>(false, v2.CurrErrorLoger)); } } else { return(new Tuple <bool, ErrorLoger>(false, v1.CurrErrorLoger)); } } else { return(new Tuple <bool, ErrorLoger>(false, v0.CurrErrorLoger)); } }
public static Tuple <bool, bool, bool> Debug_Semantic(string text) { bool ans; var root = BuildAST_Cool.BUILD(text); //check variables var v1 = new CheckVariablesVisitor(); //try //{ // ans = v1.Visit(root); // Console.WriteLine("Checkeo de variables: {0}", ans); // if (!ans) // { // foreach (var item in v1.CurrErrorLoger.Log) // { // Console.WriteLine(item); // } // } //} //catch (Exception) //{ // Console.WriteLine("Se partio el checkeo de variables"); //} //check types var v2 = new CheckTypesVisitor(); //ans = v2.Visit(root); //try //{ // ans = v2.Visit(root); // Console.WriteLine("Checkeo de tipos: {0}", ans); // if (!ans) // { // foreach (var item in v2.CurrErrorLoger.Log) // { // Console.WriteLine(item); // } // } //} //catch (Exception) //{ // Console.WriteLine("Se partio el checkeo de tipos"); //} ////check classes var v3 = new CheckClassesVisitor(); //try //{ // ans = v3.Visit(root); // Console.WriteLine("Checkeo de classes: {0}", ans); // if (!ans) // { // foreach (var item in v3.CurrErrorLoger.Log) // { // Console.WriteLine(item); // } // } //} //catch (Exception) //{ // Console.WriteLine("Se partio el checkeo de classes"); //} return(new Tuple <bool, bool, bool>(v1.Visit(root), v2.Visit(root), v3.Visit(root))); }