Пример #1
0
    }         // NT_ActParList

    private static void NT_IfStat()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1: // SEM
                mc++;
                break;

            case 2:
                NT_Expr();
                break;

            case 3:
                NT_Stat();
                break;

            case 4: // SEM
                mc++;
                break;

            case 5:
                NT_Stat();
                break;
            } // switch
        }     // for
    }         // NT_IfStat
Пример #2
0
    // *** end of global SYN and SEM declarations from ATG ***



    private static void NT_MiniCPP()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1:
                NT_ConstDecl();
                break;

            case 2:
                NT_VarDefOrFuncDeclOrDef();
                break;

            case 3: // SEM
                Console.WriteLine($"Lines of code:        {MiniCPPLex.tokenLine - 1}");
                Console.WriteLine($"Lines of statements:  {stc}");
                Console.WriteLine($"Complexity by McCabe: {mc}");

                break;
            } // switch
        }     // for
    }         // NT_MiniCPP
Пример #3
0
    }         // NT_Stat

    private static void NT_IdentStat()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1:
                Lex.GETidentAttr();
                break;

            case 2:
                NT_Expr();
                break;

            case 3:
                NT_Expr();
                break;

            case 4:
                NT_ActParList();
                break;
            } // switch
        }     // for
    }         // NT_IdentStat
Пример #4
0
    }         // NT_NonVoidType

    private static void NT_Block()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1:
                NT_ConstDecl();
                break;

            case 2:
                NT_Type();
                break;

            case 3:
                Lex.GETidentAttr();
                break;

            case 4:
                NT_VarDef();
                break;

            case 5:
                NT_Stat();
                break;
            } // switch
        }     // for
    }         // NT_Block
Пример #5
0
    }         // NT_MiniCPP

    private static void NT_VarDefOrFuncDeclOrDef()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1:
                NT_Type();
                break;

            case 2:
                Lex.GETidentAttr();
                break;

            case 3:
                NT_VarDef();
                break;

            case 4:
                NT_FuncHead();
                break;

            case 5:
                NT_Block();
                break;
            } // switch
        }     // for
    }         // NT_VarDefOrFuncDeclOrDef
Пример #6
0
    }         // NT_InputStat

    private static void NT_OutputStat()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1:
                NT_Expr();
                break;

            case 2:
                Lex.GETstringAttr();
                break;

            case 3:
                NT_Expr();
                break;

            case 4:
                Lex.GETstringAttr();
                break;
            } // switch
        }     // for
    }         // NT_OutputStat
Пример #7
0
    }         // NT_Type

    private static void NT_NonVoidType()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;
            } // switch
        }     // for
    }         // NT_NonVoidType
Пример #8
0
    }         // NT_WhileStat

    private static void NT_BreakStat()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;
            } // switch
        }     // for
    }         // NT_BreakStat
Пример #9
0
    }         // NT_Block

    private static void NT_Stat()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1: // SEM
                stc++;
                break;

            case 2:
                NT_IdentStat();
                break;

            case 3:
                NT_IfStat();
                break;

            case 4:
                NT_WhileStat();
                break;

            case 5:
                NT_BreakStat();
                break;

            case 6:
                NT_InputStat();
                break;

            case 7:
                NT_OutputStat();
                break;

            case 8:
                NT_DeleteStat();
                break;

            case 9:
                NT_ReturnStat();
                break;

            case 10:
                NT_Block();
                break;
            } // switch
        }     // for
    }         // NT_Stat
Пример #10
0
    }         // NT_VarDef

    private static void NT_FuncHead()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1:
                NT_FormParList();
                break;
            } // switch
        }     // for
    }         // NT_FuncHead
Пример #11
0
    }         // NT_ConstDecl

    private static void NT_Init()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1:
                Lex.GETnumberAttr();
                break;
            } // switch
        }     // for
    }         // NT_Init
Пример #12
0
    }         // NT_Term

    private static void NT_NotFact()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1:
                NT_Fact();
                break;
            } // switch
        }     // for
    }         // NT_NotFact
Пример #13
0
    }         // NT_DeleteStat

    private static void NT_ReturnStat()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1:
                NT_Expr();
                break;
            } // switch
        }     // for
    }         // NT_ReturnStat
Пример #14
0
    }         // NT_OutputStat

    private static void NT_DeleteStat()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1:
                Lex.GETidentAttr();
                break;
            } // switch
        }     // for
    }         // NT_DeleteStat
Пример #15
0
    public static void StartSem()
    {
        //-----------------------------------|----------------------------------------
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1:
                NT_MiniCPP();
                break;
            } // switch
        }     // for
    }         // StartSem
Пример #16
0
    }         // NT_RelExpr

    private static void NT_SimpleExpr()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1:
                NT_Term();
                break;

            case 2:
                NT_Term();
                break;
            } // switch
        }     // for
    }         // NT_SimpleExpr
Пример #17
0
    }         // NT_NotFact

    private static void NT_Fact()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1:
                Lex.GETnumberAttr();
                break;

            case 2:
                Lex.GETidentAttr();
                break;

            case 3:
                NT_Expr();
                break;

            case 4:
                NT_ActParList();
                break;

            case 5:
                NT_Type();
                break;

            case 6:
                NT_Expr();
                break;

            case 7:
                NT_Expr();
                break;
            } // switch
        }     // for
    }         // NT_Fact
Пример #18
0
    }         // NT_FuncHead

    private static void NT_FormParList()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1:
                NT_FormParListRest();
                break;

            case 2:
                NT_NonVoidType();
                break;

            case 3:
                NT_FormParListRest();
                break;
            } // switch
        }     // for
    }         // NT_FormParList
Пример #19
0
    }         // NT_FormParList

    private static void NT_FormParListRest()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1:
                Lex.GETidentAttr();
                break;

            case 2:
                NT_Type();
                break;

            case 3:
                Lex.GETidentAttr();
                break;
            } // switch
        }     // for
    }         // NT_FormParListRest
Пример #20
0
    }         // NT_Init

    private static void NT_VarDef()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1:
                NT_Init();
                break;

            case 2:
                Lex.GETidentAttr();
                break;

            case 3:
                NT_Init();
                break;
            } // switch
        }     // for
    }         // NT_VarDef
Пример #21
0
    }     // Abort

    private static int CompileFile(String srcFileName)
    {
        FileStream srcFs = null;

        try {
            srcFs = new FileStream(srcFileName, FileMode.Open);
        } catch (Exception) {
            Console.WriteLine("*** file \"{0}\" not found", srcFileName);
            return(Utils.EXIT_FAILURE);
        } // try/catch
        try {
            Lex.src = new StreamReader(srcFs);
            Console.WriteLine("parsing ...");
            Syn.Parse();
            Lex.src.Close();
            Lex.src.Dispose();
            Lex.src = null;
            if (Errors.NumOfErrors() > 0)
            {
                Console.WriteLine("listing ...");
                String     lstFileName = Path.ChangeExtension(srcFileName, ".lst");
                FileStream lstFs       = null;
                try {
                    lstFs = new FileStream(lstFileName, FileMode.Create);
                } catch (Exception) {
                    Utils.FatalError(NAME, "CompileFile", "file \"{0}\" not created", lstFileName);
                    return(Utils.EXIT_FAILURE);
                } // try/catch
                StreamWriter lstWriter = null;
                try {
                    lstWriter = new StreamWriter(lstFs);
                    StreamReader srcFsReader = null;
                    try { // open the source file a second time to generate the error listing
                        srcFsReader = new StreamReader(new FileStream(srcFileName, FileMode.Open));
                        lstWriter.WriteLine(NAME + " (file: \"{0}\")", srcFileName);
                        Errors.GenerateListing(srcFsReader, lstWriter, Errors.ListingShape.longListing);
                    } finally {
                        srcFsReader.Close();
                        srcFsReader.Dispose();
                    } // try/finally
                    Console.WriteLine("{0} error(s) detected", Errors.NumOfErrors());
                } finally {
                    lstWriter.Close();
                    lstWriter.Dispose();
                } // try/finally
            }
            else
            {
                Console.WriteLine("no errors detected");
            }
        } finally {
            if (Lex.src != null)
            {
                Lex.src.Close();
                Lex.src.Dispose();
                Lex.src = null;
            } // if
            Utils.Modules(Utils.ModuleAction.resetModule);
        }     // try/finally to make sure srcFs and srcReader are closed
        return(Utils.EXIT_SUCCESS);
    }         // CompileFile