
# line 2 "parser.y"
#include <stdio.h>
#include "layout.h"
#include "builder.h"

FormclassPtr yyparsedform;
static FormclassPtr bform;
static FieldPtr bf;
static NodePtr bn;
char *strdup(char *);
char *yylexany(void);
void yybegin(void);

# line 15 "parser.y"
typedef union  {
  char *s;
  char **sl;
  int i;
  int *il;
} YYSTYPE;
# define ACTIONLIST 257
# define BOOLEANINPUT0 258
# define BOXDISPLAY0 259
# define CALCULATE 260
# define CHAR 261
# define CHOICES 262
# define COL 263
# define COLUMNS 264
# define DATA 265
# define DEFAULTQUEUE 266
# define DEFAULTVALUE 267
# define DEFAULTVALUES 268
# define DETAIL 269
# define DIRECTION 270
# define DISPLAYFIELD 271
# define DISPLAY0 272
# define DISTANCE 273
# define DOWN 274
# define EXCLUSIVE0 275
# define FIELD 276
# define FORM 277
# define FORMNAME 278
# define HEIGHT 279
# define HIDDENIF 280
# define INPUTFIELD 281
# define INPUTSOURCE 282
# define LEFT 283
# define LENGTH 284
# define LINEDISPLAY0 285
# define LOCKEDIF 286
# define NAME 287
# define NODENUMBER 288
# define NONEXCLUSIVE0 289
# define NONE 290
# define NOTIFY 291
# define NUMERICINPUT0 292
# define NUMLINES 293
# define PROMPT 294
# define RIGHT 295
# define ROUTE 296
# define ROW 297
# define SCREEN 298
# define SELECTIONINPUT0 299
# define STATUSSTRING 300
# define TERMINAL 301
# define TEXTATTRS 302
# define TEXTDISPLAY0 303
# define TEXTINPUT0 304
# define TYPE 305
# define UP 306
# define WIDTH 307
# define WRAP 308
# define WORD 309
# define ID 310
# define ANY 311
# define STRING 312
# define INTEGER 313
# define SHIFTNL 314
#define yyclearin yychar = -1
#define yyerrok yyerrflag = 0
extern int yychar;
extern short yyerrflag;
#ifndef YYMAXDEPTH
#define YYMAXDEPTH 150
#endif
YYSTYPE yylval, yyval;
# define YYERRCODE 256

# line 290 "parser.y"


char *strdup(char *s) {
  char *q = (char *)malloctrace(strlen(s)+1);
  strcpy(q, s);
  return q;
}

void strdupinto(char **into, char *s) {
  if (*into) freetrace(*into);
  *into = strdup(s);
}

void putinto(void **into, void *p) {
  if (*into) freetrace(*into);
  *into = p;
}

char **stringlistconcat(char **list, char *new) {
  int siz;
  char **trav;
  if (!list) list = (char **)calloctrace(sizeof(char *), 1);
  for (trav = list, siz = 0; *trav; trav++) siz++;
  list = (char **)realloctrace(list, sizeof(char *) * (siz + 2));
  list[siz] = NULL;
  strdupinto(&list[siz], new);
  list[siz+1] = NULL;
  return list;
}

int *intlistconcat(int *list, int new) {
  int siz, *trav;
  if (!list) {
    list = (int *)malloctrace(sizeof(int));
    *list = -1;
  }
  for (trav = list, siz = 0; *trav >= 0; trav++) siz++;
  list = (int *)realloctrace(list, sizeof(int) * (siz + 2));
  list[siz] = new;
  list[siz+1] = -1;
  return list;
}
short yyexca[] ={
-1, 1,
	0, -1,
	-2, 0,
	};
# define YYNPROD 177
# define YYLAST 419
short yyact[]={

  28,  29,  30,  31,  32,  33,  34,  35,  36,  37,
  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,
  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,
  58,  59,  61,  60,  62,  63,  64,  65,  66,  67,
  68,  69,  70,  71,  72,  73,  74,  75,  76,  77,
  78,  80,  79,  27, 136, 127, 191, 350,   5, 349,
 107, 348,   9,  10, 347, 345, 331,  98,  18,  20,
 330, 218,   5,  95, 207, 183, 181, 175, 100, 174,
  82,  83, 141, 131, 104, 107, 130, 101, 375, 351,
 103,  96,  98, 263, 344, 219, 176, 262,  81, 102,
 333,  97, 106, 100, 258, 286, 105,   6, 225, 104,
  99, 341, 101, 151,  25, 103,  96, 205,  92, 291,
 230, 259, 204, 150, 102, 342,  97, 106, 284, 332,
 260, 105, 281, 290,   3,  99, 280,  85, 278, 202,
 279,  15, 224,  18, 276, 261, 231, 289, 334, 226,
 111, 149, 145, 204, 223, 273, 285, 149, 145, 272,
 203, 147,  16,  14, 232, 295, 271, 147,   5, 268,
 202, 195, 196, 267, 294, 125, 137, 139, 179, 200,
 266, 277, 215, 142,  26, 109, 148,   4, 180,  88,
   8, 203, 148,   8,   8, 144, 146, 327, 324, 165,
  19, 144, 146, 323,  23, 320, 319, 316, 315, 314,
 313, 312, 309, 308, 305, 304, 301, 300, 299, 298,
 297, 213, 211, 210, 208, 170, 169, 168, 184, 185,
 167, 166, 164, 123, 122, 121, 120, 119, 366, 118,
 117, 199, 162, 190, 116, 115, 114, 113, 112,  21,
  89, 189, 374, 373, 372, 371, 370, 209, 369, 368,
 365, 364, 363, 362,   5, 361, 360, 359, 358,   5,
 357, 356, 367, 126, 355,  91, 163, 354, 353, 352,
   8, 328, 325, 110, 321, 317, 310, 306, 302, 228,
 242, 243, 244, 245, 227, 246, 247, 248, 129, 212,
 128, 132, 133, 134, 135,  24,   7,   7,  24, 194,
 193, 192, 188, 296, 187, 186, 171, 161, 160, 159,
 158, 303, 157, 156, 155, 154, 307, 153, 152, 124,
  84, 311,  22, 178, 177, 143, 197, 108,  90, 318,
 293, 288, 283, 255, 322, 241, 254, 240, 253, 326,
 239, 275, 329, 270, 182, 265, 335, 257, 252, 336,
 337, 237, 251, 338, 339, 236, 250, 340, 198, 214,
 235, 346, 249, 206, 234, 201, 220, 173, 216, 172,
 138,  94,  93,  86,  17, 233,  13,  87, 222,  12,
  11,   2, 238, 229,   1, 140, 217, 343,   0,   0,
   0, 221,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0, 256, 264, 269, 274, 282, 287, 292 };
short yypact[]={

-122,-1000,-1000,-1000,-170, 184,-1000,-1000,-1000, 270,
 270,-115,-1000,-1000, 191, 322,-1000,-1000, 183,-162,
 270,-257,-1000,-198,-1000,-1000, 320,-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,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000, 270, 270,-1000, 270,-1000,-138,-196,-1000,
-1000,-1000,  60,-1000,-1000, 190, 189, 188, 187, 186,
 182, 181, 179, 178, 177, 176, 175, 319,-1000,-1000,
-171, 270,-1000,-257,-227,-230,-257,-257,-257,-257,
-1000,-1000,-1000,-231,-1000,-105,-1000, 180,-158, 318,
 317, 315, 314, 313, 312, 310, 309, 308, 307,-1000,
 232,-1000, 174,-1000, 173, 172, 169, 168, 167, 306,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-234,-236, 270,-216,  65,-237,-257,
-238,-1000,-1000,-1000,-1000, 305, 304, 302, 207,-1000,
 -69, 301, 300, 299, 270, 270,-1000,-1000,-1000,  65,
 197,-1000,-1000,-1000,-1000,-103,-155,-1000,-1000,-239,
 166,-1000, 165, 164, 289, 163, -99,  57,-1000, 270,
-242,-217,-1000,-1000,-1000,-1000,-1000,-150, 284, 279,
-1000,-139,-134,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000, 270, 270, 270, 270, 270, 270, 270,-163,
 -87,-101,-124,-151,-137, -91,-1000,-1000, 162, 161,
 160, 159, 158, 278,-1000,-1000, 157, 156, 277,-1000,
-1000, 155, 154, 276,-1000,-1000, 153, 152, 151, 150,
 149, 275,-1000,-1000, 148, 147, 274,-1000,-1000, 145,
 140, 272,-1000,-1000, 139, 271, 270,-1000,-243,-247,
-161,-1000,-1000, 270,-1000,-1000,-1000, 270,-1000,-1000,
-1000, 270,-1000,-164,-218,-248,-1000,-1000, 270,-249,
-252,-1000, 270,-254,-256,-1000, 270,-223,-1000, 269,
 268, 267, 264, 261, 260, 258, 257, 256, 255, 253,
 252, 251, 250, 228,-1000, 249, 248, 246, 245, 244,
 243, 242,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-224,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000 };
short yypgo[]={

   0, 184,  54, 397, 395, 394, 391, 187,  55, 390,
 389, 162, 387, 386, 384, 383, 189, 382, 381, 380,
 379, 171, 378, 377, 172, 376, 375, 374, 372, 370,
 366, 365, 362, 361, 358, 357, 355, 353, 351, 350,
 348, 347, 346, 345, 343, 342, 341, 340, 338, 337,
 175, 336, 335, 334, 333, 178 };
short yyr1[]={

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

   0,   0,  12,   1,   3,   0,   4,   2,   2,   0,
   0,   8,   3,   0,   4,   4,   4,   4,   4,   4,
   4,   4,   4,   4,   4,   2,   3,   1,   1,   0,
  12,   0,  12,   3,   0,   4,   4,   2,   0,   0,
   6,   0,   6,   0,   6,   0,   6,   3,   0,   4,
   4,   4,   4,   4,   4,   4,   2,   3,   0,   4,
   4,   2,   3,   0,   4,   4,   2,   3,   0,   4,
   4,   4,   4,   4,   4,   2,   3,   1,   0,   6,
   0,   6,   0,   6,   3,   0,   4,   4,   2,   3,
   0,   4,   4,   2,   3,   0,   4,   2,   2,   0,
   0,   0,  10,   2,   3,   0,   4,   4,   4,   4,
   4,   2,   1,   0,   3,   1,   5,   2,   0,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
   1,   1,   1,   3,   3,   2,   0 };
short yychk[]={

-1000,  -5,  -6, 256,  -7,  -8, 277, 123,  10,  -8,
  -8,  -9, -10, -13, 278, 256, -11, -14,  -8,  -7,
  -8,  58,  10,  -7, 125, 276,  -1, 310, 257, 258,
 259, 260, 261, 262, 263, 264, 265, 266, 267, 268,
 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
 279, 280, 281, 282, 283, 284, 285, 286, 287, 288,
 290, 289, 291, 292, 293, 294, 295, 296, 297, 298,
 299, 300, 301, 302, 303, 304, 305, 306, 307, 309,
 308, 296,  -8,  -8,  10,  -8, -15, -12, -16, -11,
 -48,  -7, 256, -17, -18, 269, 287, 297, 263, 306,
 274, 283, 295, 286, 280, 302, 298, 256, -49, 125,
 -16,  -8,  58,  58,  58,  58,  58,  58,  58,  58,
  58,  58,  58,  58,  10, -50, -11,  -8,  -7,  -1,
 313, 313,  -1,  -1,  -1,  -1,  -2,  -2, -19,  -2,
  -4, 313, 288, -52, 300, 257, 301, 266, 291, 256,
 281, 271,  10,  10,  10,  10,  10,  10,  10,  10,
  10,  10,  10,  44,  58,  -8,  58,  58,  58,  58,
  58,  10, -20, -23, 313, 313, 312, -53, -54, -55,
 123, 313,  -1, 313,  -8,  -8,  10,  10,  10,  44,
 312, 125,  10,  10,  10, -21, -24, -51, -55,  44,
 282, -26, 273, 294, 256, 272, -50, 313,  58,  -8,
  58,  58,  10,  58, -11, 125, -22,  -7, 313, 312,
 -25,  -7, -21, 304, 292, 258, 299,  10,  10, -24,
 259, 285, 303, -11, -27, -29, -31, -33, -11, -39,
 -41, -43,  -8,  -8,  -8,  -8,  -8,  -8,  -8, -28,
 -30, -32, -34, -40, -42, -44, -11, -35, 267, 284,
 293, 308, 260, 256, -11, -36, 267, 260, 256, -11,
 -37, 267, 260, 256, -11, -38, 268, 305, 262, 264,
 260, 256, -11, -45, 279, 307, 256, -11, -46, 284,
 270, 256, -11, -47, 265, 256,  -8,  58,  58,  58,
  58,  58,  10,  -8,  58,  58,  10,  -8,  58,  58,
  10,  -8,  58,  58,  58,  58,  58,  10,  -8,  58,
  58,  10,  -8,  58,  58,  10,  -8,  58,  10,  -2,
 313, 313, 290, 261, 309,  -2,  -2,  -2,  -2,  -2,
  -2, 275, 289,  -3, 312, 313,  -2, 313, 313, 313,
 313, 312,  10,  10,  10,  10,  10,  10,  10,  10,
  10,  10,  10,  10,  10,  10,  10,  44,  10,  10,
  10,  10,  10,  10,  10, 312 };
short yydef[]={

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

#
# 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 1:
# line 53 "parser.y"
{ yybegin(); bform = NewFormclass(); yyparsedform = NULL; } break;
case 2:
# line 55 "parser.y"
{ yyparsedform = bform; } break;
case 3:
# line 56 "parser.y"
{ FreeFormclass(bform); } break;
case 6:
# line 62 "parser.y"
{ strdupinto(&bform->formname, yypvt[-1].s); } break;
case 10:
# line 68 "parser.y"
{ bf = NewField(bform); } break;
case 14:
# line 74 "parser.y"
{ strdupinto(&bf->name, yypvt[-1].s); } break;
case 15:
# line 75 "parser.y"
{ bf->row = yypvt[-1].i; } break;
case 16:
# line 76 "parser.y"
{ bf->col = yypvt[-1].i; } break;
case 17:
# line 77 "parser.y"
{ strdupinto(&bf->up, yypvt[-1].s); } break;
case 18:
# line 78 "parser.y"
{ strdupinto(&bf->down, yypvt[-1].s); } break;
case 19:
# line 79 "parser.y"
{ strdupinto(&bf->left, yypvt[-1].s); } break;
case 20:
# line 80 "parser.y"
{ strdupinto(&bf->right, yypvt[-1].s); } break;
case 21:
# line 81 "parser.y"
{ strdupinto(&bf->lockedif, yypvt[-1].s); } break;
case 22:
# line 82 "parser.y"
{ strdupinto(&bf->hiddenif, yypvt[-1].s); } break;
case 24:
# line 84 "parser.y"
{ putinto(&bf->screen, yypvt[-1].il); } break;
case 26:
# line 88 "parser.y"
{ yyval.il = intlistconcat(yypvt[-2].il, yypvt[-0].i); } break;
case 27:
# line 89 "parser.y"
{ yyval.il = intlistconcat(NULL, yypvt[-0].i); } break;
case 28:
# line 92 "parser.y"
{ SetTextAttributes(bf, yypvt[-0].s); } break;
case 29:
# line 95 "parser.y"
{ MakeFieldDetail(bf, INPUT); } break;
case 31:
# line 97 "parser.y"
{ MakeFieldDetail(bf, DISPLAY); } break;
case 35:
# line 103 "parser.y"
{ bf->detail->inputptr->distance = yypvt[-1].i; } break;
case 36:
# line 104 "parser.y"
{ strdupinto(&bf->detail->inputptr->prompt, yypvt[-1].s); } break;
case 39:
# line 110 "parser.y"
{ MakeField(bf, TEXTINPUT); } break;
case 41:
# line 112 "parser.y"
{ MakeField(bf, NUMERICINPUT); } break;
case 43:
# line 114 "parser.y"
{ MakeField(bf, BOOLEANINPUT); } break;
case 45:
# line 116 "parser.y"
{ MakeField(bf, SELECTIONINPUT); } break;
case 49:
# line 123 "parser.y"
{ SetDefaultValue(bform, bf, yypvt[-1].s); } break;
case 50:
# line 124 "parser.y"
{ bf->detail->inputptr->inputsource->text->length = yypvt[-1].i; } break;
case 51:
# line 125 "parser.y"
{ bf->detail->inputptr->inputsource->text->numlines = yypvt[-1].i; } break;
case 52:
# line 126 "parser.y"
{ bf->detail->inputptr->inputsource->text->wrap = WrapNone; } break;
case 53:
# line 127 "parser.y"
{ bf->detail->inputptr->inputsource->text->wrap = WrapChar; } break;
case 54:
# line 128 "parser.y"
{ bf->detail->inputptr->inputsource->text->wrap = WrapWord; } break;
case 55:
# line 129 "parser.y"
{ strdupinto(&bf->detail->inputptr->inputsource->text->calculate, yypvt[-1].s); } break;
case 59:
# line 136 "parser.y"
{ SetDefaultValue(bform, bf, yypvt[-1].s); } break;
case 60:
# line 137 "parser.y"
{ strdupinto(&bf->detail->inputptr->inputsource->numeric->calculate, yypvt[-1].s); } break;
case 64:
# line 144 "parser.y"
{ SetDefaultValue(bform, bf, yypvt[-1].s); } break;
case 65:
# line 145 "parser.y"
{ strdupinto(&bf->detail->inputptr->inputsource->boolean->calculate, yypvt[-1].s); } break;
case 69:
# line 152 "parser.y"
{ SetDefaultValue(bform, bf, yypvt[-1].s); } break;
case 70:
# line 153 "parser.y"
{ bf->detail->inputptr->inputsource->selection->type = EXCLUSIVE; } break;
case 71:
# line 154 "parser.y"
{ bf->detail->inputptr->inputsource->selection->type = NONEXCLUSIVE; } break;
case 72:
# line 155 "parser.y"
{ putinto(&bf->detail->inputptr->inputsource->selection->choices, yypvt[-1].sl); } break;
case 73:
# line 156 "parser.y"
{ bf->detail->inputptr->inputsource->selection->columns = yypvt[-1].i; } break;
case 74:
# line 157 "parser.y"
{ strdupinto(&bf->detail->inputptr->inputsource->selection->calculate, yypvt[-1].s); } break;
case 76:
# line 161 "parser.y"
{ yyval.sl = stringlistconcat(yypvt[-2].sl, yypvt[-0].s); } break;
case 77:
# line 162 "parser.y"
{ yyval.sl = stringlistconcat(NULL, yypvt[-0].s); } break;
case 78:
# line 165 "parser.y"
{ MakeField(bf, BOXDISPLAY); } break;
case 80:
# line 167 "parser.y"
{ MakeField(bf, LINEDISPLAY); } break;
case 82:
# line 169 "parser.y"
{ MakeField(bf, TEXTDISPLAY); } break;
case 86:
# line 176 "parser.y"
{ bf->detail->displayptr->display->box->height = yypvt[-1].i; } break;
case 87:
# line 177 "parser.y"
{ bf->detail->displayptr->display->box->width = yypvt[-1].i; } break;
case 91:
# line 184 "parser.y"
{ bf->detail->displayptr->display->line->length = yypvt[-1].i; } break;
case 92:
# line 185 "parser.y"
{ bf->detail->displayptr->display->line->direction = yypvt[-1].i; } break;
case 96:
# line 192 "parser.y"
{ strdupinto(&bf->detail->displayptr->display->text->data, yypvt[-1].s); } break;
case 100:
# line 199 "parser.y"
{ bn = NewNode(bform); } break;
case 101:
# line 200 "parser.y"
{ bn->nodenumber = yypvt[-1].i; } break;
case 106:
# line 207 "parser.y"
{ strdupinto(&bn->statusstring, yypvt[-1].s); } break;
case 108:
# line 209 "parser.y"
{ bn->terminal = yypvt[-1].i; } break;
case 109:
# line 210 "parser.y"
{ strdupinto(&bn->defaultqueue, yypvt[-1].s); } break;
case 110:
# line 211 "parser.y"
{ bn->notify = yypvt[-1].i; } break;
case 116:
# line 220 "parser.y"
{ NewAction(bn, strdup(yypvt[-3].s), yypvt[-1].i); } break;
case 118:
# line 224 "parser.y"
{ yyval.s = yylexany(); } break; 
		}
		goto yystack;  /* stack new state and value */

	}
