File:  [CSRG BSD Unix] / 40BSD / cmd / cifplot / parser.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 16:12:53 2018 UTC (8 years, 1 month ago) by root
Branches: MAIN, BSD
CVS tags: HEAD, BSD40
BSD 4.0


# line 3 "parser.y"
/*******************************************************************
*                                                                  *
*    File: CIFPLOT/parser.y                                        *
*    Written by Dan Fitzpatrick                                    *
*    copyright 1980 -- Regents of the University of California     *
*                                                                  *
********************************************************************/

/* This is a YACC description for the parser */

/* In the offical CIF language description SEMI = BLANKLIST ';' BLANKLIST
 * but this causes ambiguities for the LALR(1) parser so the scanner
 * returns ';' when it spots the pattern BLANKLIST ';'
 */

#include <stdio.h>
#include "defs.h"
#include "globals.h"
#include "structs.h"
#include "alloc.h"

#define yyparse parser
#define yylex scanner

#define null  Concat("",0);
int Definning=0;
int SendAll=0;		/* If set causes the lexical analyzer to return
			 * BLANKLIST and ';' seperately */
int A = 1;
int B = 1;

#define SCALE(x)	( (((real) A) * ((real) x)) / ((real) B ))

# define BLANK 257
# define OTHERCHAR 258
# define COMMENT_COMMAND 259
#define yyclearin yychar = -1
#define yyerrok yyerrflag = 0
extern int yychar;
extern short yyerrflag;
#ifndef YYMAXDEPTH
#define YYMAXDEPTH 150
#endif
#ifndef YYSTYPE
#define YYSTYPE int
#endif
YYSTYPE yylval, yyval;
# define YYERRCODE 256

# line 527 "parser.y"


#include "scanner.c"

short yyexca[] ={
-1, 1,
	0, -1,
	-2, 0,
-1, 2,
	0, 4,
	-2, 167,
-1, 23,
	59, 35,
	-2, 16,
-1, 49,
	59, 35,
	-2, 26,
-1, 155,
	59, 81,
	-2, 160,
	};
# define YYNPROD 168
# define YYLAST 1046
short yyact[]={

 242, 158, 132, 183, 226, 227, 192, 193, 184, 157,
 182, 194, 162, 164,  89,  90,  91,  92,  93,  94,
  95,  96,  97,  98,  36, 159, 160, 167, 166, 165,
  70,  99, 100, 101, 102, 103, 104, 105, 106, 107,
 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
 118, 119, 120, 121, 122, 123, 124, 188,  68,  66,
  64,  61,  11, 192, 193,  55,  52, 133, 194, 132,
 150,  89,  90,  91,  92,  93,  94,  95,  96,  97,
  98,  11, 131,  57,  44, 149, 220, 218,  99, 100,
 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
 121, 122, 123, 124, 230,  54, 200, 214, 231,  76,
 192, 193,  10,  26,  75, 194, 198,  34,  89,  90,
  91,  92,  93,  94,  95,  96,  97,  98,  43,  22,
  21,  20,  19,  18,  17,  99, 100, 101, 102, 103,
 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
 124,  16, 129,  36, 126,  25,  27,  50,  15,  14,
  13,  41,   6,  36,  83,   5,   2,   1,   0,  36,
   0,   0,   0, 159, 217,   0,   0,   0,   0,   0,
 192, 193, 159,   0,   0, 194,   0,   0,  89,  90,
  91,  92,  93,  94,  95,  96,  97,  98, 159,   0,
   0, 181, 174, 232, 191,  99, 100, 101, 102, 103,
 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
 124, 188, 207, 170, 204,   0,  36, 192, 193,  38,
  12,   0, 194,   0, 180,  89,  90,  91,  92,  93,
  94,  95,  96,  97,  98,  48,   0,   0, 224,   0,
 235, 191,  99, 100, 101, 102, 103, 104, 105, 106,
 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
 117, 118, 119, 120, 121, 122, 123, 124, 234,  89,
  90,  91,  92,  93,  94,  95,  96,  97,  98, 146,
   0,   0,  89,  90,  91,  92,  93,  94,  95,  96,
  97,  98,   0, 251, 250,   0, 253, 232, 191,  99,
 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
 120, 121, 122, 123, 124, 141,   0,   0,  89,  90,
  91,  92,  93,  94,  95,  96,  97,  98,   0,   0,
   0,   0,   0,   0,   0,  99, 100, 101, 102, 103,
 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
 124,  87,  88, 186,   0,   0,  86, 215, 191,  89,
  90,  91,  92,  93,  94,  95,  96,  97,  98,   0,
  48,   0,   0, 187, 185,   0,  99, 100, 101, 102,
 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
 123, 124,  89,  90,  91,  92,  93,  94,  95,  96,
  97,  98,   0,   0,   0, 191,   0,   0,   0,  99,
 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
 120, 121, 122, 123, 124,  99, 100, 101, 102, 103,
 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
 124, 136, 137,  99, 100, 101, 102, 103, 104, 105,
 106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
 116, 117, 118, 119, 120, 121, 122, 123, 124,  59,
   4,   0,  35,   0,   0,   4,   0,   0,   0,   0,
   0,   4,  11,   0,  35,   0,   0, 136, 137,  29,
  33,  24,   9,   0,   4,   0, 156, 134,   0,  32,
   0, 140,   4,  28,  11,  30,   0,   0, 202, 211,
  31,  29,  33,  47,  29,  33,  24,   4,   0,   0,
   4,  32,   0,   0,  32,  28, 211,  30,  28,   0,
  30,   0,  31,  29,  33,  31, 211,   0,  36, 155,
 212,   0, 216,  32,   0, 211,   0,  28, 221,  30,
   0, 135, 153,   0,  31, 138, 142,   0, 144,   0,
 142, 147, 233, 148, 145,   0,   0,   0,   7,   0,
 161, 163,   0,   0,  39,  40, 154,   3, 233,   0,
   0,  36,  37,  45,  58,   0,   0,   0,  42,  85,
   0,   0,   0,   0,  53,   0,   0,   0,   0,   4,
  35,  51,   0,   0,  56,   0, 139, 136, 137,  67,
 125,   0,   0,   0,  62,  62,  62, 128,  62, 152,
   0,   0,   0,   0, 127, 189,   0, 130,   0,   4,
 199,   0,   0,   0,   0, 136, 137,   0,   0,  35,
   0,   0,   0, 176,   0,   0,   0,   0, 178,   0,
   0,   0,   0,   4, 195,   0,   0,   0,   0, 201,
   0, 203,   0,  84,   0,   0,   0,   0,   0, 205,
 219,   0,   0,   0,   0, 206,   0,   0, 155,   8,
 155,   0,  23,   0, 143,   0,   0,   0, 143,   0,
 219,   0,   0, 151, 213, 168, 155, 155,   0,   0,
 155,  46, 152,   0,  49,  36, 169,  23, 190,   0,
   0,   0, 155,   0,  60, 190,  62,   0,  62,   0,
 236, 237,   0,   4,  36,   0,  49, 240,   0,  62,
   0,   0,   0, 152,   0,   0, 197, 190,   0, 173,
 248,   0,   0,  62, 249,  63,  65, 190,  69, 252,
 190,   0, 179,   0, 190, 190,   0,   0,   0, 152,
 209, 225,   0, 228, 190,   0, 175, 143,   0,   0,
 190, 175, 143, 190,   0,   0, 151,   0,   0, 238,
 239,   0,   0, 241,   0,   0, 190, 208,   0, 210,
  62,   0,   0,   0,   0, 247,   0,   0,  62,   0,
 152,   0, 175,   0, 175,   0,   0, 151,   0,   0,
   0, 223,   0,   0,   0,   0,   0,   0,   0,   0,
   0,  62,   0,   0,   0,  62,   0,   0,   0,   0,
 254,   0,   0, 151,   0,   0,   0,   0,   0,   0,
 243,   0, 245,   0,   0,   0, 171,   0, 172,  71,
  72,  73,  77,  78,  79,  80,  81,  82,  74, 177,
  89,  90,  91,  92,  93,  94,  95,  96,  97,  98,
   0,   0,   0, 196, 151,   0,   0,  99, 100, 101,
 102, 103, 104, 105, 106, 107, 108, 109, 110, 111,
 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,
 122, 123, 124,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
 222,   0,   0,   0,   0,   0,   0,   0, 229,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0, 244,   0,   0,   0, 246 };
short yypact[]={

-1000,-1000, 513,-233,-1000,   3,  22,-1000,-1000,-1000,
-1000,-1000,-1000,-1000, 535,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-190,  22,-1000,-1000,-191,-195,
-196,-197,-198,-226, 891,-1000,-1000, 371,-1000,-1000,
-1000,  22,-233,-1000,-1000,-1000,-1000,-1000,  22,-1000,
-1000,  -1,-1000,-1000, 468,-1000,-1000, 440, 320,-1000,
 468,-1000, 274, 468,-1000, 468,-1000, 414,-1000,-1000,
-1000, -64,-231, -55, -39,-227,-228,-1000,-1000,-1000,
-1000,-1000,-1000,-229,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,  22, -68,-1000,-1000,
 538,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
 261, 261,-1000,-1000,-1000, 261, 261,-1000,-1000,-1000,
 902,-1000,-1000,-1000, -74,-1000, 217,-232,-1000,-1000,
-1000,  82,-232, 217,-232,-1000,-1000,-1000,-1000, 557,
-1000, 468,-1000,-1000,-1000,-1000, 261, 468, 261,-1000,
 468, 902,-1000,-1000,-1000, 217,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000, 217, 468,-233, 160,-1000,
-1000,  52, 217, 217,-1000,-1000,-1000, 902,-1000, -84,
-1000,-1000, 217,-1000,-1000,-1000,-1000,-1000,  80,-1000,
-1000,  23, 468, 468,-1000,-1000,-1000,-1000,-1000, 468,
-1000,-1000,-1000,-1000, -34,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-232,-1000,-1000, 468,-1000, 902,-1000,
-1000, 468,-1000,-1000,-233 };
short yypgo[]={

   0, 187, 186, 185, 666, 658, 184, 182, 181, 122,
 260, 180, 179, 123, 178, 177, 176,  84, 175, 174,
 172, 171, 144, 143, 142, 141, 140, 139, 115, 804,
 587, 694,  85, 642, 127, 586, 434,  83, 126,  87,
 124, 119, 559, 674, 591, 715,  70, 641, 413, 433,
 118, 117 };
short yyr1[]={

   0,   1,   1,   1,   1,   1,   2,   2,   2,   8,
   2,   7,   9,   9,   9,   9,  15,  14,  14,  14,
  12,  12,  12,  19,  12,  17,  20,  17,  10,  10,
  10,  10,  10,  10,  10,  10,  21,  21,  22,  22,
  22,  23,  23,  24,  24,  25,  25,  18,  18,  13,
  11,  16,  26,  26,  27,  27,  27,  27,  27,  27,
  27,  27,  27,  27,  27,  40,  40,  40,  40,  41,
  41,  41,  41,  41,  41,  34,   3,  33,  33,  33,
  33,  33,  28,  28,  31,  31,  37,  37,  29,  29,
  44,  44,  32,  32,  32,  32,  46,  46,  43,  43,
  30,  30,  30,  47,  47,  47,  47,  47,  47,  47,
  47,  47,  47,  47,  47,  47,  47,  47,  47,  47,
  47,  47,  47,  47,  47,  47,  47,  47,  47,  45,
  45,  45,  45,  45,  45,  45,  45,  45,  45,  36,
  36,  48,  48,  39,  39,  50,  50,  38,  38,  51,
  51,  51,  49,  49,  49,  49,  49,  49,  35,   4,
   4,   6,   6,   6,   6,   6,   5,  42 };
short yyr2[]={

   0,   3,   3,   3,   1,   5,   3,   2,   1,   0,
   4,   1,   1,   1,   2,   1,   0,   4,   1,   1,
   2,   2,   2,   0,   4,   2,   0,   4,   1,   1,
   1,   1,   1,   1,   1,   1,   2,   2,   6,   8,
   2,   4,   2,   4,   2,   3,   2,   4,   8,   3,
   4,   2,   3,   2,   4,   5,  13,   4,   7,   8,
   4,   7,   9,   3,   3,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   4,   5,   5,
   4,   1,   3,   1,   3,   2,   2,   3,   2,   3,
   2,   1,   1,   2,   3,   4,   1,   1,   2,   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,   2,
   1,   1,   1,   2,   1,   1,   1,   2,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   2,   2,
   1,   1,   1,   1,   1,   1,   2,   0 };
short yychk[]={

-1000,  -1,  -2,  -4, -42,  -3,  -7,  -5, 256,  69,
  -9,  59, -10, -11, -12, -14, -21, -22, -23, -24,
 -25, -26, -27, 259,  68, -18, -13, -16,  80,  66,
  82,  87,  76,  67, -34, -42, 257,  -4, 256,  -5,
  -5,  -8,  -4, -13, -17,  -5, 256,  68, -10, 259,
 -15,  -4, 256,  -5, -28, 256, -31, -37, -43, -42,
 -29, 256, -43, -29, 256, -29, 256,  -4, 256, -29,
 256,  48,  49,  50,  57, -40, -41,  51,  52,  53,
  54,  55,  56,  -6, -45, -47,  45,  40,  41,  48,
  49,  50,  51,  52,  53,  54,  55,  56,  57,  65,
  66,  67,  68,  69,  70,  71,  72,  73,  74,  75,
  76,  77,  78,  79,  80,  81,  82,  83,  84,  85,
  86,  87,  88,  89,  90,  -5, -19,  -4,  -5, -20,
  -4,  83,  70,  68, -30, -47, 257, 258, -30, 256,
 -44,  45, -30, -45, -30, -44,  45, -30, -30, -32,
 -46, -45, -47, -33,  -4, -42, -35,  73,  65, 257,
 257, -35,  67, -35,  52, 256, 256, 256,  -5,  -4,
  -9, -29, -29, -31, -37, -45, -44, -29, -44, -31,
 -28, -46,  84,  77,  82, -36, -48, -49,  34, -45,
 -47, 258,  40,  41,  45, -35, -29,  -4, -38, -42,
  34, -35, -36, -35, -17, -30, -30, -46, -31,  -4,
 -31, -48, -36, -30, -51, 257, -49,  34, -39, -42,
  34, -36, -29, -31, -46, -33,  88,  89, -33, -29,
  34, -50, 257, -49, -39, 257, -30, -30, -33, -33,
 -30, -33,  34, -31, -29, -31, -29, -33, -35, -30,
 -32, -37, -30, -37,  -4 };
short yydef[]={

 167,  -2,  -2,   8, 160, 167,   0,   7,   9,  76,
  11, 167,  12,  13, 167,  15,  28,  29,  30,  31,
  32,  33,  34,  -2, 167,   0,  18,  19, 167, 167,
 167, 167, 167, 167,   0,  75, 159,   1,   2,   3,
   6,   0, 166,  14,  20,  21,  23, 167,   0,  -2,
 167,   0,  51,  22,  36,  37,  83,   0,   0,  99,
   0,  40,   0,   0,  42,   0,  44,   0,  46, 167,
  53,  65,  66,  67,  68,   0,   0,  69,  70,  71,
  72,  73,  74,   0, 161, 162, 163, 164, 165, 129,
 130, 131, 132, 133, 134, 135, 136, 137, 138, 103,
 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
 124, 125, 126, 127, 128,  10,   0,   0,  25, 167,
 167, 167,  49, 167, 167, 100, 101, 102, 167,  85,
  86,   0,  98,  91, 167,  88,   0, 167, 167,  45,
  92,  96,  97,  52,   0,  -2,   0,   0, 167, 167,
 167,   0,   0,   0,   0,  63,  64,   5,  24, 167,
  17,  47,  50,  82,  84,  90,  87,   0,  89,  41,
  43,  93, 167, 167, 167,  54, 140, 141, 142, 152,
 153, 154, 155, 156, 157,   0,   0, 158,  57, 148,
 167,   0,  60,   0,  27, 167, 167,  94, 167,   0,
 167, 139,  55, 167, 147, 149, 150, 151,   0, 144,
 167,   0,   0,  38,  95,  77, 167, 167,  80,   0,
 167, 143, 145, 146,   0, 167, 167, 167,  78,  79,
 167,  58, 167,  61,  48,  39,   0,  59,   0, 167,
  62,   0, 167, 167,  56 };
#
# define YYFLAG -1000
# define YYERROR goto yyerrlab
# define YYACCEPT return(0)
# define YYABORT return(1)

/*	parser for yacc output	*/

#ifdef YYDEBUG
int yydebug = 0; /* 1 for debugging */
#endif
YYSTYPE yyv[YYMAXDEPTH]; /* where the values are stored */
int yychar = -1; /* current input token number */
int yynerrs = 0;  /* number of errors */
short yyerrflag = 0;  /* error recovery flag */

yyparse() {

	short yys[YYMAXDEPTH];
	short yyj, yym;
	register YYSTYPE *yypvt;
	register short yystate, *yyps, yyn;
	register YYSTYPE *yypv;
	register short *yyxi;

	yystate = 0;
	yychar = -1;
	yynerrs = 0;
	yyerrflag = 0;
	yyps= &yys[-1];
	yypv= &yyv[-1];

 yystack:    /* put a state and value onto the stack */

#ifdef YYDEBUG
	if( yydebug  ) printf( "state %d, char 0%o\n", yystate, yychar );
#endif
		if( ++yyps> &yys[YYMAXDEPTH] ) { yyerror( "yacc stack overflow" ); return(1); }
		*yyps = yystate;
		++yypv;
		*yypv = yyval;

 yynewstate:

	yyn = yypact[yystate];

	if( yyn<= YYFLAG ) goto yydefault; /* simple state */

	if( yychar<0 ) if( (yychar=yylex())<0 ) yychar=0;
	if( (yyn += yychar)<0 || yyn >= YYLAST ) goto yydefault;

	if( yychk[ yyn=yyact[ yyn ] ] == yychar ){ /* valid shift */
		yychar = -1;
		yyval = yylval;
		yystate = yyn;
		if( yyerrflag > 0 ) --yyerrflag;
		goto yystack;
		}

 yydefault:
	/* default state action */

	if( (yyn=yydef[yystate]) == -2 ) {
		if( yychar<0 ) if( (yychar=yylex())<0 ) yychar = 0;
		/* look through exception table */

		for( yyxi=yyexca; (*yyxi!= (-1)) || (yyxi[1]!=yystate) ; yyxi += 2 ) ; /* VOID */

		while( *(yyxi+=2) >= 0 ){
			if( *yyxi == yychar ) break;
			}
		if( (yyn = yyxi[1]) < 0 ) return(0);   /* accept */
		}

	if( yyn == 0 ){ /* error */
		/* error ... attempt to resume parsing */

		switch( yyerrflag ){

		case 0:   /* brand new error */

			yyerror( "syntax error" );
		yyerrlab:
			++yynerrs;

		case 1:
		case 2: /* incompletely recovered error ... try again */

			yyerrflag = 3;

			/* find a state where "error" is a legal shift action */

			while ( yyps >= yys ) {
			   yyn = yypact[*yyps] + YYERRCODE;
			   if( yyn>= 0 && yyn < YYLAST && yychk[yyact[yyn]] == YYERRCODE ){
			      yystate = yyact[yyn];  /* simulate a shift of "error" */
			      goto yystack;
			      }
			   yyn = yypact[*yyps];

			   /* the current yyps has no shift onn "error", pop stack */

#ifdef YYDEBUG
			   if( yydebug ) printf( "error recovery pops state %d, uncovers %d\n", *yyps, yyps[-1] );
#endif
			   --yyps;
			   --yypv;
			   }

			/* there is no state on the stack with an error shift ... abort */

	yyabort:
			return(1);


		case 3:  /* no shift yet; clobber input char */

#ifdef YYDEBUG
			if( yydebug ) printf( "error recovery discards char %d\n", yychar );
#endif

			if( yychar == 0 ) goto yyabort; /* don't discard EOF, quit */
			yychar = -1;
			goto yynewstate;   /* try again in the same state */

			}

		}

	/* reduction by production yyn */

#ifdef YYDEBUG
		if( yydebug ) printf("reduce %d\n",yyn);
#endif
		yyps -= yyr2[yyn];
		yypvt = yypv;
		yypv -= yyr2[yyn];
		yyval = yypv[1];
		yym=yyn;
			/* consult goto table to find next state */
		yyn = yyr1[yyn];
		yyj = yypgo[yyn] + *yyps + 1;
		if( yyj>=YYLAST || yychk[ yystate = yyact[yyj] ] != -yyn ) yystate = yyact[yypgo[yyn]];
		switch(yym){
			
case 2:
# line 47 "parser.y"
{ Error("Improper Ending",FATAL); } break;
case 3:
# line 49 "parser.y"
{ Error("Semi-Colon found after End",
							RECOVERABLE); } break;
case 4:
# line 52 "parser.y"
{ Error("No End Statement",RECOVERABLE); } break;
case 5:
# line 54 "parser.y"
{ Error("Garbage after End Statement",
							RECOVERABLE); } break;
case 9:
# line 63 "parser.y"
{ Error("Unrecognizable Command",FATAL); } break;
case 12:
# line 73 "parser.y"
{ Execute(yypvt[-0]);		} break;
case 14:
# line 76 "parser.y"
{ Execute(yypvt[-1]);
					  Definning = 0;
					  A=1; B=1;	 	} break;
case 16:
# line 84 "parser.y"
{ Error("Comments must end with a semi-colon",
							RECOVERABLE); 		} break;
case 17:
# line 87 "parser.y"
{ yyval = yypvt[-3]; } break;
case 18:
# line 89 "parser.y"
{ Error("Define Finnished found outside of Definition",
							FATAL); 
					  yyval = yypvt[-0]; 	} break;
case 19:
# line 93 "parser.y"
{ Error("Unrecognized Definition Command",
							FATAL);	} break;
case 20:
# line 99 "parser.y"
{ yyval = AddCmd(yypvt[-1],yypvt[-0]);	} break;
case 21:
# line 101 "parser.y"
{ yyval = yypvt[-1]; } break;
case 22:
# line 103 "parser.y"
{ Definning = 1;
					  A=(int) ((Command *) yypvt[-1])->Ctype.Symbl.a;
					  B=(int) ((Command *) yypvt[-1])->Ctype.Symbl.b;
					  yyval = yypvt[-1];		} break;
case 23:
# line 108 "parser.y"
{ yyval = yypvt[-1];
					  Error("Unrecognized or Illegal Command in Definition",
							FATAL); } break;
case 25:
# line 116 "parser.y"
{ yyval = yypvt[-1]; } break;
case 26:
# line 118 "parser.y"
{ Error("Comments must end with a semi-colon",RECOVERABLE); } break;
case 27:
# line 120 "parser.y"
{ yyval = yypvt[-0];	} break;
case 36:
# line 136 "parser.y"
{ /* Polygons must have more than two
					   * vertices to be well defined */
					  if( ((struct PathHeader *) yypvt[-0])->PNo < 3)
						Error("Degenerate Polygon",WARNING);
					  /* Polygons with less than two vertices are
					    * useless	*/
					  if( ((struct PathHeader *) yypvt[-0])->PNo < 2) {
						Error("Command Ignored",WARNING);
						yyval = MakeComment();
						}
					      else
					  	yyval = MakePoly(yypvt[-0]);	} break;
case 37:
# line 149 "parser.y"
{ Error("Bad Path Descriptor in Polygon",FATAL);		
					  yyval = MakeComment();	} break;
case 38:
# line 155 "parser.y"
{ yyval = MakeBox(SCALE(yypvt[-4]),SCALE(yypvt[-2]),yypvt[-0],
							MakePoint(1.0,0.0)); 
					  Free(yypvt[-0]);		} break;
case 39:
# line 159 "parser.y"
{ if(!CheckPoint(yypvt[-0]))
						Error("Bad Direction Vector in Box Command",FATAL);
					  yyval = MakeBox(SCALE(yypvt[-6]),SCALE(yypvt[-4]),yypvt[-2],yypvt[-0]);
			  		  Free(yypvt[-2]); Free(yypvt[-0]);	} break;
case 40:
# line 164 "parser.y"
{ Error("Illegal Box Description",FATAL);
					  yyval = MakeComment();	} break;
case 41:
# line 170 "parser.y"
{ yyval = MakeFlash(SCALE(yypvt[-2]),yypvt[-0]);} break;
case 42:
# line 172 "parser.y"
{ Error("Illegal Round Flash Description",FATAL);
					  yyval = MakeComment();	} break;
case 43:
# line 178 "parser.y"
{ if( ((struct PathHeader *) yypvt[-0])->PNo < 2) 
						Error("Degenerate Wire",WARNING);
					  yyval = MakeWire(SCALE(yypvt[-2]),yypvt[-0]); } break;
case 44:
# line 182 "parser.y"
{ Error("Illegal Wire Description",FATAL);
					  yyval = MakeComment();	} break;
case 45:
# line 188 "parser.y"
{ yyval = MakeLayer(yypvt[-0]);	} break;
case 46:
# line 190 "parser.y"
{ Error("Illegal Layer Command",FATAL);
					  yyval = MakeComment();	} break;
case 47:
# line 196 "parser.y"
{ yyval = MakeSymbol(yypvt[-0],1,1);} break;
case 48:
# line 198 "parser.y"
{ yyval = MakeSymbol(yypvt[-4],yypvt[-2],yypvt[-0]);} break;
case 49:
# line 203 "parser.y"
{ yyval = 0; } break;
case 50:
# line 208 "parser.y"
{ DeleteDefintion(yypvt[-0]);
					  yyval = MakeComment();	} break;
case 52:
# line 219 "parser.y"
{ yyval = MakeCall(yypvt[-1],yypvt[-0]);	} break;
case 53:
# line 221 "parser.y"
{ Error("Illegal Call Command",FATAL);		
					  yyval = MakeComment();	} break;
case 54:
# line 227 "parser.y"
{ yyval = MakeComment();
					  if(!standard)
					     Include(yypvt[-0]);
					   else
					     Error("User Extention Ignored\n",WARNING);
					 SendAll = 0;
					 Free(yypvt[-0]);		} break;
case 55:
# line 235 "parser.y"
{ yyval = MakeComment();
					  if(!standard)
					     Include(yypvt[-1]);
					   else
					     Error("User Extention Ignored\n",WARNING);
					  SendAll = 0;
					  Free(yypvt[-1]);		} break;
case 56:
# line 243 "parser.y"
{ if(!standard)
					     yyval = MakeArray(yypvt[-9],yypvt[-7],yypvt[-5],SCALE(yypvt[-3]),SCALE(yypvt[-1]));
					   else {
					     Error("User Extention Ignored\n",WARNING);
					     yyval = MakeComment();
					     }
					  SendAll = 0;		} break;
case 57:
# line 251 "parser.y"
{ yyval = MakeComment();
					  if(!standard)
					     fprintf(stderr,"%s\n",yypvt[-0]);
					   else
					     Error("User Extention Ignored\n",WARNING);
					  SendAll = 0;
					  Free(yypvt[-0]);		} break;
case 58:
# line 259 "parser.y"
{ if(!standard)
					     yyval = MakeText(yypvt[-2],yypvt[-0],'l');
					   else {
					     Error("User Extention Ignored\n",WARNING);
					     yyval = MakeComment();
					     }
					  SendAll = 0;		} break;
case 59:
# line 267 "parser.y"
{ if(!standard)
					     yyval = MakeText(yypvt[-2],yypvt[-0],'c');
					   else {
					     Error("User Extention Ignored\n",WARNING);
					     yyval = MakeComment();
					     }
					  SendAll = 0;		} break;
case 60:
# line 275 "parser.y"
{ if(!standard)
					     yyval = MakeName(yypvt[-0]);
					   else {
					     Error("User Extention Ignored\n",WARNING);
					     yyval = MakeComment();
					     }
					  SendAll = 0;		} break;
case 61:
# line 283 "parser.y"
{ if(!standard) {
					    yyval = MakePointName(yypvt[-2],yypvt[-0],"all");
					    Free(yypvt[-0]);
					    }
					  else {
					     Error("User Extention Ignored\n",WARNING);
					     yyval = MakeComment();
					     }
					  SendAll = 0;		} break;
case 62:
# line 293 "parser.y"
{ if(!standard) {
					    yyval = MakePointName(yypvt[-4],yypvt[-2],yypvt[-0]);
					    Free(yypvt[-2]);
					    }
					  else {
					     Error("User Extention Ignored\n",WARNING);
					     yyval = MakeComment();
					     }
					  SendAll = 0;		} break;
case 63:
# line 303 "parser.y"
{ yyval = MakeComment();
					  Error("Bad Syntax in Extension Command --- Command Ignored",
								WARNING);
					   SendAll = 0;   } break;
case 64:
# line 308 "parser.y"
{ yyval = MakeComment();
					  Error("Unimplemented User Extension",
								WARNING);
					  SendAll = 0;     } break;
case 75:
# line 323 "parser.y"
{SendAll = 1; } break;
case 77:
# line 332 "parser.y"
{ yyval = Translate(yypvt[-1],yypvt[-0]);	
					  if(output == NOPLOT)
					      Free(((transform *) yypvt[-0])->TransString);
					  Free(yypvt[-1]);  FreeTransform(yypvt[-0]);	} break;
case 78:
# line 337 "parser.y"
{ yyval = Mirror('x',yypvt[-0]);	
					  if(output == NOPLOT)
					      Free(((transform *) yypvt[-0])->TransString);
					  FreeTransform(yypvt[-0]);		} break;
case 79:
# line 342 "parser.y"
{ yyval = Mirror('y',yypvt[-0]);	
					  if(output == NOPLOT)
					      Free(((transform *) yypvt[-0])->TransString);
					  FreeTransform(yypvt[-0]);		} break;
case 80:
# line 347 "parser.y"
{ if(!CheckPoint(yypvt[-1]))
					      Error("Bad Rotation Vector",FATAL);
					  yyval = Rotate(yypvt[-1],yypvt[-0]);
					  if(output == NOPLOT)
					      Free(((transform *) yypvt[-0])->TransString);
					  Free(yypvt[-1]);  FreeTransform(yypvt[-0]);	} break;
case 81:
# line 354 "parser.y"
{ yyval = MakeTransform();		} break;
case 82:
# line 359 "parser.y"
{ yyval = AddPath(yypvt[-2],yypvt[-0]);
					  Free(yypvt[-0]);		} break;
case 83:
# line 362 "parser.y"
{ yyval = MakePath(yypvt[-0]);		} break;
case 84:
# line 367 "parser.y"
{ yyval = MakePoint(SCALE(yypvt[-2]),SCALE(yypvt[-0]));	} break;
case 85:
# line 369 "parser.y"
{ Error("Odd number of values encountered",
							FATAL); 
					  yyval = MakePoint(SCALE(yypvt[-1]),0.0);} break;
case 86:
# line 376 "parser.y"
{ yyval = yypvt[-0]; } break;
case 87:
# line 378 "parser.y"
{ yyval = - yypvt[-0];		} break;
case 88:
# line 383 "parser.y"
{ yyval = yypvt[-0]; } break;
case 89:
# line 385 "parser.y"
{ Error("Expected Positive Integer",FATAL);
					  yyval = yypvt[-0];			} break;
case 90:
# line 391 "parser.y"
{ if (yypvt[-1] > (0x800000 / 10)) {
						Error("Integers may not exceed 2**24",
								FATAL);
						yyval = 0;
						}
					    else
						yyval = (yypvt[-1]*10)+yypvt[-0]-'0';	} break;
case 91:
# line 399 "parser.y"
{ yyval = yypvt[-0] - '0';	} break;
case 93:
# line 405 "parser.y"
{ yyval = Concat(yypvt[-1],yypvt[-0],0);
					  Free(yypvt[-1]); Free(yypvt[-0]);		 } break;
case 94:
# line 408 "parser.y"
{ yyval = Concat(yypvt[-2],yypvt[-1],yypvt[-0],0);
					  Free(yypvt[-2]); Free(yypvt[-1]); Free(yypvt[-0]);	} break;
case 95:
# line 411 "parser.y"
{ yyval = Concat(yypvt[-3],yypvt[-2],yypvt[-1],yypvt[-0],0);
					  Free(yypvt[-3]); Free(yypvt[-2]);
					  Free(yypvt[-1]); Free(yypvt[-0]);		} break;
case 96:
# line 418 "parser.y"
{ yyval = MakeString(yypvt[-0]); } break;
case 97:
# line 420 "parser.y"
{ yyval = MakeString(yypvt[-0]); } break;
case 139:
# line 448 "parser.y"
{ yyval = Concat(yypvt[-1],yypvt[-0],0);
					  Free(yypvt[-1]); Free(yypvt[-0]);		} break;
case 142:
# line 456 "parser.y"
{ yyval = MakeString('"'); } break;
case 143:
# line 461 "parser.y"
{ yyval = Concat(yypvt[-1],yypvt[-0],0);
					  Free(yypvt[-1]); Free(yypvt[-0]);		} break;
case 144:
# line 464 "parser.y"
{ yyval = null;		} break;
case 145:
# line 469 "parser.y"
{ yyval = MakeString(yypvt[-0]); } break;
case 147:
# line 475 "parser.y"
{ yyval = Concat(yypvt[-1],yypvt[-0],0);
					  Free(yypvt[-1]); Free(yypvt[-0]);		} break;
case 148:
# line 478 "parser.y"
{ yyval = null;		} break;
case 149:
# line 483 "parser.y"
{ yyval = MakeString(yypvt[-0]); } break;
case 151:
# line 486 "parser.y"
{ yyval = MakeString('"'); } break;
case 152:
# line 491 "parser.y"
{ yyval = MakeString(yypvt[-0]); } break;
case 153:
# line 493 "parser.y"
{ yyval = MakeString(yypvt[-0]); } break;
case 154:
# line 495 "parser.y"
{ yyval = MakeString(yypvt[-0]); } break;
case 155:
# line 497 "parser.y"
{ yyval = MakeString('('); } break;
case 156:
# line 499 "parser.y"
{ yyval = MakeString(')'); } break;
case 157:
# line 501 "parser.y"
{ yyval = MakeString('-'); } break;
		}
		goto yystack;  /* stack new state and value */

	}

unix.superglobalmegacorp.com

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