Exemple #1
0
 static void yy_reduce_proc(YY_PARSER pParser, int yyrule, YY_MINOR_TYPE yypgotominor, YY_STACK_ENTRY [] yystack)
 {
     if (reduceprocs[yyrule] != null)
     {
         reduceprocs[yyrule].reduce_proc(pParser, yypgotominor, yystack);
     }
 }
Exemple #2
0
 static void yy_destructor(int yymajor, YY_MINOR_TYPE yypminor)
 {
     if (freeprocs[yymajor] != null)
     {
         freeprocs[yymajor].destructor_proc(yypminor);
     }
 }
Exemple #3
0
    /* syntax error */
    static void yy_syntax_error(YY_PARSER pParser, int yymajor, YY_MINOR_TYPE yypminor)
    {
/* #line 13 "gram.y" */

        Console.WriteLine("Syntax Error! \n By Shift " + yymajor + " value(" + yypminor.yy_11 + ")");

/* #line 463 "yy_table.cs" */
    }
Exemple #4
0
        /* reduce function */
        public void reduce_proc(YY_PARSER pParser, YY_MINOR_TYPE yypgotominor, YY_STACK_ENTRY [] yystack)
        {
/* #line 34 "gram.y" */

            yypgotominor.yy_11 = yystack[pParser.yystack_top + (-2)].yyminor.yy_11 * yystack[pParser.yystack_top + (0)].yyminor.yy_11;

/* #line 212 "yy_table.cs" */
        }
Exemple #5
0
        /* reduce function */
        public void reduce_proc(YY_PARSER pParser, YY_MINOR_TYPE yypgotominor, YY_STACK_ENTRY [] yystack)
        {
/* #line 22 "gram.y" */

            Console.WriteLine("Result = " + yystack[pParser.yystack_top + (0)].yyminor.yy_11);

/* #line 179 "yy_table.cs" */
        }
Exemple #6
0
        /* reduce function */
        public void reduce_proc(YY_PARSER pParser, YY_MINOR_TYPE yypgotominor, YY_STACK_ENTRY [] yystack)
        {
/* #line 38 "gram.y" */

            if (yystack[pParser.yystack_top + (0)].yyminor.yy_11 != 0)
            {
                yypgotominor.yy_11 = yystack[pParser.yystack_top + (-2)].yyminor.yy_11 / yystack[pParser.yystack_top + (0)].yyminor.yy_11;
            }
            else
            {
                Console.WriteLine("Divide by zero!");
            }

/* #line 226 "yy_table.cs" */
        }
Exemple #7
0
    static void yy_reduce(YY_PARSER pParser, int yyrule)
    {
        int yygoto;
        int yyaction;
        int yysize;

        YY_MINOR_TYPE yygotominor = new YY_MINOR_TYPE();

        if (DEBUG != 0)
        {
            if (yytraceWriter != null && yyrule >= 0 && yyrule < yy_ruleName.Length) /* missing realloc process or realloc stack failure */
            {
                yy_traceFile(yytraceWriter, yytracePrompt + "Reduce [" + yy_ruleName[yyrule] + "]\r\n");
            }
        } /* DEBUG */

        yy_reduce_proc(pParser, yyrule, yygotominor, pParser.yystack); /* invoke reduce code */

        yygoto = yyruleInfo[yyrule].lhs;
        yysize = yyruleInfo[yyrule].nrhs;

        yyaction             = yy_find_reduce_action(pParser.yystack[pParser.yystack_top - yysize].yystate, yygoto);
        pParser.yystack_top -= yysize;

        if (yyaction < YY_NSTATE)/* nonterminal shift so yyaction need less state number */

        {
            if (DEBUG != 0)
            {
                /* if not debugging direct shift action improve performance */
                pParser.yystack_top++;
                pParser.yystack[pParser.yystack_top].yystate = yyaction;
                pParser.yystack[pParser.yystack_top].yymajor = yygoto;
                pParser.yystack[pParser.yystack_top].yyminor = yygotominor;
            } /* DEBUG */
            else
            {
                yy_shift(pParser, yyaction, yygoto, yygotominor);
            }
        }
        else if (yyaction == YY_ACCEPT_ACTION)
        {
            yy_accept(pParser);
        }
    }
Exemple #8
0
    static void yy_shift(YY_PARSER pParser, int yynewState, int yymajor, YY_MINOR_TYPE yypminor)
    {
        pParser.yystack_top++;

        if (pParser.yystack_top >= pParser.yystack_depth)
        {
            if (DEBUG != 0)
            {
                if (yytraceWriter != null) /* trace stack overflow */
                {
                    yy_traceFile(yytraceWriter, yytracePrompt + "Stack Overflow ! Try realloc stack.\r\n");
                }
            } /* DEBUG */
            YY_STACK_ENTRY [] yystack = pParser.yystack;
            pParser.yystack = new YY_STACK_ENTRY[pParser.yystack_depth * 2];
            /* move to new stack */
            for (int i = 0; i < pParser.yystack_depth; i++)
            {
                pParser.yystack[i] = yystack[i];
            }
            pParser.yystack_depth *= 2;
        }
        /* entry stack */

        pParser.yystack[pParser.yystack_top]         = new YY_STACK_ENTRY();
        pParser.yystack[pParser.yystack_top].yystate = yynewState;
        pParser.yystack[pParser.yystack_top].yymajor = yymajor;
        pParser.yystack[pParser.yystack_top].yyminor = yypminor;

        if (DEBUG != 0)
        {
            if (yytraceWriter != null && pParser.yystack_top > 0)
            {
                int i;
                yy_traceFile(yytraceWriter, yytracePrompt + "Shift " + get_symbolName(yymajor) + " => State(" + yynewState + ")\r\n");
                yy_traceFile(yytraceWriter, yytracePrompt + "Stack:");
                for (i = 0; i <= pParser.yystack_top; i++)
                {
                    yy_traceFile(yytraceWriter, " " + get_symbolName(pParser.yystack[i].yymajor));
                }
                yy_traceFile(yytraceWriter, "\r\n");
            }
        } /* DEBUG */
    }
Exemple #9
0
    public static void Parse(Object yypParser, int yymajor, int yyminor)
    {
        YY_MINOR_TYPE yyminorunion = new YY_MINOR_TYPE();
        YY_PARSER     pParser;
        bool          yyendofinput;
        int           yyaction;

        pParser = (YY_PARSER)yypParser;

        /* initialize */
        if (pParser.yystack_top < 0)
        {
            pParser.yystack_top        = 0;
            pParser.yyerr_count        = -1;
            pParser.yystack[0]         = new  YY_STACK_ENTRY();
            pParser.yystack[0].yymajor = 0; /* '#' */
            pParser.yystack[0].yystate = 0; /* state number */
        }
        /* yyminorunion.yy_%d = yyminor; */
        yyminorunion.yy_11 = yyminor;
        yyendofinput       = (yymajor == 0);

        if (DEBUG != 0)
        {
            if (yytraceWriter != null)
            {
                yy_traceFile(yytraceWriter, yytracePrompt + "Input " + get_symbolName(yymajor) + "\r\n");
            }
        } /* DEBUG */

        do
        {
            yyaction = yy_find_shift_action(pParser, yymajor);

            if (yyaction < YY_NSTATE)
            {
                yy_shift(pParser, yyaction, yymajor, yyminorunion);
                pParser.yyerr_count--;
                if (yyendofinput == true && pParser.yystack_top >= 0)
                {
                    yymajor = 0;
                }
                else
                {
                    yymajor = YY_NSYMBOL; /* end of loop flag for shift after reduce action */
                }
            }
            else if (yyaction < YY_NSTATE + YY_NRULE)
            {
                yy_reduce(pParser, yyaction - YY_NSTATE); /* shift nt for next loop yy_find_shift_action find lookahead(yymajor) reduce rule */
            }
            else if (yyaction == YY_ERROR_ACTION)
            {
                if (DEBUG != 0)
                {
                    if (yytraceWriter != null)
                    {
                        yy_traceFile(yytraceWriter, yytracePrompt + "Syntax Error!\r\n");
                    }
                } /* DEBUG */

                if (pParser.yyerr_count <= 0)
                {
                    yy_syntax_error(pParser, yymajor, yyminorunion);
                }
                pParser.yyerr_count = 3;              /* 3 times error only show 1 time */
                yy_destructor(yymajor, yyminorunion); /* drop the cause of the error token(yymajor) */

                if (yyendofinput == true)
                {
                    yy_parse_failed(pParser);
                }
                yymajor = YY_NSYMBOL;
            }
            else
            {
                yy_accept(pParser);
                yymajor = YY_NSYMBOL;
            }
        }while(yymajor != YY_NSYMBOL && pParser.yystack_top >= 0);
    }
Exemple #10
0
 /* destructor function */
 public void destructor_proc(YY_MINOR_TYPE yypminor)
 {
 }