⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dosyacc.c

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 C
字号:
/* Copyright: (c) Julian Smart *//* Licence:   wxWindows Licence *//* include platform.h first to get __WIN32__ definition */#include "wx/platform.h"#include "wx/setup.h"#include "wx/deprecated/setup.h"#if !defined(wxUSE_PROLOGIO) || wxUSE_PROLOGIO#ifdef __VISUALC__    #pragma warning(push)    #pragma warning(disable:4244) /* warning C4244: '=' : conversion from 'A' to 'B', possible loss of data */#endif#if !defined(lint) && 0static char yysccsid[] = "@(#)yaccpar     1.7 (Berkeley) 09/09/90";#endif#define YYBYACC 1// #line 2 "parser.y"#include "string.h"#if defined(_MSC_VER) || defined(__VISAGECPP__)#include <io.h>#endif#include "wx/deprecated/expr.h"#ifndef __EXTERN_C__#define __EXTERN_C__ 1#endif#if defined(__cplusplus) || defined(__STDC__)#if defined(__cplusplus) && defined(__EXTERN_C__)extern "C" {#endif#endifint yylex(void);int yylook(void);int yywrap(void);int yyback(int *, int);/* You may need to put /DLEX_SCANNER in your makefile * if you're using LEX! */#ifdef LEX_SCANNER/* int yyoutput(int); */void yyoutput(int);#elsevoid yyoutput(int);#endif#if defined(__cplusplus) || defined(__STDC__)#if defined(__cplusplus) && defined(__EXTERN_C__)}#endif#endif// #line 36 "parser.y"typedef union {    char *s;/*    struct pexpr *expr; */} YYSTYPE;// #line 44 "y_tab.c"#define INTEGER 1#define WORD 2#define STRING 3#define PERIOD 13#define OPEN 4#define CLOSE 5#define COMMA 6#define NEWLINE 7#define ERROR 8#define OPEN_SQUARE 9#define CLOSE_SQUARE 10#define EQUALS 11#define EXP 14#define YYERRCODE 256short yylhs[] = {                                        -1,    0,    0,    1,    1,    1,    2,    2,    2,    3,    3,    3,    4,    4,    5,    5,    5,    5,    5,    5,    5,};short yylen[] = {                                         2,    0,    2,    2,    2,    2,    4,    2,    3,    0,    1,    3,    3,    1,    1,    1,    1,    3,    3,    5,    1,};short yydefred[] = {                                      1,    0,    0,    0,    0,    2,    0,    5,    3,    0,    0,    0,   15,    7,   20,    0,    0,   13,    4,    0,    0,    0,    0,    8,    0,    6,    0,   18,    0,   12,   11,    0,   19,};short yydgoto[] = {                                       1,    5,   14,   15,   16,   17,};short yysindex[] = {                                      0,   -2,    9,    2,    1,    0,   10,    0,    0,   11,   -5,   17,    0,    0,    0,   14,   -1,    0,    0,   33,   38,   41,   16,    0,   11,    0,   29,    0,   40,    0,    0,   44,    0,};short yyrindex[] = {                                      0,    0,    0,    0,    0,    0,    0,    0,    0,   42,   21,   24,    0,    0,    0,    0,   30,    0,    0,    0,    0,    0,    0,    0,   31,    0,   27,    0,   24,    0,    0,    0,    0,};short yygindex[] = {                                      0,    0,   45,   -8,    0,   26,};#define YYTABLESIZE 254short yytable[] = {                                       3,   19,   10,   11,   12,   24,    9,    4,   20,   21,    4,   13,   10,   11,   12,    8,   30,   10,   28,   12,    4,    9,    7,   18,   23,    4,   16,   16,   22,   14,   14,   16,   17,   17,   14,   10,    9,   17,   25,   26,   10,    9,   27,   31,    9,   32,    6,    9,   29,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    2,};short yycheck[] = {                                       2,    9,    1,    2,    3,    6,    4,    9,   13,   14,    9,   10,    1,    2,    3,   13,   24,    1,    2,    3,    9,    4,   13,   13,   10,    9,    5,    6,   11,    5,    6,   10,    5,    6,   10,    5,    5,   10,    5,    1,   10,   10,    1,   14,    4,    1,    1,    5,   22,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  256,};#define YYFINAL 1#ifndef YYDEBUG#define YYDEBUG 0#endif#define YYMAXTOKEN 14#if YYDEBUGchar *yyname[] = {"end-of-file","INTEGER","WORD","STRING","OPEN","CLOSE","COMMA","NEWLINE","ERROR","OPEN_SQUARE","CLOSE_SQUARE","EQUALS",0,"PERIOD","EXP",};char *yyrule[] = {"$accept : commands","commands :","commands : commands command","command : WORD PERIOD","command : expr PERIOD","command : error PERIOD","expr : WORD OPEN arglist CLOSE","expr : OPEN_SQUARE CLOSE_SQUARE","expr : OPEN_SQUARE arglist CLOSE_SQUARE","arglist :","arglist : arg","arglist : arg COMMA arglist","arg : WORD EQUALS arg1","arg : arg1","arg1 : WORD","arg1 : STRING","arg1 : INTEGER","arg1 : INTEGER PERIOD INTEGER","arg1 : INTEGER EXP INTEGER","arg1 : INTEGER PERIOD INTEGER EXP INTEGER","arg1 : expr",};#endif#define yyclearin (yychar=(-1))#define yyerrok (yyerrflag=0)#ifdef YYSTACKSIZE#ifndef YYMAXDEPTH#define YYMAXDEPTH YYSTACKSIZE#endif#else#ifdef YYMAXDEPTH#define YYSTACKSIZE YYMAXDEPTH#else#define YYSTACKSIZE 600#define YYMAXDEPTH 600#endif#endifint yydebug;int yynerrs;int yyerrflag;int yychar;short *yyssp;YYSTYPE *yyvsp;YYSTYPE yyval;YYSTYPE yylval;short yyss[YYSTACKSIZE];YYSTYPE yyvs[YYSTACKSIZE];#define yystacksize YYSTACKSIZE// #line 118 "parser.y"#include "doslex.c"/*void yyerror(s)char *s;{  syntax_error(s);}*//* Ansi prototype. If this doesn't work for you... uncomment   the above instead. */void yyerror(char *s){  syntax_error(s);}/* * Unfortunately, my DOS version of FLEX * requires yywrap to be #def'ed, whereas * the UNIX flex expects a proper function. *//* Not sure if __SC__ is the appropriate thing * to test */#if 0 /* VS: doesn't work... */#ifndef __SC__#ifdef USE_DEFINE#ifndef yywrap#define yywrap() 1#endif#else#  if !(defined(__VISAGECPP__) && __IBMC__ >= 400)/* VA 4.0 thinks this is multiply defined (in lex_yy.c) */   int yywrap() { return 1; }#  endif#endif#endif#endif// #line 247 "y_tab.c"#define YYABORT goto yyabort#define YYACCEPT goto yyaccept#define YYERROR goto yyerrlabintPROIO_yyparse(){    register int yym, yyn, yystate;#if YYDEBUG    register char *yys;    extern char *getenv();    yys = getenv("YYDEBUG");    if (yys)    {        yyn = *yys;        if (yyn >= '0' && yyn <= '9')            yydebug = yyn - '0';    }#endif    yynerrs = 0;    yyerrflag = 0;    yychar = (-1);    yyssp = yyss;    yyvsp = yyvs;    *yyssp = yystate = 0;yyloop:    yyn = yydefred[yystate];    if (yyn != 0) goto yyreduce;    if (yychar < 0)    {        if ((yychar = yylex()) < 0) yychar = 0;#if YYDEBUG        if (yydebug)        {            yys = 0;            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];            if (!yys) yys = "illegal-symbol";            printf("yydebug: state %d, reading %d (%s)\n", yystate,                    yychar, yys);        }#endif    }    yyn = yysindex[yystate];    if ((yyn) && (yyn += yychar) >= 0 &&            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)    {#if YYDEBUG        if (yydebug)            printf("yydebug: state %d, shifting to state %d\n",                    yystate, yytable[yyn]);#endif        if (yyssp >= yyss + yystacksize - 1)        {            goto yyoverflow;        }        *++yyssp = yystate = yytable[yyn];        *++yyvsp = yylval;        yychar = (-1);        if (yyerrflag > 0)  --yyerrflag;        goto yyloop;    }    yyn = yyrindex[yystate];    if ((yyn) && (yyn += yychar) >= 0 &&            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)    {        yyn = yytable[yyn];        goto yyreduce;    }    if (yyerrflag) goto yyinrecovery;#ifdef lint    goto yynewerror;yynewerror:#endif    yyerror("syntax error");#ifdef lint    goto yyerrlab;yyerrlab:#endif    ++yynerrs;yyinrecovery:    if (yyerrflag < 3)    {        yyerrflag = 3;        for (;;)        {            yyn = yysindex[*yyssp];            if ((yyn) && (yyn += YYERRCODE) >= 0 &&                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)            {#if YYDEBUG                if (yydebug)                    printf("yydebug: state %d, error recovery shifting\ to state %d\n", *yyssp, yytable[yyn]);#endif                if (yyssp >= yyss + yystacksize - 1)                {                    goto yyoverflow;                }                *++yyssp = yystate = yytable[yyn];                *++yyvsp = yylval;                goto yyloop;            }            else            {#if YYDEBUG                if (yydebug)                    printf("yydebug: error recovery discarding state %d\n",                            *yyssp);#endif                if (yyssp <= yyss) goto yyabort;                --yyssp;                --yyvsp;            }        }    }    else    {        if (yychar == 0) goto yyabort;#if YYDEBUG        if (yydebug)        {            yys = 0;            if (yychar <= YYMAXTOKEN) yys = yyname[yychar];            if (!yys) yys = "illegal-symbol";            printf("yydebug: state %d, error recovery discards token %d (%s)\n",                    yystate, yychar, yys);        }#endif        yychar = (-1);        goto yyloop;    }yyreduce:#if YYDEBUG    if (yydebug)        printf("yydebug: state %d, reducing by rule %d (%s)\n",                yystate, yyn, yyrule[yyn]);#endif    yym = yylen[yyn];    yyval = yyvsp[1-yym];    switch (yyn)    {case 3:// #line 68 "parser.y"{process_command(proio_cons(wxmake_word(yyvsp[-1].s), NULL)); free(yyvsp[-1].s);}break;case 4:// #line 70 "parser.y"{process_command(yyvsp[-1].s);}break;case 5:// #line 72 "parser.y"{syntax_error("Unrecognized command.");}break;case 6:// #line 76 "parser.y"{yyval.s = proio_cons(wxmake_word(yyvsp[-3].s), yyvsp[-1].s); free(yyvsp[-3].s);}break;case 7:// #line 78 "parser.y"{yyval.s = proio_cons(NULL, NULL);}break;case 8:// #line 80 "parser.y"{yyval.s = yyvsp[-1].s; }break;case 9:// #line 84 "parser.y"{yyval.s = NULL;}break;case 10:// #line 86 "parser.y"{yyval.s = proio_cons(yyvsp[0].s, NULL);}break;case 11:// #line 89 "parser.y"{yyval.s = proio_cons(yyvsp[-2].s, yyvsp[0].s);}break;case 12:// #line 93 "parser.y"{yyval.s = proio_cons(wxmake_word("="), proio_cons(wxmake_word(yyvsp[-2].s), proio_cons(yyvsp[0].s, NULL)));                         free(yyvsp[-2].s); }break;case 13:// #line 96 "parser.y"{yyval.s = yyvsp[0].s; }break;case 14:// #line 99 "parser.y"{yyval.s = wxmake_word(yyvsp[0].s); free(yyvsp[0].s);}break;case 15:// #line 101 "parser.y"{yyval.s = wxmake_string(yyvsp[0].s); free(yyvsp[0].s);}break;case 16:// #line 103 "parser.y"{yyval.s = wxmake_integer(yyvsp[0].s); free(yyvsp[0].s);}break;case 17:// #line 105 "parser.y"{yyval.s = wxmake_real(yyvsp[-2].s, yyvsp[0].s); free(yyvsp[-2].s); free(yyvsp[0].s); }break;case 18:// #line 107 "parser.y"{yyval.s = wxmake_exp(yyvsp[-2].s, yyvsp[0].s); free(yyvsp[-2].s); free(yyvsp[0].s); }break;case 19:// #line 110 "parser.y"{yyval.s = wxmake_exp2(yyvsp[-4].s, yyvsp[-2].s, yyvsp[0].s); free(yyvsp[-4].s); free(yyvsp[-2].s);                                                                  free(yyvsp[0].s); }break;case 20:// #line 114 "parser.y"{yyval.s = yyvsp[0].s;}break;// #line 461 "y_tab.c"    }    yyssp -= yym;    yystate = *yyssp;    yyvsp -= yym;    yym = yylhs[yyn];    if (yystate == 0 && yym == 0)    {#if YYDEBUG        if (yydebug)            printf("yydebug: after reduction, shifting from state 0 to\ state %d\n", YYFINAL);#endif        yystate = YYFINAL;        *++yyssp = YYFINAL;        *++yyvsp = yyval;        if (yychar < 0)        {            if ((yychar = yylex()) < 0) yychar = 0;#if YYDEBUG            if (yydebug)            {                yys = 0;                if (yychar <= YYMAXTOKEN) yys = yyname[yychar];                if (!yys) yys = "illegal-symbol";                printf("yydebug: state %d, reading %d (%s)\n",                        YYFINAL, yychar, yys);            }#endif        }        if (yychar == 0) goto yyaccept;        goto yyloop;    }    yyn = yygindex[yym];    if ((yyn) && (yyn += yystate) >= 0 &&            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)        yystate = yytable[yyn];    else        yystate = yydgoto[yym];#if YYDEBUG    if (yydebug)        printf("yydebug: after reduction, shifting from state %d \to state %d\n", *yyssp, yystate);#endif    if (yyssp >= yyss + yystacksize - 1)    {        goto yyoverflow;    }    *++yyssp = yystate;    *++yyvsp = yyval;    goto yyloop;yyoverflow:    yyerror("yacc stack overflow");yyabort:    return (1);yyaccept:    return (0);}#ifdef __VISUALC__    #pragma warning(pop)#endif#endif /* wxUSE_PROLOGIO */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -