diff options
Diffstat (limited to 'lib/libforms/parser.c')
| -rw-r--r-- | lib/libforms/parser.c | 1022 |
1 files changed, 0 insertions, 1022 deletions
diff --git a/lib/libforms/parser.c b/lib/libforms/parser.c deleted file mode 100644 index c5ca0aa69f9c..000000000000 --- a/lib/libforms/parser.c +++ /dev/null @@ -1,1022 +0,0 @@ -#ifndef lint -static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; -#endif -#define YYBYACC 1 -#define YYMAJOR 1 -#define YYMINOR 9 -#define yyclearin (yychar=(-1)) -#define yyerrok (yyerrflag=0) -#define YYRECOVERING (yyerrflag!=0) -#define YYPREFIX "yy" -#line 2 "parser.y" -/*- - * Copyright (c) 1995 - * Paul Richards. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer, - * verbatim and that no modifications are made prior to this - * point in the file. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Paul Richards. - * 4. The name Paul Richards may not be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY PAUL RICHARDS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL PAUL RICHARDS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ -#include <stdlib.h> -#include <string.h> -#include <stdio.h> -#include <forms.h> -#include <err.h> - -#include "internal.h" - -char *cpstr(char *); - -extern int yyleng; -int lineno = 1; -int charno = 1; -int off; - -char *fieldname; -char *defname; -char *formname; -char *startname; -char *colortable; -int formattr; -char *text; -char *label; -char *function; -char *up, *down, *left, *right, *next; -int height, width; -int y, x; -int width; -int limit; -int attr; -int selattr; -int type; -int lbl_flag; -int selected, no_options=0; - -extern FILE *outf; - -struct MenuList { - char *option; - struct MenuList *next; -}; - -struct MenuList *cur_menu; -struct MenuList *menu_list; -struct MenuList *menu; - -struct pair_node { - char *foreground; - char *background; - struct pair_node *next; -}; -struct pair_node *pair_list; -struct pair_node *cur_pair; -struct pair_node *pair; - -struct color_table { - char *tablename; - struct pair_node *pairs; - struct color_table *next; -}; - -struct color_table *color_table; -struct color_table *cur_table; -struct color_table *color_tables; - -struct Form *form; -struct Field *field_inst_list; -struct Field *field; -struct Field *cur_field; -#line 106 "parser.y" -typedef union { - int ival; - char *sval; -} YYSTYPE; -#line 120 "y.tab.c" -#define FORM 257 -#define COLORTABLE 258 -#define COLOR 259 -#define BLACK 260 -#define RED 261 -#define GREEN 262 -#define YELLOW 263 -#define BLUE 264 -#define MAGENTA 265 -#define CYAN 266 -#define WHITE 267 -#define PAIR 268 -#define NAME 269 -#define STRING 270 -#define AT 271 -#define AS 272 -#define HEIGHT 273 -#define EQUALS 274 -#define NUMBER 275 -#define WIDTH 276 -#define STARTFIELD 277 -#define COMMA 278 -#define LBRACE 279 -#define RBRACE 280 -#define TEXT 281 -#define ATTR 282 -#define SELATTR 283 -#define DEFAULT 284 -#define LABEL 285 -#define LIMIT 286 -#define SELECTED 287 -#define OPTIONS 288 -#define ACTION 289 -#define FUNC 290 -#define LINK 291 -#define UP 292 -#define DOWN 293 -#define LEFT 294 -#define RIGHT 295 -#define NEXT 296 -#define DEF 297 -#define YYERRCODE 256 -short yylhs[] = { -1, - 0, 0, 0, 0, 5, 4, 6, 6, 8, 7, - 1, 1, 1, 1, 1, 1, 1, 1, 9, 11, - 3, 12, 15, 15, 16, 16, 17, 17, 18, 18, - 21, 23, 19, 25, 2, 20, 26, 20, 20, 24, - 22, 22, 30, 30, 30, 30, 30, 29, 29, 29, - 29, 31, 32, 35, 35, 36, 36, 33, 37, 37, - 38, 34, 13, 13, 14, 14, 27, 27, 28, 28, - 10, -}; -short yylen[] = { 2, - 0, 2, 2, 2, 0, 6, 0, 2, 0, 6, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, - 9, 6, 0, 3, 0, 3, 0, 3, 0, 2, - 0, 0, 7, 0, 3, 0, 0, 4, 1, 7, - 0, 3, 3, 3, 3, 3, 3, 1, 1, 1, - 1, 3, 1, 4, 4, 0, 3, 6, 1, 3, - 1, 6, 0, 3, 0, 3, 0, 3, 0, 3, - 3, -}; -short yydefred[] = { 1, - 0, 0, 0, 34, 2, 3, 4, 19, 5, 0, - 0, 0, 0, 35, 0, 7, 0, 0, 0, 20, - 0, 0, 0, 0, 0, 0, 0, 6, 8, 64, - 0, 0, 0, 71, 0, 0, 66, 0, 0, 0, - 0, 0, 11, 12, 13, 14, 15, 16, 17, 18, - 9, 68, 0, 0, 0, 0, 0, 0, 0, 48, - 49, 50, 51, 53, 21, 0, 0, 70, 0, 0, - 0, 0, 0, 40, 0, 0, 0, 52, 0, 0, - 0, 0, 0, 0, 0, 10, 0, 55, 54, 0, - 0, 24, 0, 0, 29, 0, 0, 0, 26, 0, - 0, 57, 61, 0, 59, 62, 28, 31, 30, 0, - 0, 60, 0, 0, 39, 37, 0, 0, 32, 38, - 41, 0, 0, 0, 0, 0, 0, 0, 42, 0, - 0, 0, 0, 0, 43, 44, 45, 46, 47, -}; -short yydgoto[] = { 1, - 51, 5, 6, 7, 12, 21, 29, 67, 11, 20, - 26, 41, 18, 24, 76, 85, 95, 101, 109, 114, - 111, 122, 121, 14, 10, 118, 33, 40, 59, 129, - 60, 61, 62, 63, 64, 88, 104, 105, -}; -short yysindex[] = { 0, - -252, -261, -240, 0, 0, 0, 0, 0, 0, -248, - -234, -237, -225, 0, -236, 0, -219, -214, -212, 0, - -259, -216, -205, -196, -204, -192, -186, 0, 0, 0, - -185, -183, -194, 0, -225, -187, 0, -182, -180, -224, - -188, -214, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -179, -177, -176, -175, -174, -173, -178, 0, - 0, 0, 0, 0, 0, -172, -171, 0, -167, -166, - -164, -165, -162, 0, -163, -149, -187, 0, -191, -191, - -170, -169, -157, -161, -168, 0, -159, 0, 0, -158, - -155, 0, -152, -154, 0, -153, -147, -145, 0, -150, - -143, 0, 0, -151, 0, 0, 0, 0, 0, -147, - -148, 0, -263, -142, 0, 0, -236, -146, 0, 0, - 0, -141, -211, -144, -139, -138, -136, -135, 0, -137, - -129, -128, -127, -126, 0, 0, 0, 0, 0, -}; -short yyrindex[] = { 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, -249, 0, 0, 0, 0, -238, 0, 0, - 0, 0, 0, -231, 0, 0, 0, 0, 0, 0, - 0, 0, -217, 0, -258, 0, 0, 0, 0, 0, - 0, -257, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -254, 0, 0, 0, 0, - 0, 0, 0, 0, 0, -266, 0, 0, -134, -134, - 0, 0, 0, 0, -267, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - -133, 0, 0, -132, 0, 0, 0, 0, 0, 0, - -122, 0, -249, 0, 0, 0, 0, 0, 0, 0, - 0, -239, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -}; -short yygindex[] = { 0, - 51, 0, 0, 0, 0, 0, 0, 0, 0, 16, - 0, 0, 109, 103, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 71, 0, 42, -}; -#define YYTABLESIZE 152 -short yytable[] = { 63, - 65, 27, 25, 23, 2, 116, 3, 8, 27, 17, - 63, 65, 27, 25, 23, 25, 4, 63, 63, 65, - 28, 63, 65, 63, 65, 23, 63, 23, 9, 33, - 13, 63, 63, 63, 63, 63, 15, 63, 19, 63, - 33, 16, 65, 65, 65, 65, 65, 17, 65, 67, - 65, 67, 67, 67, 22, 67, 54, 67, 30, 55, - 56, 23, 57, 69, 58, 25, 69, 69, 31, 69, - 34, 69, 43, 44, 45, 46, 47, 48, 49, 50, - 124, 125, 126, 127, 128, 32, 35, 36, 39, 37, - 38, 65, 52, 53, 87, 68, 69, 70, 71, 72, - 73, 74, 78, 79, 75, 80, 77, 82, 84, 81, - 83, 92, 93, 94, 96, 97, 99, 90, 98, 100, - 91, 102, 103, 106, 107, 108, 110, 86, 117, 130, - 113, 135, 119, 120, 131, 132, 123, 133, 134, 136, - 137, 138, 139, 42, 66, 56, 22, 58, 36, 115, - 89, 112, -}; -short yycheck[] = { 258, - 258, 269, 269, 258, 257, 269, 259, 269, 268, 273, - 269, 269, 280, 280, 269, 282, 269, 276, 277, 277, - 280, 280, 280, 282, 282, 280, 276, 282, 269, 269, - 279, 281, 282, 283, 284, 285, 271, 287, 275, 289, - 280, 279, 281, 282, 283, 284, 285, 273, 287, 281, - 289, 283, 284, 285, 274, 287, 281, 289, 275, 284, - 285, 276, 287, 281, 289, 278, 284, 285, 274, 287, - 275, 289, 260, 261, 262, 263, 264, 265, 266, 267, - 292, 293, 294, 295, 296, 282, 279, 274, 283, 275, - 274, 280, 275, 274, 286, 275, 274, 274, 274, 274, - 274, 280, 270, 270, 277, 270, 278, 270, 258, 275, - 274, 269, 274, 282, 274, 274, 269, 288, 274, 274, - 290, 275, 270, 269, 275, 269, 278, 77, 271, 274, - 279, 269, 117, 280, 274, 274, 278, 274, 274, 269, - 269, 269, 269, 35, 42, 280, 280, 280, 271, 111, - 80, 110, -}; -#define YYFINAL 1 -#ifndef YYDEBUG -#define YYDEBUG 0 -#endif -#define YYMAXTOKEN 297 -#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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"FORM","COLORTABLE","COLOR", -"BLACK","RED","GREEN","YELLOW","BLUE","MAGENTA","CYAN","WHITE","PAIR","NAME", -"STRING","AT","AS","HEIGHT","EQUALS","NUMBER","WIDTH","STARTFIELD","COMMA", -"LBRACE","RBRACE","TEXT","ATTR","SELATTR","DEFAULT","LABEL","LIMIT","SELECTED", -"OPTIONS","ACTION","FUNC","LINK","UP","DOWN","LEFT","RIGHT","NEXT","DEF", -}; -char *yyrule[] = { -"$accept : spec", -"spec :", -"spec : spec fields", -"spec : spec forms", -"spec : spec colours", -"$$1 :", -"colours : COLOR NAME $$1 LBRACE color_pairs RBRACE", -"color_pairs :", -"color_pairs : color_pairs pair", -"$$2 :", -"pair : PAIR EQUALS a_color $$2 COMMA a_color", -"a_color : BLACK", -"a_color : RED", -"a_color : GREEN", -"a_color : YELLOW", -"a_color : BLUE", -"a_color : MAGENTA", -"a_color : CYAN", -"a_color : WHITE", -"$$3 :", -"$$4 :", -"forms : FORM NAME $$3 AT coord $$4 LBRACE formspec RBRACE", -"formspec : height width startfield colortable formattr fieldlocs", -"startfield :", -"startfield : STARTFIELD EQUALS NAME", -"colortable :", -"colortable : COLORTABLE EQUALS NAME", -"formattr :", -"formattr : ATTR EQUALS NUMBER", -"fieldlocs :", -"fieldlocs : fieldlocs field_at", -"$$5 :", -"$$6 :", -"field_at : NAME $$5 field_def AT coord $$6 links", -"$$7 :", -"fields : NAME $$7 field_spec", -"field_def :", -"$$8 :", -"field_def : LBRACE NAME $$8 RBRACE", -"field_def : field_spec", -"field_spec : LBRACE height width attr selattr type RBRACE", -"links :", -"links : links COMMA conns", -"conns : UP EQUALS NAME", -"conns : DOWN EQUALS NAME", -"conns : LEFT EQUALS NAME", -"conns : RIGHT EQUALS NAME", -"conns : NEXT EQUALS NAME", -"type : textfield", -"type : inputfield", -"type : menufield", -"type : actionfield", -"textfield : TEXT EQUALS STRING", -"inputfield : inputspec", -"inputspec : LABEL EQUALS STRING limit", -"inputspec : DEFAULT EQUALS STRING limit", -"limit :", -"limit : LIMIT EQUALS NUMBER", -"menufield : SELECTED EQUALS NUMBER OPTIONS EQUALS menuoptions", -"menuoptions : menuoption", -"menuoptions : menuoptions COMMA menuoption", -"menuoption : STRING", -"actionfield : ACTION EQUALS STRING FUNC EQUALS NAME", -"height :", -"height : HEIGHT EQUALS NUMBER", -"width :", -"width : WIDTH EQUALS NUMBER", -"attr :", -"attr : ATTR EQUALS NUMBER", -"selattr :", -"selattr : SELATTR EQUALS NUMBER", -"coord : NUMBER COMMA NUMBER", -}; -#endif -#ifdef YYSTACKSIZE -#undef YYMAXDEPTH -#define YYMAXDEPTH YYSTACKSIZE -#else -#ifdef YYMAXDEPTH -#define YYSTACKSIZE YYMAXDEPTH -#else -#define YYSTACKSIZE 500 -#define YYMAXDEPTH 500 -#endif -#endif -int yydebug; -int yynerrs; -int yyerrflag; -int yychar; -short *yyssp; -YYSTYPE *yyvsp; -YYSTYPE yyval; -YYSTYPE yylval; -short yyss[YYSTACKSIZE]; -YYSTYPE yyvs[YYSTACKSIZE]; -#define yystacksize YYSTACKSIZE -#line 434 "parser.y" - -void -yyerror (char *error) -{ - fprintf(stderr, "%s at line %d\n",error, lineno); - exit(1); -} - -char * -cpstr(char *ostr) -{ - char *nstr; - - nstr = malloc(strlen(ostr)+1); - if (!nstr) { - fprintf(stderr, "Couldn't allocate memory for string\n"); - exit(1); - } - strcpy(nstr, ostr); - return (nstr); -} - -/* Calculate a default height for a field */ - -void -calc_field_height(struct Field *field, char *string) -{ - - int len; - - len = strlen(string); - - if (!field->width) { - /* - * This is a failsafe, this routine shouldn't be called - * with a width of 0, the width should be determined - * first. - */ - field->height = 1; - return; - } - - if (len < field->width) { - field->height = 1; - return; - } else - field->height = len / field->width; - - if ((field->height*field->width) < len) - field->height++; - - return; -} - -void -define_field(char *defname) -{ - struct Field *field; - struct MenuList *menu_options; - int no_options; - - field = malloc(sizeof (struct Field)); - if (!field) { - fprintf(stderr,"Failed to allocate memory for form field\n"); - exit(1); - } - field->defname = defname; - field->type = type; - field->height = height; - field->width = width; - field->attr = attr; - field->selattr = selattr; - switch (type) { - case FF_TEXT: - field->field.text = malloc(sizeof (struct TextField)); - if (!field->field.text) { - fprintf(stderr, - "Failed to allocate memory for text field\n"); - exit (1); - } - field->field.text->text = text; - break; - case FF_INPUT: - field->field.input = malloc(sizeof (struct InputField)); - if (!field->field.input) { - fprintf(stderr, - "Failed to allocate memory for input field\n"); - exit (1); - } - field->field.input->lbl_flag = lbl_flag; - field->field.input->label = label; - field->field.input->limit = limit; - break; - case FF_MENU: - printf("field type %s = %d\n", defname,field->type); - field->field.menu = malloc(sizeof (struct MenuField)); - if (!field->field.menu) { - fprintf(stderr, - "Failed to allocate memory for menu field\n"); - exit (1); - } - field->field.menu->selected = selected; - menu_options = menu_list; - field->field.menu->no_options = 0; - field->field.menu->options = 0; - for (; menu_options; menu_options = menu_options->next) { - no_options = add_menu_option(field->field.menu, - menu_options->option); - if (!no_options) - err(1, "Couldn't add menu option"); - } - field->field.menu->no_options = no_options; - cur_menu = 0; - break; - case FF_ACTION: - field->field.action = malloc(sizeof (struct ActionField)); - if (!field->field.action) { - fprintf(stderr, - "Failed to allocate memory for action field\n"); - exit (1); - } - field->field.action->text = text; - field->field.action->fn = (void *) function; - break; - default: - break; - } - form_bind_tuple(defname, FT_FIELD_DEF, field); - width=0; - height = 0; - attr=0; - selattr=0; - limit=0; -} -#line 531 "y.tab.c" -#define YYABORT goto yyabort -#define YYREJECT 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' && 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("%sdebug: state %d, reading %d (%s)\n", - YYPREFIX, yystate, yychar, yys); - } -#endif - } - if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 && - yyn <= YYTABLESIZE && yycheck[yyn] == yychar) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, shifting to state %d\n", - YYPREFIX, 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("%sdebug: state %d, error recovery shifting\ - to state %d\n", YYPREFIX, *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("%sdebug: error recovery discarding state %d\n", - YYPREFIX, *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("%sdebug: state %d, error recovery discards token %d (%s)\n", - YYPREFIX, yystate, yychar, yys); - } -#endif - yychar = (-1); - goto yyloop; - } -yyreduce: -#if YYDEBUG - if (yydebug) - printf("%sdebug: state %d, reducing by rule %d (%s)\n", - YYPREFIX, yystate, yyn, yyrule[yyn]); -#endif - yym = yylen[yyn]; - yyval = yyvsp[1-yym]; - switch (yyn) - { -case 5: -#line 166 "parser.y" -{ - color_table = malloc(sizeof (struct color_table)); - if (!color_table) { - fprintf(stderr, "Couldn't allocate memory for a color table\n"); - exit (1); - } - color_table->tablename = cpstr(yyvsp[0].sval); - } -break; -case 6: -#line 175 "parser.y" -{ - color_table->pairs = pair_list; - cur_pair = 0; - form_bind_tuple(color_table->tablename, FT_COLTAB, color_table); - } -break; -case 9: -#line 187 "parser.y" -{ - pair = malloc(sizeof (struct pair_node)); - if (!pair) { - fprintf(stderr, "Couldn't allocate memory for a color pair\n"); - exit(1); - } - pair->foreground = cpstr(yyvsp[0].sval); - } -break; -case 10: -#line 196 "parser.y" -{ - pair->background = cpstr(yyvsp[0].sval); - if (!cur_pair) { - pair_list = pair; - cur_pair = pair; - } else { - cur_pair->next = pair; - cur_pair = pair; - } - } -break; -case 11: -#line 209 "parser.y" -{ yyval.sval = "COLOR_BLACK"; } -break; -case 12: -#line 211 "parser.y" -{ yyval.sval = "COLOR_RED"; } -break; -case 13: -#line 213 "parser.y" -{ yyval.sval = "COLOR_GREEN"; } -break; -case 14: -#line 215 "parser.y" -{ yyval.sval = "COLOR_YELLOW"; } -break; -case 15: -#line 217 "parser.y" -{ yyval.sval = "COLOR_BLUE"; } -break; -case 16: -#line 219 "parser.y" -{ yyval.sval = "COLOR_MAGENTA"; } -break; -case 17: -#line 221 "parser.y" -{ yyval.sval = "COLOR_CYAN"; } -break; -case 18: -#line 223 "parser.y" -{ yyval.sval = "COLOR_WHITE"; } -break; -case 19: -#line 227 "parser.y" -{ formname = cpstr(yyvsp[0].sval); } -break; -case 20: -#line 229 "parser.y" -{ - form = malloc(sizeof (struct Form)); - if (!form) { - fprintf(stderr,"Failed to allocate memory for form\n"); - exit(1); - } - form->y = y; - form->x = x; - } -break; -case 21: -#line 239 "parser.y" -{ - form->startfield = startname; - form->colortable = colortable; - form->height = height; - form->width = width; - form->attr = formattr; - form->fieldlist = field_inst_list; - field_inst_list = 0; - form_bind_tuple(formname, FT_FORM, form); - } -break; -case 23: -#line 255 "parser.y" -{ startname = 0; - printf("Warning: No start field specified for form %s\n", formname); - } -break; -case 24: -#line 259 "parser.y" -{ startname = cpstr(yyvsp[0].sval); } -break; -case 25: -#line 263 "parser.y" -{ colortable = 0; } -break; -case 26: -#line 265 "parser.y" -{ colortable = cpstr(yyvsp[0].sval); } -break; -case 27: -#line 269 "parser.y" -{ formattr = 0; } -break; -case 28: -#line 271 "parser.y" -{ formattr = yyvsp[0].ival; } -break; -case 31: -#line 279 "parser.y" -{ fieldname = cpstr(yyvsp[0].sval); } -break; -case 32: -#line 281 "parser.y" -{ - field = malloc(sizeof (struct Field)); - if (!field) { - fprintf(stderr,"Failed to allocate memory for form field\n"); - exit(1); - } - if (!defname) - field->defname = fieldname; - else - field->defname = defname; - field->y = y; - field->x = x; - } -break; -case 33: -#line 295 "parser.y" -{ - field->fup = up; - field->fdown = down; - field->fleft = left; - field->fright = right; - field->fnext = next; - if (!field_inst_list) - field_inst_list = field; - up = 0; - down = 0; - left = 0; - right = 0; - next = 0; - if (!cur_field) - cur_field = field; - else { - cur_field->next = field; - cur_field = field; - } - form_bind_tuple(fieldname, FT_FIELD_INST, field); - } -break; -case 34: -#line 319 "parser.y" -{ defname = cpstr(yyvsp[0].sval); } -break; -case 35: -#line 321 "parser.y" -{ define_field(defname); } -break; -case 36: -#line 325 "parser.y" -{ defname = 0; } -break; -case 37: -#line 327 "parser.y" -{ defname = cpstr(yyvsp[0].sval); } -break; -case 39: -#line 330 "parser.y" -{ defname = fieldname; define_field(defname); } -break; -case 43: -#line 341 "parser.y" -{ up = cpstr(yyvsp[0].sval); } -break; -case 44: -#line 343 "parser.y" -{ down = cpstr(yyvsp[0].sval); } -break; -case 45: -#line 345 "parser.y" -{ left = cpstr(yyvsp[0].sval); } -break; -case 46: -#line 347 "parser.y" -{ right = cpstr(yyvsp[0].sval); } -break; -case 47: -#line 349 "parser.y" -{ next = cpstr(yyvsp[0].sval); } -break; -case 52: -#line 359 "parser.y" -{ type = FF_TEXT; text = cpstr(yyvsp[0].sval); } -break; -case 53: -#line 363 "parser.y" -{ type = FF_INPUT; } -break; -case 54: -#line 367 "parser.y" -{ lbl_flag = 1; label = cpstr(yyvsp[-1].sval); } -break; -case 55: -#line 369 "parser.y" -{ lbl_flag = 0; label = cpstr(yyvsp[-1].sval); } -break; -case 57: -#line 374 "parser.y" -{ limit = yyvsp[0].ival; } -break; -case 58: -#line 377 "parser.y" -{ type = FF_MENU; selected = yyvsp[-3].ival; } -break; -case 61: -#line 385 "parser.y" -{ - menu = malloc(sizeof(struct MenuList)); - if (!menu) { - err(1, "Couldn't allocate memory for menu option\n"); - } - menu->option = cpstr(yyvsp[0].sval); - if (!cur_menu) { - menu_list = menu; - cur_menu = menu; - } else { - cur_menu->next = menu; - cur_menu = menu; - } - } -break; -case 62: -#line 402 "parser.y" -{ type = FF_ACTION; text = cpstr(yyvsp[-3].sval); function = cpstr(yyvsp[0].sval); } -break; -case 63: -#line 406 "parser.y" -{ height = 0; } -break; -case 64: -#line 408 "parser.y" -{ height = yyvsp[0].ival; } -break; -case 65: -#line 412 "parser.y" -{ width = 0; } -break; -case 66: -#line 414 "parser.y" -{ width = yyvsp[0].ival; } -break; -case 67: -#line 418 "parser.y" -{ attr = 0; } -break; -case 68: -#line 420 "parser.y" -{ attr = yyvsp[0].ival; } -break; -case 69: -#line 424 "parser.y" -{ selattr = 0; } -break; -case 70: -#line 426 "parser.y" -{ selattr = yyvsp[0].ival; } -break; -case 71: -#line 430 "parser.y" -{ y = yyvsp[-2].ival; x = yyvsp[0].ival; } -break; -#line 967 "y.tab.c" - } - yyssp -= yym; - yystate = *yyssp; - yyvsp -= yym; - yym = yylhs[yyn]; - if (yystate == 0 && yym == 0) - { -#if YYDEBUG - if (yydebug) - printf("%sdebug: after reduction, shifting from state 0 to\ - state %d\n", YYPREFIX, 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("%sdebug: state %d, reading %d (%s)\n", - YYPREFIX, 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]; -#if YYDEBUG - if (yydebug) - printf("%sdebug: after reduction, shifting from state %d \ -to state %d\n", YYPREFIX, *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); -} |
