Home | History | Annotate | Line # | Download | only in yacc
ok_syntax1.tab.c revision 1.1.1.4
      1  1.1.1.3  christos /*	$NetBSD: ok_syntax1.tab.c,v 1.1.1.4 2017/02/11 19:30:03 christos Exp $	*/
      2  1.1.1.3  christos 
      3      1.1  christos /* original parser id follows */
      4      1.1  christos /* yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93" */
      5      1.1  christos /* (use YYMAJOR/YYMINOR for ifdefs dependent on parser version) */
      6      1.1  christos 
      7      1.1  christos #define YYBYACC 1
      8      1.1  christos #define YYMAJOR 1
      9      1.1  christos #define YYMINOR 9
     10      1.1  christos #define YYCHECK "yyyymmdd"
     11      1.1  christos 
     12      1.1  christos #define YYEMPTY        (-1)
     13      1.1  christos #define yyclearin      (yychar = YYEMPTY)
     14      1.1  christos #define yyerrok        (yyerrflag = 0)
     15      1.1  christos #define YYRECOVERING() (yyerrflag != 0)
     16      1.1  christos #define YYENOMEM       (-2)
     17      1.1  christos #define YYEOF          0
     18      1.1  christos 
     19      1.1  christos #ifndef yyparse
     20      1.1  christos #define yyparse    ok_syntax1_parse
     21      1.1  christos #endif /* yyparse */
     22      1.1  christos 
     23      1.1  christos #ifndef yylex
     24      1.1  christos #define yylex      ok_syntax1_lex
     25      1.1  christos #endif /* yylex */
     26      1.1  christos 
     27      1.1  christos #ifndef yyerror
     28      1.1  christos #define yyerror    ok_syntax1_error
     29      1.1  christos #endif /* yyerror */
     30      1.1  christos 
     31      1.1  christos #ifndef yychar
     32      1.1  christos #define yychar     ok_syntax1_char
     33      1.1  christos #endif /* yychar */
     34      1.1  christos 
     35      1.1  christos #ifndef yyval
     36      1.1  christos #define yyval      ok_syntax1_val
     37      1.1  christos #endif /* yyval */
     38      1.1  christos 
     39      1.1  christos #ifndef yylval
     40      1.1  christos #define yylval     ok_syntax1_lval
     41      1.1  christos #endif /* yylval */
     42      1.1  christos 
     43      1.1  christos #ifndef yydebug
     44      1.1  christos #define yydebug    ok_syntax1_debug
     45      1.1  christos #endif /* yydebug */
     46      1.1  christos 
     47      1.1  christos #ifndef yynerrs
     48      1.1  christos #define yynerrs    ok_syntax1_nerrs
     49      1.1  christos #endif /* yynerrs */
     50      1.1  christos 
     51      1.1  christos #ifndef yyerrflag
     52      1.1  christos #define yyerrflag  ok_syntax1_errflag
     53      1.1  christos #endif /* yyerrflag */
     54      1.1  christos 
     55      1.1  christos #ifndef yylhs
     56      1.1  christos #define yylhs      ok_syntax1_lhs
     57      1.1  christos #endif /* yylhs */
     58      1.1  christos 
     59      1.1  christos #ifndef yylen
     60      1.1  christos #define yylen      ok_syntax1_len
     61      1.1  christos #endif /* yylen */
     62      1.1  christos 
     63      1.1  christos #ifndef yydefred
     64      1.1  christos #define yydefred   ok_syntax1_defred
     65      1.1  christos #endif /* yydefred */
     66      1.1  christos 
     67      1.1  christos #ifndef yydgoto
     68      1.1  christos #define yydgoto    ok_syntax1_dgoto
     69      1.1  christos #endif /* yydgoto */
     70      1.1  christos 
     71      1.1  christos #ifndef yysindex
     72      1.1  christos #define yysindex   ok_syntax1_sindex
     73      1.1  christos #endif /* yysindex */
     74      1.1  christos 
     75      1.1  christos #ifndef yyrindex
     76      1.1  christos #define yyrindex   ok_syntax1_rindex
     77      1.1  christos #endif /* yyrindex */
     78      1.1  christos 
     79      1.1  christos #ifndef yygindex
     80      1.1  christos #define yygindex   ok_syntax1_gindex
     81      1.1  christos #endif /* yygindex */
     82      1.1  christos 
     83      1.1  christos #ifndef yytable
     84      1.1  christos #define yytable    ok_syntax1_table
     85      1.1  christos #endif /* yytable */
     86      1.1  christos 
     87      1.1  christos #ifndef yycheck
     88      1.1  christos #define yycheck    ok_syntax1_check
     89      1.1  christos #endif /* yycheck */
     90      1.1  christos 
     91      1.1  christos #ifndef yyname
     92      1.1  christos #define yyname     ok_syntax1_name
     93      1.1  christos #endif /* yyname */
     94      1.1  christos 
     95      1.1  christos #ifndef yyrule
     96      1.1  christos #define yyrule     ok_syntax1_rule
     97      1.1  christos #endif /* yyrule */
     98      1.1  christos #define YYPREFIX "ok_syntax1_"
     99      1.1  christos 
    100      1.1  christos #define YYPURE 1
    101      1.1  christos 
    102      1.1  christos #line 9 "ok_syntax1.y"
    103      1.1  christos # include <stdio.h>
    104      1.1  christos # include <ctype.h>
    105      1.1  christos 
    106      1.1  christos #ifdef YYBISON
    107      1.1  christos #define YYSTYPE int
    108      1.1  christos #define YYLEX_PARAM base
    109      1.1  christos #define YYLEX_DECL() yylex(YYSTYPE *yylval, int *YYLEX_PARAM)
    110      1.1  christos #define YYERROR_DECL() yyerror(int regs[26], int *base, const char *s)
    111      1.1  christos int YYLEX_DECL();
    112      1.1  christos static void YYERROR_DECL();
    113      1.1  christos #endif
    114      1.1  christos 
    115      1.1  christos #ifdef YYSTYPE
    116      1.1  christos #undef  YYSTYPE_IS_DECLARED
    117      1.1  christos #define YYSTYPE_IS_DECLARED 1
    118      1.1  christos #endif
    119      1.1  christos #ifndef YYSTYPE_IS_DECLARED
    120      1.1  christos #define YYSTYPE_IS_DECLARED 1
    121  1.1.1.4  christos #line 43 "ok_syntax1.y"
    122      1.1  christos typedef union
    123      1.1  christos {
    124      1.1  christos     char *	cval;
    125      1.1  christos     int		ival;
    126      1.1  christos     double	dval;
    127      1.1  christos } YYSTYPE;
    128      1.1  christos #endif /* !YYSTYPE_IS_DECLARED */
    129      1.1  christos #line 128 "ok_syntax1.tab.c"
    130      1.1  christos 
    131      1.1  christos /* compatibility with bison */
    132      1.1  christos #ifdef YYPARSE_PARAM
    133      1.1  christos /* compatibility with FreeBSD */
    134      1.1  christos # ifdef YYPARSE_PARAM_TYPE
    135      1.1  christos #  define YYPARSE_DECL() yyparse(YYPARSE_PARAM_TYPE YYPARSE_PARAM)
    136      1.1  christos # else
    137      1.1  christos #  define YYPARSE_DECL() yyparse(void *YYPARSE_PARAM)
    138      1.1  christos # endif
    139      1.1  christos #else
    140      1.1  christos # define YYPARSE_DECL() yyparse(int regs[26], int *base)
    141      1.1  christos #endif
    142      1.1  christos 
    143      1.1  christos /* Parameters sent to lex. */
    144      1.1  christos #ifdef YYLEX_PARAM
    145      1.1  christos # ifdef YYLEX_PARAM_TYPE
    146      1.1  christos #  define YYLEX_DECL() yylex(YYSTYPE *yylval, YYLEX_PARAM_TYPE YYLEX_PARAM)
    147      1.1  christos # else
    148      1.1  christos #  define YYLEX_DECL() yylex(YYSTYPE *yylval, void * YYLEX_PARAM)
    149      1.1  christos # endif
    150      1.1  christos # define YYLEX yylex(&yylval, YYLEX_PARAM)
    151      1.1  christos #else
    152      1.1  christos # define YYLEX_DECL() yylex(YYSTYPE *yylval, int *base)
    153      1.1  christos # define YYLEX yylex(&yylval, base)
    154      1.1  christos #endif
    155      1.1  christos 
    156      1.1  christos /* Parameters sent to yyerror. */
    157      1.1  christos #ifndef YYERROR_DECL
    158      1.1  christos #define YYERROR_DECL() yyerror(int regs[26], int *base, const char *s)
    159      1.1  christos #endif
    160      1.1  christos #ifndef YYERROR_CALL
    161      1.1  christos #define YYERROR_CALL(msg) yyerror(regs, base, msg)
    162      1.1  christos #endif
    163      1.1  christos 
    164      1.1  christos extern int YYPARSE_DECL();
    165      1.1  christos 
    166      1.1  christos #define DIGIT 257
    167      1.1  christos #define LETTER 258
    168      1.1  christos #define OCT1 259
    169      1.1  christos #define HEX1 260
    170      1.1  christos #define HEX2 261
    171      1.1  christos #define HEX3 262
    172      1.1  christos #define STR1 263
    173      1.1  christos #define STR2 265
    174      1.1  christos #define BELL 266
    175      1.1  christos #define BS 267
    176      1.1  christos #define NL 268
    177      1.1  christos #define LF 269
    178      1.1  christos #define CR 270
    179      1.1  christos #define TAB 271
    180      1.1  christos #define VT 272
    181      1.1  christos #define UMINUS 273
    182      1.1  christos #define YYERRCODE 256
    183      1.1  christos typedef short YYINT;
    184      1.1  christos static const YYINT ok_syntax1_lhs[] = {                  -1,
    185      1.1  christos     0,    0,    0,    1,    1,    2,    2,    2,    2,    2,
    186      1.1  christos     2,    2,    2,    2,    2,    2,    3,    3,
    187      1.1  christos };
    188      1.1  christos static const YYINT ok_syntax1_len[] = {                   2,
    189      1.1  christos     0,    3,    3,    1,    3,    3,    3,    3,    3,    3,
    190      1.1  christos     3,    3,    3,    2,    1,    1,    1,    2,
    191      1.1  christos };
    192      1.1  christos static const YYINT ok_syntax1_defred[] = {                1,
    193      1.1  christos     0,    0,   17,    0,    0,    0,    0,    0,    0,    3,
    194      1.1  christos     0,   15,   14,    0,    2,    0,    0,    0,    0,    0,
    195      1.1  christos     0,    0,   18,    0,    6,    0,    0,    0,    0,    9,
    196      1.1  christos    10,   11,
    197      1.1  christos };
    198      1.1  christos static const YYINT ok_syntax1_dgoto[] = {                 1,
    199      1.1  christos     7,    8,    9,
    200      1.1  christos };
    201      1.1  christos static const YYINT ok_syntax1_sindex[] = {                0,
    202      1.1  christos   -40,   -7,    0,  -55,  -38,  -38,    1,  -29, -247,    0,
    203      1.1  christos   -38,    0,    0,   22,    0,  -38,  -38,  -38,  -38,  -38,
    204      1.1  christos   -38,  -38,    0,  -29,    0,   51,   60,  -20,  -20,    0,
    205      1.1  christos     0,    0,
    206      1.1  christos };
    207      1.1  christos static const YYINT ok_syntax1_rindex[] = {                0,
    208      1.1  christos     0,    0,    0,    2,    0,    0,    0,    9,   -9,    0,
    209      1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    210      1.1  christos     0,    0,    0,   10,    0,   -6,   14,    5,   13,    0,
    211      1.1  christos     0,    0,
    212      1.1  christos };
    213      1.1  christos static const YYINT ok_syntax1_gindex[] = {                0,
    214      1.1  christos     0,   65,    0,
    215      1.1  christos };
    216      1.1  christos #define YYTABLESIZE 220
    217      1.1  christos static const YYINT ok_syntax1_table[] = {                 6,
    218      1.1  christos    16,    6,   10,   13,    5,   11,    5,   22,   17,   23,
    219      1.1  christos    15,   15,   20,   18,    7,   19,   22,   21,    4,    5,
    220      1.1  christos     0,   20,    8,   12,    0,    0,   21,   16,   16,    0,
    221      1.1  christos     0,   16,   16,   16,   13,   16,    0,   16,   15,   15,
    222      1.1  christos     0,    0,    7,   15,   15,    7,   15,    7,   15,    7,
    223      1.1  christos     8,   12,    0,    8,   12,    8,    0,    8,   22,   17,
    224      1.1  christos     0,    0,   25,   20,   18,    0,   19,    0,   21,   13,
    225      1.1  christos    14,    0,    0,    0,    0,   24,    0,    0,    0,    0,
    226      1.1  christos    26,   27,   28,   29,   30,   31,   32,   22,   17,    0,
    227      1.1  christos     0,    0,   20,   18,   16,   19,   22,   21,    0,    0,
    228      1.1  christos     0,   20,   18,    0,   19,    0,   21,    0,    0,    0,
    229      1.1  christos     0,    0,    0,    0,   16,    0,    0,   13,    0,    0,
    230      1.1  christos     0,    0,    0,    0,    0,   15,    0,    0,    7,    0,
    231      1.1  christos     0,    0,    0,    0,    0,    0,    8,   12,    0,    0,
    232      1.1  christos     0,    0,    0,    0,    0,   16,    0,    0,    0,    0,
    233      1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    234      1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    235      1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    236      1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    237      1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    238      1.1  christos     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
    239      1.1  christos     0,    0,    0,    0,    0,    2,    3,    4,    3,   12,
    240      1.1  christos };
    241      1.1  christos static const YYINT ok_syntax1_check[] = {                40,
    242      1.1  christos    10,   40,   10,   10,   45,   61,   45,   37,   38,  257,
    243      1.1  christos    10,   10,   42,   43,   10,   45,   37,   47,   10,   10,
    244      1.1  christos    -1,   42,   10,   10,   -1,   -1,   47,   37,   38,   -1,
    245      1.1  christos    -1,   41,   42,   43,   41,   45,   -1,   47,   37,   38,
    246      1.1  christos    -1,   -1,   38,   42,   43,   41,   45,   43,   47,   45,
    247      1.1  christos    38,   38,   -1,   41,   41,   43,   -1,   45,   37,   38,
    248      1.1  christos    -1,   -1,   41,   42,   43,   -1,   45,   -1,   47,    5,
    249      1.1  christos     6,   -1,   -1,   -1,   -1,   11,   -1,   -1,   -1,   -1,
    250      1.1  christos    16,   17,   18,   19,   20,   21,   22,   37,   38,   -1,
    251      1.1  christos    -1,   -1,   42,   43,  124,   45,   37,   47,   -1,   -1,
    252      1.1  christos    -1,   42,   43,   -1,   45,   -1,   47,   -1,   -1,   -1,
    253      1.1  christos    -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,   -1,
    254      1.1  christos    -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,  124,   -1,
    255      1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,  124,  124,   -1,   -1,
    256      1.1  christos    -1,   -1,   -1,   -1,   -1,  124,   -1,   -1,   -1,   -1,
    257      1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    258      1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    259      1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    260      1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    261      1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    262      1.1  christos    -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
    263      1.1  christos    -1,   -1,   -1,   -1,   -1,  256,  257,  258,  257,  258,
    264      1.1  christos };
    265      1.1  christos #define YYFINAL 1
    266      1.1  christos #ifndef YYDEBUG
    267      1.1  christos #define YYDEBUG 0
    268      1.1  christos #endif
    269      1.1  christos #define YYMAXTOKEN 273
    270      1.1  christos #define YYUNDFTOKEN 279
    271      1.1  christos #define YYTRANSLATE(a) ((a) > YYMAXTOKEN ? YYUNDFTOKEN : (a))
    272      1.1  christos #if YYDEBUG
    273      1.1  christos static const char *const ok_syntax1_name[] = {
    274      1.1  christos 
    275      1.1  christos "end-of-file",0,0,0,0,0,0,"'\\a'","'\\b'","'\\t'","'\\n'","'\\v'","'\\f'",
    276      1.1  christos "'\\r'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'#'",0,"'%'","'&'",0,"'('",
    277      1.1  christos "')'","'*'","'+'",0,"'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,0,0,0,"'='",0,0,"'@'",0,0,
    278      1.1  christos 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,
    279      1.1  christos 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"'|'",0,"'~'","'\\177'",0,0,0,0,0,0,0,0,0,
    280      1.1  christos 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,
    281      1.1  christos 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,
    282      1.1  christos 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,
    283      1.1  christos "'\\377'",0,"DIGIT","LETTER","OCT1","HEX1","HEX2","HEX3","STR1",
    284      1.1  christos "\"\\177\\177\\\\\\n\"","STR2","BELL","BS","NL","LF","CR","TAB","VT","UMINUS",0,
    285      1.1  christos 0,0,0,0,"illegal-symbol",
    286      1.1  christos };
    287      1.1  christos static const char *const ok_syntax1_rule[] = {
    288      1.1  christos "$accept : list",
    289      1.1  christos "list :",
    290      1.1  christos "list : list stat '\\n'",
    291      1.1  christos "list : list error '\\n'",
    292      1.1  christos "stat : expr",
    293      1.1  christos "stat : LETTER '=' expr",
    294      1.1  christos "expr : '(' expr ')'",
    295      1.1  christos "expr : expr '+' expr",
    296      1.1  christos "expr : expr '-' expr",
    297      1.1  christos "expr : expr '*' expr",
    298      1.1  christos "expr : expr '/' expr",
    299      1.1  christos "expr : expr '%' expr",
    300      1.1  christos "expr : expr '&' expr",
    301      1.1  christos "expr : expr '|' expr",
    302      1.1  christos "expr : '-' expr",
    303      1.1  christos "expr : LETTER",
    304      1.1  christos "expr : number",
    305      1.1  christos "number : DIGIT",
    306      1.1  christos "number : number DIGIT",
    307      1.1  christos 
    308      1.1  christos };
    309      1.1  christos #endif
    310      1.1  christos 
    311      1.1  christos int      yydebug;
    312      1.1  christos int      yynerrs;
    313      1.1  christos 
    314      1.1  christos /* define the initial stack-sizes */
    315      1.1  christos #ifdef YYSTACKSIZE
    316      1.1  christos #undef YYMAXDEPTH
    317      1.1  christos #define YYMAXDEPTH  YYSTACKSIZE
    318      1.1  christos #else
    319      1.1  christos #ifdef YYMAXDEPTH
    320      1.1  christos #define YYSTACKSIZE YYMAXDEPTH
    321      1.1  christos #else
    322      1.1  christos #define YYSTACKSIZE 10000
    323      1.1  christos #define YYMAXDEPTH  10000
    324      1.1  christos #endif
    325      1.1  christos #endif
    326      1.1  christos 
    327      1.1  christos #define YYINITSTACKSIZE 200
    328      1.1  christos 
    329      1.1  christos typedef struct {
    330      1.1  christos     unsigned stacksize;
    331      1.1  christos     YYINT    *s_base;
    332      1.1  christos     YYINT    *s_mark;
    333      1.1  christos     YYINT    *s_last;
    334      1.1  christos     YYSTYPE  *l_base;
    335      1.1  christos     YYSTYPE  *l_mark;
    336      1.1  christos } YYSTACKDATA;
    337      1.1  christos #line 104 "ok_syntax1.y"
    338      1.1  christos  /* start of programs */
    339      1.1  christos 
    340      1.1  christos #ifdef YYBYACC
    341      1.1  christos extern int YYLEX_DECL();
    342      1.1  christos #endif
    343      1.1  christos 
    344      1.1  christos int
    345      1.1  christos main (void)
    346      1.1  christos {
    347      1.1  christos     int regs[26];
    348      1.1  christos     int base = 10;
    349      1.1  christos 
    350      1.1  christos     while(!feof(stdin)) {
    351      1.1  christos 	yyparse(regs, &base);
    352      1.1  christos     }
    353      1.1  christos     return 0;
    354      1.1  christos }
    355      1.1  christos 
    356      1.1  christos #define UNUSED(x) ((void)(x))
    357      1.1  christos 
    358      1.1  christos static void
    359      1.1  christos YYERROR_DECL()
    360      1.1  christos {
    361      1.1  christos     UNUSED(regs); /* %parse-param regs is not actually used here */
    362      1.1  christos     UNUSED(base); /* %parse-param base is not actually used here */
    363      1.1  christos     fprintf(stderr, "%s\n", s);
    364      1.1  christos }
    365      1.1  christos 
    366      1.1  christos int
    367      1.1  christos YYLEX_DECL()
    368      1.1  christos {
    369      1.1  christos 	/* lexical analysis routine */
    370      1.1  christos 	/* returns LETTER for a lower case letter, yylval = 0 through 25 */
    371      1.1  christos 	/* return DIGIT for a digit, yylval = 0 through 9 */
    372      1.1  christos 	/* all other characters are returned immediately */
    373      1.1  christos 
    374      1.1  christos     int c;
    375      1.1  christos 
    376      1.1  christos     while( (c=getchar()) == ' ' )   { /* skip blanks */ }
    377      1.1  christos 
    378      1.1  christos     /* c is now nonblank */
    379      1.1  christos 
    380      1.1  christos     if( islower( c )) {
    381      1.1  christos 	yylval->ival = (c - 'a');
    382      1.1  christos 	return ( LETTER );
    383      1.1  christos     }
    384      1.1  christos     if( isdigit( c )) {
    385      1.1  christos 	yylval->ival = (c - '0') % (*base);
    386      1.1  christos 	return ( DIGIT );
    387      1.1  christos     }
    388      1.1  christos     return( c );
    389      1.1  christos }
    390      1.1  christos #line 389 "ok_syntax1.tab.c"
    391      1.1  christos 
    392      1.1  christos #if YYDEBUG
    393  1.1.1.4  christos #include <stdio.h>	/* needed for printf */
    394      1.1  christos #endif
    395      1.1  christos 
    396      1.1  christos #include <stdlib.h>	/* needed for malloc, etc */
    397      1.1  christos #include <string.h>	/* needed for memset */
    398      1.1  christos 
    399      1.1  christos /* allocate initial stack or double stack size, up to YYMAXDEPTH */
    400      1.1  christos static int yygrowstack(YYSTACKDATA *data)
    401      1.1  christos {
    402      1.1  christos     int i;
    403      1.1  christos     unsigned newsize;
    404      1.1  christos     YYINT *newss;
    405      1.1  christos     YYSTYPE *newvs;
    406      1.1  christos 
    407      1.1  christos     if ((newsize = data->stacksize) == 0)
    408      1.1  christos         newsize = YYINITSTACKSIZE;
    409      1.1  christos     else if (newsize >= YYMAXDEPTH)
    410      1.1  christos         return YYENOMEM;
    411      1.1  christos     else if ((newsize *= 2) > YYMAXDEPTH)
    412      1.1  christos         newsize = YYMAXDEPTH;
    413      1.1  christos 
    414      1.1  christos     i = (int) (data->s_mark - data->s_base);
    415      1.1  christos     newss = (YYINT *)realloc(data->s_base, newsize * sizeof(*newss));
    416      1.1  christos     if (newss == 0)
    417      1.1  christos         return YYENOMEM;
    418      1.1  christos 
    419      1.1  christos     data->s_base = newss;
    420      1.1  christos     data->s_mark = newss + i;
    421      1.1  christos 
    422      1.1  christos     newvs = (YYSTYPE *)realloc(data->l_base, newsize * sizeof(*newvs));
    423      1.1  christos     if (newvs == 0)
    424      1.1  christos         return YYENOMEM;
    425      1.1  christos 
    426      1.1  christos     data->l_base = newvs;
    427      1.1  christos     data->l_mark = newvs + i;
    428      1.1  christos 
    429      1.1  christos     data->stacksize = newsize;
    430      1.1  christos     data->s_last = data->s_base + newsize - 1;
    431      1.1  christos     return 0;
    432      1.1  christos }
    433      1.1  christos 
    434      1.1  christos #if YYPURE || defined(YY_NO_LEAKS)
    435      1.1  christos static void yyfreestack(YYSTACKDATA *data)
    436      1.1  christos {
    437      1.1  christos     free(data->s_base);
    438      1.1  christos     free(data->l_base);
    439      1.1  christos     memset(data, 0, sizeof(*data));
    440      1.1  christos }
    441      1.1  christos #else
    442      1.1  christos #define yyfreestack(data) /* nothing */
    443      1.1  christos #endif
    444      1.1  christos 
    445      1.1  christos #define YYABORT  goto yyabort
    446      1.1  christos #define YYREJECT goto yyabort
    447      1.1  christos #define YYACCEPT goto yyaccept
    448      1.1  christos #define YYERROR  goto yyerrlab
    449      1.1  christos 
    450      1.1  christos int
    451      1.1  christos YYPARSE_DECL()
    452      1.1  christos {
    453      1.1  christos     int      yyerrflag;
    454      1.1  christos     int      yychar;
    455      1.1  christos     YYSTYPE  yyval;
    456      1.1  christos     YYSTYPE  yylval;
    457      1.1  christos 
    458      1.1  christos     /* variables for the parser stack */
    459      1.1  christos     YYSTACKDATA yystack;
    460      1.1  christos     int yym, yyn, yystate;
    461      1.1  christos #if YYDEBUG
    462      1.1  christos     const char *yys;
    463      1.1  christos 
    464      1.1  christos     if ((yys = getenv("YYDEBUG")) != 0)
    465      1.1  christos     {
    466      1.1  christos         yyn = *yys;
    467      1.1  christos         if (yyn >= '0' && yyn <= '9')
    468      1.1  christos             yydebug = yyn - '0';
    469      1.1  christos     }
    470      1.1  christos #endif
    471      1.1  christos 
    472  1.1.1.4  christos     yym = 0;
    473  1.1.1.4  christos     yyn = 0;
    474      1.1  christos     yynerrs = 0;
    475      1.1  christos     yyerrflag = 0;
    476      1.1  christos     yychar = YYEMPTY;
    477      1.1  christos     yystate = 0;
    478      1.1  christos 
    479      1.1  christos #if YYPURE
    480      1.1  christos     memset(&yystack, 0, sizeof(yystack));
    481      1.1  christos #endif
    482      1.1  christos 
    483      1.1  christos     if (yystack.s_base == NULL && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    484      1.1  christos     yystack.s_mark = yystack.s_base;
    485      1.1  christos     yystack.l_mark = yystack.l_base;
    486      1.1  christos     yystate = 0;
    487      1.1  christos     *yystack.s_mark = 0;
    488      1.1  christos 
    489      1.1  christos yyloop:
    490      1.1  christos     if ((yyn = yydefred[yystate]) != 0) goto yyreduce;
    491      1.1  christos     if (yychar < 0)
    492      1.1  christos     {
    493  1.1.1.4  christos         yychar = YYLEX;
    494  1.1.1.4  christos         if (yychar < 0) yychar = YYEOF;
    495      1.1  christos #if YYDEBUG
    496      1.1  christos         if (yydebug)
    497      1.1  christos         {
    498  1.1.1.4  christos             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
    499      1.1  christos             printf("%sdebug: state %d, reading %d (%s)\n",
    500      1.1  christos                     YYPREFIX, yystate, yychar, yys);
    501      1.1  christos         }
    502      1.1  christos #endif
    503      1.1  christos     }
    504  1.1.1.4  christos     if (((yyn = yysindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
    505  1.1.1.4  christos             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
    506      1.1  christos     {
    507      1.1  christos #if YYDEBUG
    508      1.1  christos         if (yydebug)
    509      1.1  christos             printf("%sdebug: state %d, shifting to state %d\n",
    510      1.1  christos                     YYPREFIX, yystate, yytable[yyn]);
    511      1.1  christos #endif
    512  1.1.1.4  christos         if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    513      1.1  christos         yystate = yytable[yyn];
    514      1.1  christos         *++yystack.s_mark = yytable[yyn];
    515      1.1  christos         *++yystack.l_mark = yylval;
    516      1.1  christos         yychar = YYEMPTY;
    517      1.1  christos         if (yyerrflag > 0)  --yyerrflag;
    518      1.1  christos         goto yyloop;
    519      1.1  christos     }
    520  1.1.1.4  christos     if (((yyn = yyrindex[yystate]) != 0) && (yyn += yychar) >= 0 &&
    521  1.1.1.4  christos             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yychar)
    522      1.1  christos     {
    523      1.1  christos         yyn = yytable[yyn];
    524      1.1  christos         goto yyreduce;
    525      1.1  christos     }
    526  1.1.1.4  christos     if (yyerrflag != 0) goto yyinrecovery;
    527      1.1  christos 
    528      1.1  christos     YYERROR_CALL("syntax error");
    529      1.1  christos 
    530  1.1.1.4  christos     goto yyerrlab; /* redundant goto avoids 'unused label' warning */
    531      1.1  christos yyerrlab:
    532      1.1  christos     ++yynerrs;
    533      1.1  christos 
    534      1.1  christos yyinrecovery:
    535      1.1  christos     if (yyerrflag < 3)
    536      1.1  christos     {
    537      1.1  christos         yyerrflag = 3;
    538      1.1  christos         for (;;)
    539      1.1  christos         {
    540  1.1.1.4  christos             if (((yyn = yysindex[*yystack.s_mark]) != 0) && (yyn += YYERRCODE) >= 0 &&
    541  1.1.1.4  christos                     yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) YYERRCODE)
    542      1.1  christos             {
    543      1.1  christos #if YYDEBUG
    544      1.1  christos                 if (yydebug)
    545      1.1  christos                     printf("%sdebug: state %d, error recovery shifting\
    546      1.1  christos  to state %d\n", YYPREFIX, *yystack.s_mark, yytable[yyn]);
    547      1.1  christos #endif
    548  1.1.1.4  christos                 if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    549      1.1  christos                 yystate = yytable[yyn];
    550      1.1  christos                 *++yystack.s_mark = yytable[yyn];
    551      1.1  christos                 *++yystack.l_mark = yylval;
    552      1.1  christos                 goto yyloop;
    553      1.1  christos             }
    554      1.1  christos             else
    555      1.1  christos             {
    556      1.1  christos #if YYDEBUG
    557      1.1  christos                 if (yydebug)
    558      1.1  christos                     printf("%sdebug: error recovery discarding state %d\n",
    559      1.1  christos                             YYPREFIX, *yystack.s_mark);
    560      1.1  christos #endif
    561      1.1  christos                 if (yystack.s_mark <= yystack.s_base) goto yyabort;
    562      1.1  christos                 --yystack.s_mark;
    563      1.1  christos                 --yystack.l_mark;
    564      1.1  christos             }
    565      1.1  christos         }
    566      1.1  christos     }
    567      1.1  christos     else
    568      1.1  christos     {
    569      1.1  christos         if (yychar == YYEOF) goto yyabort;
    570      1.1  christos #if YYDEBUG
    571      1.1  christos         if (yydebug)
    572      1.1  christos         {
    573  1.1.1.4  christos             if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
    574      1.1  christos             printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
    575      1.1  christos                     YYPREFIX, yystate, yychar, yys);
    576      1.1  christos         }
    577      1.1  christos #endif
    578      1.1  christos         yychar = YYEMPTY;
    579      1.1  christos         goto yyloop;
    580      1.1  christos     }
    581      1.1  christos 
    582      1.1  christos yyreduce:
    583      1.1  christos #if YYDEBUG
    584      1.1  christos     if (yydebug)
    585      1.1  christos         printf("%sdebug: state %d, reducing by rule %d (%s)\n",
    586      1.1  christos                 YYPREFIX, yystate, yyn, yyrule[yyn]);
    587      1.1  christos #endif
    588      1.1  christos     yym = yylen[yyn];
    589  1.1.1.4  christos     if (yym > 0)
    590      1.1  christos         yyval = yystack.l_mark[1-yym];
    591      1.1  christos     else
    592      1.1  christos         memset(&yyval, 0, sizeof yyval);
    593  1.1.1.4  christos 
    594      1.1  christos     switch (yyn)
    595      1.1  christos     {
    596      1.1  christos case 3:
    597      1.1  christos #line 66 "ok_syntax1.y"
    598      1.1  christos 	{  yyerrok ; }
    599      1.1  christos break;
    600      1.1  christos case 4:
    601      1.1  christos #line 70 "ok_syntax1.y"
    602      1.1  christos 	{  printf("%d\n",yystack.l_mark[0].ival);}
    603      1.1  christos break;
    604      1.1  christos case 5:
    605      1.1  christos #line 72 "ok_syntax1.y"
    606      1.1  christos 	{  regs[yystack.l_mark[-2].ival] = yystack.l_mark[0].ival; }
    607      1.1  christos break;
    608      1.1  christos case 6:
    609      1.1  christos #line 76 "ok_syntax1.y"
    610      1.1  christos 	{  yyval.ival = yystack.l_mark[-1].ival; }
    611      1.1  christos break;
    612      1.1  christos case 7:
    613      1.1  christos #line 78 "ok_syntax1.y"
    614      1.1  christos 	{  yyval.ival = yystack.l_mark[-2].ival + yystack.l_mark[0].ival; }
    615      1.1  christos break;
    616      1.1  christos case 8:
    617      1.1  christos #line 80 "ok_syntax1.y"
    618      1.1  christos 	{  yyval.ival = yystack.l_mark[-2].ival - yystack.l_mark[0].ival; }
    619      1.1  christos break;
    620      1.1  christos case 9:
    621      1.1  christos #line 82 "ok_syntax1.y"
    622      1.1  christos 	{  yyval.ival = yystack.l_mark[-2].ival * yystack.l_mark[0].ival; }
    623      1.1  christos break;
    624      1.1  christos case 10:
    625      1.1  christos #line 84 "ok_syntax1.y"
    626      1.1  christos 	{  yyval.ival = yystack.l_mark[-2].ival / yystack.l_mark[0].ival; }
    627      1.1  christos break;
    628      1.1  christos case 11:
    629      1.1  christos #line 86 "ok_syntax1.y"
    630      1.1  christos 	{  yyval.ival = yystack.l_mark[-2].ival % yystack.l_mark[0].ival; }
    631      1.1  christos break;
    632      1.1  christos case 12:
    633      1.1  christos #line 88 "ok_syntax1.y"
    634      1.1  christos 	{  yyval.ival = yystack.l_mark[-2].ival & yystack.l_mark[0].ival; }
    635      1.1  christos break;
    636      1.1  christos case 13:
    637      1.1  christos #line 90 "ok_syntax1.y"
    638      1.1  christos 	{  yyval.ival = yystack.l_mark[-2].ival | yystack.l_mark[0].ival; }
    639      1.1  christos break;
    640      1.1  christos case 14:
    641      1.1  christos #line 92 "ok_syntax1.y"
    642      1.1  christos 	{  yyval.ival = - yystack.l_mark[0].ival; }
    643      1.1  christos break;
    644      1.1  christos case 15:
    645      1.1  christos #line 94 "ok_syntax1.y"
    646      1.1  christos 	{  yyval.ival = regs[yystack.l_mark[0].ival]; }
    647      1.1  christos break;
    648      1.1  christos case 17:
    649      1.1  christos #line 99 "ok_syntax1.y"
    650      1.1  christos 	{  yyval.ival = yystack.l_mark[0].ival; (*base) = (yystack.l_mark[0].ival==0) ? 8 : 10; }
    651      1.1  christos break;
    652      1.1  christos case 18:
    653      1.1  christos #line 101 "ok_syntax1.y"
    654      1.1  christos 	{  yyval.ival = (*base) * yystack.l_mark[-1].ival + yystack.l_mark[0].ival; }
    655      1.1  christos break;
    656  1.1.1.4  christos #line 655 "ok_syntax1.tab.c"
    657      1.1  christos     }
    658      1.1  christos     yystack.s_mark -= yym;
    659      1.1  christos     yystate = *yystack.s_mark;
    660      1.1  christos     yystack.l_mark -= yym;
    661      1.1  christos     yym = yylhs[yyn];
    662      1.1  christos     if (yystate == 0 && yym == 0)
    663      1.1  christos     {
    664      1.1  christos #if YYDEBUG
    665      1.1  christos         if (yydebug)
    666      1.1  christos             printf("%sdebug: after reduction, shifting from state 0 to\
    667      1.1  christos  state %d\n", YYPREFIX, YYFINAL);
    668      1.1  christos #endif
    669      1.1  christos         yystate = YYFINAL;
    670      1.1  christos         *++yystack.s_mark = YYFINAL;
    671      1.1  christos         *++yystack.l_mark = yyval;
    672      1.1  christos         if (yychar < 0)
    673      1.1  christos         {
    674  1.1.1.4  christos             yychar = YYLEX;
    675  1.1.1.4  christos             if (yychar < 0) yychar = YYEOF;
    676      1.1  christos #if YYDEBUG
    677      1.1  christos             if (yydebug)
    678      1.1  christos             {
    679  1.1.1.4  christos                 if ((yys = yyname[YYTRANSLATE(yychar)]) == NULL) yys = yyname[YYUNDFTOKEN];
    680      1.1  christos                 printf("%sdebug: state %d, reading %d (%s)\n",
    681      1.1  christos                         YYPREFIX, YYFINAL, yychar, yys);
    682      1.1  christos             }
    683      1.1  christos #endif
    684      1.1  christos         }
    685      1.1  christos         if (yychar == YYEOF) goto yyaccept;
    686      1.1  christos         goto yyloop;
    687      1.1  christos     }
    688  1.1.1.4  christos     if (((yyn = yygindex[yym]) != 0) && (yyn += yystate) >= 0 &&
    689  1.1.1.4  christos             yyn <= YYTABLESIZE && yycheck[yyn] == (YYINT) yystate)
    690      1.1  christos         yystate = yytable[yyn];
    691      1.1  christos     else
    692      1.1  christos         yystate = yydgoto[yym];
    693      1.1  christos #if YYDEBUG
    694      1.1  christos     if (yydebug)
    695      1.1  christos         printf("%sdebug: after reduction, shifting from state %d \
    696      1.1  christos to state %d\n", YYPREFIX, *yystack.s_mark, yystate);
    697      1.1  christos #endif
    698  1.1.1.4  christos     if (yystack.s_mark >= yystack.s_last && yygrowstack(&yystack) == YYENOMEM) goto yyoverflow;
    699      1.1  christos     *++yystack.s_mark = (YYINT) yystate;
    700      1.1  christos     *++yystack.l_mark = yyval;
    701      1.1  christos     goto yyloop;
    702      1.1  christos 
    703      1.1  christos yyoverflow:
    704      1.1  christos     YYERROR_CALL("yacc stack overflow");
    705      1.1  christos 
    706      1.1  christos yyabort:
    707      1.1  christos     yyfreestack(&yystack);
    708      1.1  christos     return (1);
    709      1.1  christos 
    710      1.1  christos yyaccept:
    711      1.1  christos     yyfreestack(&yystack);
    712      1.1  christos     return (0);
    713      1.1  christos }
    714