Beispiel #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
Beispiel #2
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
Beispiel #3
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
Beispiel #4
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
Beispiel #5
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
Beispiel #6
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
Beispiel #7
0
    }         // NT_Type

    private static void NT_NonVoidType()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;
            } // switch
        }     // for
    }         // NT_NonVoidType
Beispiel #8
0
    }         // NT_WhileStat

    private static void NT_BreakStat()
    {
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;
            } // switch
        }     // for
    }         // NT_BreakStat
Beispiel #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
Beispiel #10
0
    }         // NT_ConstDecl

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

            case 1:
                Lex.GETnumberAttr();
                break;
            } // switch
        }     // for
    }         // NT_Init
Beispiel #11
0
    }         // NT_Term

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

            case 1:
                NT_Fact();
                break;
            } // switch
        }     // for
    }         // NT_NotFact
Beispiel #12
0
    }         // NT_DeleteStat

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

            case 1:
                NT_Expr();
                break;
            } // switch
        }     // for
    }         // NT_ReturnStat
Beispiel #13
0
    }         // NT_VarDef

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

            case 1:
                NT_FormParList();
                break;
            } // switch
        }     // for
    }         // NT_FuncHead
Beispiel #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
Beispiel #15
0
    public static void StartSem()
    {
        //-----------------------------------|----------------------------------------
        for (;;)
        {
            switch (Syn.Interpret())
            {
            case 0:
                return;

            case 1:
                NT_MiniCPP();
                break;
            } // switch
        }     // for
    }         // StartSem
Beispiel #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
Beispiel #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
Beispiel #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
Beispiel #19
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
Beispiel #20
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