Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        static void Main1(string[] args)
        {
            StreamReader x    = new StreamReader("a.txt");
            string       adsa = x.ReadToEnd();

            Console.WriteLine(adsa);
            DFS(GetAST.Show(adsa));
        }
Exemplo n.º 3
0
        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();
        }