File:  [Atari MiNT] / MiNT / src / asmtab.c
Revision 1.1.1.3 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:58:04 2018 UTC (8 years, 1 month ago) by root
Branches: mint, MAIN
CVS tags: mint112, mint110, HEAD
MiNT 1.10

#ifndef lint

char yysccsid[] = "@(#)yaccpar	1.3 (Berkeley) 01/21/90";

#endif

#define WORD 257

#define WHITESP 258

#define EOLN 259

#define STRING 260

#define DEFINECMD 261

#define INCLUDECMD 262

#define IFDEFCMD 263

#define IFNDEFCMD 264

#define ELSECMD 265

#define ENDIFCMD 266

#define YYERRCODE 256

#line 3 "asm.y"

#define YYSTYPE char *



#include "asmtrans.h"

#line 19 "y_tab.c"

short yylhs[] = {                                        -1,

    0,    0,    1,    1,    1,    1,    1,    1,    1,    1,

    1,    1,    1,    1,    3,    3,    3,    3,    6,    6,

    5,    2,    4,    4,    4,    4,    4,    4,    4,    4,

    4,    4,    4,    4,    4,    7,    7,    7,    8,    8,

    9,    9,    9,    9,

};

short yylen[] = {                                         2,

    0,    2,    1,    2,    2,    3,    4,    4,    6,    6,

    4,    4,    2,    2,    2,    4,    3,    5,    1,    3,

    1,    2,    1,    2,    3,    4,    4,    4,    4,    6,

    6,   11,   11,    5,    7,    1,    3,    2,    1,    2,

    1,    1,    1,    1,

};

short yydefred[] = {                                      1,

    0,    0,    0,    3,    0,    0,    0,    0,    0,    0,

    2,    0,    0,    0,   22,   21,    0,    0,    0,    0,

    0,   13,   14,    0,    4,    0,    5,    0,    0,    0,

    0,    0,    0,    0,    6,    0,   39,    0,    0,    0,

    0,    0,   16,    0,    0,    0,    8,    7,   11,   12,

   18,    0,   24,    0,    0,    0,   38,   40,    0,    0,

    0,   41,   42,   43,   44,    0,    0,    0,    0,    0,

    0,   20,    0,    0,   37,    9,   10,    0,    0,   29,

   26,   27,    0,   28,    0,    0,    0,   34,    0,    0,

    0,    0,    0,   30,   31,    0,    0,   35,    0,    0,

    0,    0,    0,    0,   33,   32,

};

short yydgoto[] = {                                       1,

   11,   12,   13,   42,   17,   43,   44,   45,   66,

};

short yysindex[] = {                                      0,

 -168,  -47, -235,    0, -226, -224, -217, -215, -210, -202,

    0, -203, -201, -235,    0,    0, -214, -198, -221, -197,

 -195,    0,    0, -193,    0, -196,    0, -192,  -33, -191,

 -189, -185, -184, -180,    0,  -33,    0,  -28,  -30,  -27,

 -177,   24,    0,  -24,  -12,  -35,    0,    0,    0,    0,

    0,  -28,    0,  -28,   40,  -28,    0,    0,  -33,  -28,

  -28,    0,    0,    0,    0,  -28, -175, -174,  -17,  -29,

   41,    0,    4,   28,    0,    0,    0,  -28,    9,    0,

    0,    0,  -28,    0,  -28,  -15,  -28,    0,   51,  -25,

  -28,   57,   62,    0,    0,   12,  -28,    0,   63,   64,

  -28,  -28,   65,   68,    0,    0,

};

short yyrindex[] = {                                      0,

    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,

    0,    0,    0,    0,    0,    0, -149,    0,    0,    0,

    0,    0,    0,    0,    0,    0,    0, -148,    0,    0,

    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,

    0, -147,    0,  -40,  -21,    0,    0,    0,    0,    0,

    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,

    0,    0,    0,    0,    0,    0,    0,    0,    0,  -23,

    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,

};

short yygindex[] = {                                      0,

    0,    0,  101,   69,  100,   -8,  -14,    0,    0,

};

#define YYTABLESIZE 238

short yytable[] = {                                      38,

   41,   38,   41,   23,   39,   41,   39,   41,   41,   40,

   15,   40,   56,   81,   52,   60,   52,   52,   36,   36,

   25,   16,   36,   53,   55,   57,   78,   51,   91,   64,

   62,   18,   63,   19,   65,   31,   36,   57,   32,   69,

   20,   71,   21,   29,   84,   73,   74,   83,   22,   88,

   72,   75,   87,   24,    3,   25,   23,   27,   30,   33,

   54,   34,   35,   86,   14,   36,   46,   59,   89,   47,

   90,   36,   93,   48,   49,   79,   96,   92,   50,   58,

   70,   82,  100,   76,   77,   85,  103,  104,    2,    3,

    4,   94,    5,    6,    7,    8,    9,   10,   61,   95,

   97,   36,   98,   36,   99,  105,  101,  102,  106,   15,

   17,   19,   26,   28,   68,    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,

   14,    0,    0,    0,    0,    0,    0,    0,   23,    0,

    0,   37,    0,   37,   67,    0,   37,   80,   37,   37,

    0,    0,    0,    0,    0,   25,    0,   36,

};

short yycheck[] = {                                      35,

   36,   35,   36,   44,   40,   36,   40,   36,   36,   45,

   58,   45,   40,   43,   45,   40,   45,   45,   40,   41,

   44,  257,   44,   38,   39,   40,   44,   36,   44,   42,

   43,  258,   45,  258,   47,  257,   58,   52,  260,   54,

  258,   56,  258,  258,   41,   60,   61,   44,  259,   41,

   59,   66,   44,  257,  258,  259,  259,  259,  257,  257,

   91,  257,  259,   78,  258,  258,  258,   44,   83,  259,

   85,   93,   87,  259,  259,   93,   91,   93,  259,  257,

   41,   41,   97,  259,  259,   58,  101,  102,  257,  258,

  259,   41,  261,  262,  263,  264,  265,  266,  123,  125,

   44,  123,   41,  125,   93,   41,   44,   44,   41,  259,

  259,  259,   12,   14,   46,   -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,

  258,   -1,   -1,   -1,   -1,   -1,   -1,   -1,  259,   -1,

   -1,  257,   -1,  257,  260,   -1,  257,  257,  257,  257,

   -1,   -1,   -1,   -1,   -1,  259,   -1,  259,

};

#define YYFINAL 1

#ifndef YYDEBUG

#define YYDEBUG 0

#endif

#define YYMAXTOKEN 266

#if YYDEBUG

char *yyname[] = {

"end-of-file",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,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,"WORD","WHITESP","EOLN","STRING","DEFINECMD","INCLUDECMD",

"IFDEFCMD","IFNDEFCMD","ELSECMD","ENDIFCMD",

};

char *yyrule[] = {

"$accept : input",

"input :",

"input : input line",

"line : EOLN",

"line : label EOLN",

"line : opline EOLN",

"line : label opline EOLN",

"line : INCLUDECMD WHITESP STRING EOLN",

"line : INCLUDECMD WHITESP WORD EOLN",

"line : DEFINECMD WHITESP WORD WHITESP STRING EOLN",

"line : DEFINECMD WHITESP WORD WHITESP operand EOLN",

"line : IFDEFCMD WHITESP WORD EOLN",

"line : IFNDEFCMD WHITESP WORD EOLN",

"line : ELSECMD EOLN",

"line : ENDIFCMD EOLN",

"opline : WHITESP opcode",

"opline : WHITESP opcode WHITESP ops",

"opline : WORD WHITESP opcode",

"opline : WORD WHITESP opcode WHITESP ops",

"ops : operand",

"ops : operand ',' ops",

"opcode : WORD",

"label : WORD ':'",

"operand : basic",

"operand : '#' basic",

"operand : '(' basic ')'",

"operand : '(' basic ')' '+'",

"operand : '-' '(' basic ')'",

"operand : basic '(' basic ')'",

"operand : '(' basic ')' WORD",

"operand : basic '(' basic ',' basic ')'",

"operand : basic '{' basic ':' basic '}'",

"operand : '(' '[' basic ',' basic ']' ',' basic ',' basic ')'",

"operand : '(' '[' basic ',' basic ',' basic ']' ',' basic ')'",

"operand : '(' '[' basic ']' ')'",

"operand : '(' '[' basic ']' ',' basic ')'",

"basic : basexpr",

"basic : basexpr op basic",

"basic : '-' basic",

"basexpr : WORD",

"basexpr : '$' WORD",

"op : '+'",

"op : '-'",

"op : '*'",

"op : '/'",

};

#endif

#ifndef YYSTYPE

typedef int YYSTYPE;

#endif

#define yyclearin (yychar=(-1))

#define yyerrok (yyerrflag=0)

#ifndef YYSTACKSIZE

#ifdef YYMAXDEPTH

#define YYSTACKSIZE YYMAXDEPTH

#else

#define YYSTACKSIZE 300

#endif

#endif

int yydebug;

int yynerrs;

int yyerrflag;

int yychar;

short *yyssp;

YYSTYPE *yyvsp;

YYSTYPE yyval;

YYSTYPE yylval;

#define yystacksize YYSTACKSIZE

short yyss[YYSTACKSIZE];

YYSTYPE yyvs[YYSTACKSIZE];

#line 103 "asm.y"

#include <setjmp.h>



jmp_buf start;



#ifdef NATIVEATARI

#define STACK 32*1024L

#ifdef LATTICE

long _STACK = STACK;

#endif

#ifdef __GNUC__

long _stksize = STACK;

#endif



static void

hit_return()

{

	printf("Hit return to continue\n");

	fflush(stdout);

	getchar();

}

#endif



void usage()

{

	fprintf(stderr, "Usage: asmtrans [-gas][-asm][-o outfile] infile\n");

	exit(2);

}



int errors = 0;



void

do_include(file)

	char *file;

{

	jmp_buf save;

	FILE *oldin, *f;



	f = fopen(file, "rt");

	if (!f) {

		perror(file);

		return;

	}

	bcopy(start, save, sizeof(jmp_buf));

	oldin = infile;

	infile = f;

	setjmp(start);

	yyparse();

	fclose(f);

	infile = oldin;

	bcopy(save, start, sizeof(jmp_buf));

	longjmp(start,1);

}



/* set up initial definitions based on syntax type */



void

do_initial_defs()

{

	if (syntax == GAS) {

		do_define("mmusr", "psr");

		do_define("fpiar", "fpi");

		do_define("XREF", ".globl");

		do_define("XDEF", ".globl");

		do_define("TEXT", ".text");

		do_define("DATA", ".data");

	/* gas doesn't have a .bss directive */

		do_define("BSS", ".data");

		do_define("END", "| END");

		do_define("dc.l", ".long");

		do_define("dc.w", ".word");

		do_define("dc.b", ".byte");

	} else if (syntax == ASM) {

		do_define("TEXT", "SECTION TEXT,CODE");

		do_define("DATA", "SECTION DATA,DATA");

		do_define("BSS", "SECTION BSS,BSS");

	}

}



int

main (argc, argv)

	int argc; char **argv;

{

	FILE *f;

#ifdef NATIVEATARI

	if (!argv[0] || !argv[0][0])	/* run from desktop? */

		atexit(hit_return);

#endif

	argv++;

	outfile = stdout;



	while (*argv) {

		if (!strcmp(*argv, "-o")) {

			argv++;

			if (*argv == 0) {

				fprintf(stderr, "missing argument to -o\n");

				usage();

			}

			f = fopen(*argv, "wt");

			if (!f)

				perror(*argv);

			else

				outfile = f;

			argv++;

		} else if (!strcmp(*argv, "-gas")) {

			argv++;

			syntax = GAS;

		} else if (!strcmp(*argv, "-asm")) {

			argv++;

			syntax = ASM;

		} else if (!strcmp(*argv, "-purec")) {

			argv++;

			syntax = PUREC;

		} else if (!strncmp(*argv, "-D", 2)) {

			char *word, *defn;

			word = *argv+2;

			defn = index(word,'=');

			if (defn)

				*defn++ = '\0';

			else

				defn = "1";

			if (*word) do_define(word,defn);

			argv++;

		} else if (!strcmp(*argv, "--")) {

			argv++;

			break;

		} else {

			if (**argv == '-') {

				fprintf(stderr, "unknown option: %s\n",

					*argv);

				usage();

			}

			break;

		}

	}



	do_initial_defs();



	if (*argv == 0) {

		setjmp(start);

		infile = stdin;

		yyparse();

	} else {

	    while(*argv) {

		if (!(f = fopen(*argv, "rt")))

			perror(*argv);

		else {

			infile = f;

			setjmp(start);

			yyparse();

			fclose(f);

		}

		argv++;

	    }

	}



	if (ifstkptr != 0) {

		fputs("%ifdef without matching %endif\n", stderr);

		errors++;

	}

	return errors;

}



void

yyerror (s)  /* Called by yyparse on error */

     char *s;

{

	errors++;

	printf("%s\n", s);

	longjmp(start, 1);

}



void dbgmsg(s) char *s;

{

	fprintf(stderr, "%s\n", s);

}

#line 396 "y_tab.c"

#define YYABORT goto yyabort

#define YYACCEPT goto yyaccept

#define YYERROR goto yyerrlab

int

yyparse()

{

    register int yym, yyn, yystate;

#if YYDEBUG

    register char *yys;

    extern char *getenv();



    if (yys = getenv("YYDEBUG"))

    {

        yyn = *yys;

        if (yyn == '0')

            yydebug = 0;

        else if (yyn >= '1' && yyn <= '9')

            yydebug = yyn - '0';

    }

#endif



    yynerrs = 0;

    yyerrflag = 0;

    yychar = (-1);



    yyssp = yyss;

    yyvsp = yyvs;

    *yyssp = yystate = 0;



yyloop:

    if (yyn = yydefred[yystate]) 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

    }

    if ((yyn = yysindex[yystate]) && (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;

    }

    if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&

            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)

    {

        yyn = yytable[yyn];

        goto yyreduce;

    }

    if (yyerrflag) goto yyinrecovery;

#ifdef lint

    goto yynewerror;

#endif

yynewerror:

    yyerror("syntax error");

#ifdef lint

    goto yyerrlab;

#endif

yyerrlab:

    ++yynerrs;

yyinrecovery:

    if (yyerrflag < 3)

    {

        yyerrflag = 3;

        for (;;)

        {

            if ((yyn = yysindex[*yyssp]) && (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 25 "asm.y"

{ emit(yyvsp[0]); }

break;

case 4:

#line 28 "asm.y"

{ emit(yyvsp[-1]); emit(yyvsp[0]); }

break;

case 5:

#line 29 "asm.y"

{ emit(yyvsp[-1]); emit(yyvsp[0]); }

break;

case 6:

#line 30 "asm.y"

{ emit(yyvsp[-2]); emit(yyvsp[-1]);

			emit(yyvsp[0]); }

break;

case 7:

#line 32 "asm.y"

{ if (!hidecnt) do_include(yyvsp[-1]); free(yyvsp[-1]); }

break;

case 8:

#line 33 "asm.y"

{ if (!hidecnt) do_include(yyvsp[-1]); free(yyvsp[-1]); }

break;

case 9:

#line 34 "asm.y"

{

		if (!hidecnt) do_define(yyvsp[-3], yyvsp[-1]); free(yyvsp[-3]); free(yyvsp[-1]); }

break;

case 10:

#line 36 "asm.y"

{

		if (!hidecnt) do_define(yyvsp[-3], yyvsp[-1]); free(yyvsp[-3]); free(yyvsp[-1]); }

break;

case 11:

#line 38 "asm.y"

{ do_ifdef(yyvsp[-1]); free(yyvsp[-1]); }

break;

case 12:

#line 39 "asm.y"

{ do_ifndef(yyvsp[-1]); free(yyvsp[-1]); }

break;

case 13:

#line 40 "asm.y"

{ do_else(); }

break;

case 14:

#line 41 "asm.y"

{ do_endif(); }

break;

case 15:

#line 44 "asm.y"

{ yyval  = do_ops("", yyvsp[0], "", ""); free(yyvsp[0]); }

break;

case 16:

#line 46 "asm.y"

{ yyval  = do_ops("", yyvsp[-2], yyvsp[-1], yyvsp[0]);

			 free(yyvsp[-2]); free(yyvsp[-1]); free(yyvsp[0]); }

break;

case 17:

#line 48 "asm.y"

{ yyval  = do_ops(yyvsp[-2], yyvsp[0], "", ""); free(yyvsp[-2]); free(yyvsp[0]); }

break;

case 18:

#line 50 "asm.y"

{ yyval  = do_ops(yyvsp[-4], yyvsp[-2], yyvsp[-1], yyvsp[0]);

			 free(yyvsp[-4]); free(yyvsp[-2]); free(yyvsp[-1]); free(yyvsp[0]);}

break;

case 19:

#line 54 "asm.y"

{ yyval  = yyvsp[0]; }

break;

case 20:

#line 55 "asm.y"

{ yyval  = concat3(yyvsp[-2], ",", yyvsp[0]);

				free(yyvsp[-2]); free(yyvsp[0]); }

break;

case 21:

#line 59 "asm.y"

{ yyval  = wordlookup(yyvsp[0]); free(yyvsp[0]); }

break;

case 22:

#line 62 "asm.y"

{ yyval  = concat(yyvsp[-1], ":"); free(yyvsp[-1]); }

break;

case 23:

#line 64 "asm.y"

{yyval  = yyvsp[0]; }

break;

case 24:

#line 65 "asm.y"

{yyval  = immediate(yyvsp[0]); free(yyvsp[0]); }

break;

case 25:

#line 66 "asm.y"

{yyval  = indirect(yyvsp[-1]); free(yyvsp[-1]); }

break;

case 26:

#line 67 "asm.y"

{yyval  = postinc(yyvsp[-2]); free(yyvsp[-2]); }

break;

case 27:

#line 68 "asm.y"

{yyval  = predec(yyvsp[-1]); free(yyvsp[-1]); }

break;

case 28:

#line 69 "asm.y"

{yyval  = indexed(yyvsp[-3], yyvsp[-1]); free(yyvsp[-3]); free(yyvsp[-1]); }

break;

case 29:

#line 70 "asm.y"

{yyval  = sizedop(yyvsp[-2], yyvsp[0]); free(yyvsp[-2]); free(yyvsp[0]); }

break;

case 30:

#line 71 "asm.y"

{yyval  = twoindex(yyvsp[-5], yyvsp[-3], yyvsp[-1]);

				free(yyvsp[-5]); free(yyvsp[-3]); free(yyvsp[-1]); }

break;

case 31:

#line 73 "asm.y"

{yyval  = bitfield(yyvsp[-5], yyvsp[-3], yyvsp[-1]);

			free(yyvsp[-5]); free(yyvsp[-3]); free(yyvsp[-1]); }

break;

case 32:

#line 76 "asm.y"

{ yyval =postindex(yyvsp[-8],yyvsp[-6],yyvsp[-3],yyvsp[-1]); 

	     free(yyvsp[-8]); free(yyvsp[-6]); free(yyvsp[-3]); free(yyvsp[-1]); }

break;

case 33:

#line 79 "asm.y"

{ yyval =preindex(yyvsp[-8],yyvsp[-6],yyvsp[-4],yyvsp[-1]); 

	     free(yyvsp[-8]); free(yyvsp[-6]); free(yyvsp[-4]); free(yyvsp[-1]); }

break;

case 34:

#line 82 "asm.y"

{ yyval =postindex0(yyvsp[-2]); 

	     free(yyvsp[-2]); }

break;

case 35:

#line 85 "asm.y"

{ yyval =postindex1(yyvsp[-4],yyvsp[-1]); 

	     free(yyvsp[-4]); free(yyvsp[-1]); }

break;

case 36:

#line 89 "asm.y"

{ yyval  = yyvsp[0]; }

break;

case 37:

#line 90 "asm.y"

{ yyval  = concat3(yyvsp[-2], yyvsp[-1], yyvsp[0]); free(yyvsp[-2]); free(yyvsp[-1]); free(yyvsp[0]); }

break;

case 38:

#line 91 "asm.y"

{ yyval  = concat("-", yyvsp[0]); free(yyvsp[0]); }

break;

case 39:

#line 93 "asm.y"

{yyval  = wordlookup(yyvsp[0]); free(yyvsp[0]); }

break;

case 40:

#line 94 "asm.y"

{yyval  = hexop(yyvsp[0]); free(yyvsp[0]);}

break;

case 41:

#line 97 "asm.y"

{ yyval  = strdup("+"); }

break;

case 42:

#line 98 "asm.y"

{ yyval  = strdup("-"); }

break;

case 43:

#line 99 "asm.y"

{ yyval  = strdup("*"); }

break;

case 44:

#line 100 "asm.y"

{ yyval  = strdup("/"); }

break;

#line 718 "y_tab.c"

    }

    yyssp -= yym;

    yystate = *yyssp;

    yyvsp -= yym;

    yym = yylhs[yyn];

    if (yystate == 0 && yym == 0)

    {

#ifdef 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;

    }

    if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&

            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)

        yystate = yytable[yyn];

    else

        yystate = yydgoto[yym];

#ifdef 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);

}


unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.