#include #include #define YYBYACC 1 #define YYMAJOR 1 #define YYMINOR 9 #define YYLEX yylex() #define YYEMPTY -1 #define yyclearin (yychar=(YYEMPTY)) #define yyerrok (yyerrflag=0) #define YYRECOVERING() (yyerrflag!=0) #define YYPREFIX "yy" #line 68 "gram.y" #include #include #include "twm.h" #include "menus.h" #include "list.h" #include "util.h" #include "screen.h" #include "parse.h" #include "add_window.h" #include "icons.h" #include #include static char *Action = ""; static char *Name = ""; static MenuRoot *root, *pull = NULL; static MenuRoot *GetRoot ( const char *name, const char *fore, const char *back ); static void GotButton ( int butt, int func ); static void GotKey ( char *key, int func ); static void GotTitleButton ( char *bitmapname, int func, Bool rightside ); static Bool CheckWarpScreenArg ( char *s ); static Bool CheckWarpRingArg ( char *s ); static Bool CheckColormapArg ( char *s ); static void RemoveDQuote ( char *str ); static char *ptr; static name_list **list; static int cont = 0; static int color; int mods = 0; unsigned int mods_used = (ShiftMask | ControlMask | Mod1Mask); extern int yylineno; static void yyerror ( const char *s ); #line 106 "gram.y" #ifndef YYSTYPE_DEFINED #define YYSTYPE_DEFINED typedef union { int num; char *ptr; } YYSTYPE; #endif /* YYSTYPE_DEFINED */ #line 59 "gram.c" #define LB 257 #define RB 258 #define LP 259 #define RP 260 #define MENUS 261 #define MENU 262 #define BUTTON 263 #define DEFAULT_FUNCTION 264 #define PLUS 265 #define MINUS 266 #define ALL 267 #define OR 268 #define CURSORS 269 #define ICONS 270 #define COLOR 271 #define SAVECOLOR 272 #define MONOCHROME 273 #define FUNCTION 274 #define WINDOW_FUNCTION 275 #define ZOOM 276 #define MAKE_TITLE 277 #define GRAYSCALE 278 #define NO_TITLE 279 #define AUTO_RAISE 280 #define ICON_REGION 281 #define META 282 #define SHIFT 283 #define LOCK 284 #define CONTROL 285 #define WINDOW 286 #define TITLE 287 #define ICON 288 #define ROOT 289 #define FRAME 290 #define COLON 291 #define EQUALS 292 #define START_ICONIFIED 293 #define MOVE 294 #define RESIZE 295 #define WAIT 296 #define SELECT 297 #define KILL 298 #define LEFT_TITLEBUTTON 299 #define RIGHT_TITLEBUTTON 300 #define NUMBER 301 #define KEYWORD 302 #define NKEYWORD 303 #define CKEYWORD 304 #define CLKEYWORD 305 #define FKEYWORD 306 #define FSKEYWORD 307 #define SKEYWORD 308 #define DKEYWORD 309 #define JKEYWORD 310 #define WINDOW_RING 311 #define WARP_CURSOR 312 #define ERRORTOKEN 313 #define NO_STACKMODE 314 #define STRING 315 #define YYERRCODE 256 const short yylhs[] = { -1, 0, 20, 20, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 21, 5, 5, 22, 5, 5, 23, 5, 24, 5, 25, 5, 26, 5, 27, 5, 28, 5, 30, 5, 31, 5, 32, 5, 5, 33, 5, 5, 5, 34, 5, 5, 35, 5, 10, 11, 12, 18, 19, 36, 36, 39, 39, 39, 39, 39, 39, 37, 37, 40, 40, 40, 40, 40, 40, 40, 38, 38, 41, 41, 41, 41, 41, 41, 41, 41, 2, 42, 42, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 3, 44, 44, 13, 45, 13, 13, 4, 46, 46, 47, 47, 6, 48, 48, 49, 7, 50, 50, 51, 29, 52, 52, 53, 8, 54, 54, 55, 9, 56, 56, 57, 57, 14, 14, 17, 17, 17, 15, 1, 16, }; const short yylen[] = { 2, 1, 0, 2, 1, 1, 1, 1, 6, 2, 1, 2, 4, 4, 2, 2, 2, 2, 0, 3, 1, 0, 3, 1, 0, 3, 0, 3, 0, 3, 0, 9, 0, 4, 0, 4, 0, 3, 0, 3, 0, 3, 2, 0, 3, 2, 2, 0, 3, 1, 0, 3, 1, 2, 2, 6, 6, 0, 2, 1, 1, 1, 1, 2, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 1, 1, 3, 0, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 0, 2, 2, 0, 4, 2, 3, 0, 2, 1, 1, 3, 0, 2, 2, 3, 0, 2, 1, 3, 0, 2, 2, 3, 0, 2, 1, 3, 0, 2, 2, 7, 1, 2, 1, 2, 2, 2, 1, 1, }; const short yydefred[] = { 2, 0, 0, 4, 0, 0, 0, 0, 36, 38, 0, 43, 0, 0, 0, 24, 40, 0, 28, 0, 26, 0, 0, 52, 0, 0, 50, 0, 0, 146, 0, 3, 5, 6, 7, 0, 0, 147, 145, 140, 0, 45, 85, 11, 0, 0, 115, 42, 0, 34, 46, 9, 0, 0, 0, 0, 0, 0, 0, 0, 54, 53, 0, 0, 0, 57, 16, 57, 14, 15, 17, 0, 0, 141, 0, 128, 37, 108, 39, 0, 44, 0, 124, 25, 41, 22, 29, 0, 27, 0, 0, 51, 48, 19, 0, 0, 0, 136, 33, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 114, 118, 117, 116, 132, 35, 0, 0, 12, 13, 64, 0, 60, 61, 62, 74, 58, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 0, 129, 107, 0, 0, 109, 0, 123, 126, 125, 0, 63, 0, 0, 0, 135, 0, 137, 101, 93, 89, 91, 87, 95, 97, 99, 103, 105, 130, 113, 0, 131, 134, 133, 8, 81, 82, 76, 77, 78, 79, 80, 0, 83, 75, 72, 73, 67, 68, 69, 70, 71, 0, 66, 30, 0, 138, 0, 56, 55, 0, 0, 120, 112, 31, 0, 0, 0, 119, 0, 121, 0, 122, 139, }; const short yydgoto[] = { 1, 30, 43, 78, 47, 31, 207, 83, 118, 98, 32, 33, 34, 149, 41, 35, 38, 0, 70, 66, 2, 64, 54, 52, 57, 55, 204, 72, 81, 76, 44, 45, 53, 48, 63, 62, 94, 157, 156, 129, 197, 188, 74, 110, 112, 201, 79, 116, 210, 214, 119, 153, 111, 145, 150, 177, 132, 161, }; const short yysindex[] = { 0, 0, -223, 0, -311, -282, -293, -235, 0, 0, -234, 0, -311, -293, -282, 0, 0, 0, 0, -311, 0, -311, -311, 0, -282, -311, 0, 0, 0, 0, -266, 0, 0, 0, 0, -197, -232, 0, 0, 0, -311, 0, 0, 0, -229, -228, 0, 0, -228, 0, 0, 0, -227, -228, -227, -227, -274, -227, -254, -250, 0, 0, -227, -227, -227, 0, 0, 0, 0, 0, 0, -311, -214, 0, -108, 0, 0, 0, 0, -242, 0, -213, 0, 0, 0, 0, 0, -264, 0, -293, -293, 0, 0, 0, -66, -47, -226, 0, 0, 0, -311, -311, -311, -311, -311, -311, -311, -311, -311, -311, 0, -255, -221, 0, 0, 0, 0, 0, 0, -253, -282, 0, 0, 0, -282, 0, 0, 0, 0, 0, 0, -311, -251, -311, -311, -311, -311, -311, -311, -311, -311, -311, -311, 0, -311, 0, 0, -311, -311, 0, -238, 0, 0, 0, -282, 0, -119, -1, -201, 0, -225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -293, 0, 0, 0, 0, 0, 0, 0, 0, 0, -293, 0, 0, -311, 0, -183, 0, 0, -214, -198, 0, 0, 0, -311, -249, -182, 0, -311, 0, -293, 0, 0,}; const short yyrindex[] = { 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 175, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 121, 0, 0, 0, 0, 0, 0, 0, -163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, -64, -48, 204, 218, 259, 271, 312, 324, 365, 377, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -233, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,}; const short yygindex[] = { 0, -4, 0, -42, 0, 0, 0, 62, 0, -98, 0, 0, 0, 0, -3, 0, -12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; #define YYTABLESIZE 675 const short yytable[] = { 36, 23, 51, 143, 29, 151, 80, 159, 49, 212, 50, 84, 60, 39, 40, 56, 113, 58, 59, 37, 175, 61, 42, 46, 111, 110, 65, 71, 75, 77, 82, 68, 69, 3, 199, 87, 73, 146, 89, 4, 5, 6, 90, 97, 117, 120, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 198, 29, 49, 29, 114, 29, 131, 29, 96, 39, 40, 20, 110, 110, 29, 206, 115, 21, 22, 215, 23, 24, 39, 40, 147, 148, 25, 121, 122, 26, 27, 1, 28, 29, 209, 32, 67, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 208, 144, 154, 39, 40, 95, 155, 0, 0, 152, 85, 86, 29, 88, 0, 20, 0, 0, 91, 92, 93, 158, 160, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 0, 172, 0, 178, 173, 174, 0, 0, 176, 179, 180, 99, 0, 187, 0, 100, 101, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 181, 182, 183, 184, 185, 186, 0, 0, 10, 0, 0, 0, 102, 103, 0, 104, 202, 0, 0, 105, 106, 107, 108, 109, 0, 0, 203, 102, 205, 29, 0, 102, 102, 0, 0, 123, 0, 0, 211, 213, 0, 0, 216, 94, 0, 217, 0, 94, 94, 124, 125, 126, 127, 0, 123, 0, 102, 102, 128, 102, 0, 0, 0, 102, 102, 102, 102, 102, 124, 125, 126, 127, 94, 94, 0, 94, 0, 130, 59, 94, 94, 94, 94, 94, 0, 0, 0, 0, 0, 0, 23, 21, 59, 59, 59, 59, 23, 23, 23, 189, 190, 59, 0, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 0, 0, 191, 192, 193, 194, 195, 196, 0, 0, 0, 23, 0, 0, 0, 0, 0, 23, 23, 0, 23, 23, 0, 0, 0, 0, 23, 0, 0, 23, 23, 0, 23, 23, 49, 47, 0, 0, 0, 0, 49, 49, 49, 0, 0, 0, 0, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 49, 49, 0, 49, 49, 0, 0, 0, 0, 49, 0, 0, 49, 49, 0, 49, 49, 20, 18, 0, 0, 0, 0, 20, 20, 20, 0, 0, 0, 0, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 20, 20, 0, 20, 20, 0, 0, 0, 0, 20, 0, 10, 20, 20, 0, 20, 20, 10, 10, 10, 0, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 0, 0, 0, 0, 90, 0, 0, 0, 90, 90, 10, 0, 0, 0, 0, 0, 10, 10, 92, 10, 10, 0, 92, 92, 0, 10, 0, 0, 10, 10, 0, 10, 10, 90, 90, 0, 90, 0, 0, 0, 90, 90, 90, 90, 90, 0, 0, 92, 92, 0, 92, 0, 0, 0, 92, 92, 92, 92, 92, 88, 0, 0, 0, 88, 88, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 96, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 88, 0, 88, 0, 0, 0, 88, 88, 88, 88, 88, 96, 96, 0, 96, 0, 0, 0, 96, 96, 96, 96, 96, 98, 0, 0, 0, 98, 98, 0, 0, 0, 0, 0, 0, 100, 0, 0, 0, 100, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 98, 0, 98, 0, 0, 0, 98, 98, 98, 98, 98, 100, 100, 0, 100, 0, 0, 0, 100, 100, 100, 100, 100, 104, 0, 0, 0, 104, 104, 0, 0, 0, 0, 0, 0, 106, 0, 0, 0, 106, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 104, 0, 104, 0, 0, 0, 104, 104, 104, 104, 104, 106, 106, 0, 106, 0, 0, 0, 106, 106, 106, 106, 106, }; const short yycheck[] = { 4, 0, 14, 258, 315, 258, 48, 258, 12, 258, 13, 53, 24, 306, 307, 19, 258, 21, 22, 301, 258, 25, 257, 257, 257, 258, 292, 259, 257, 257, 257, 35, 35, 256, 259, 309, 40, 258, 292, 262, 263, 264, 292, 257, 257, 309, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 260, 315, 0, 315, 305, 315, 291, 315, 71, 306, 307, 293, 304, 305, 315, 257, 79, 299, 300, 260, 302, 303, 306, 307, 304, 305, 308, 89, 90, 311, 312, 0, 314, 315, 291, 257, 292, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 204, 111, 120, 306, 307, 67, 124, -1, -1, 119, 54, 55, 315, 57, -1, 0, -1, -1, 62, 63, 64, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, -1, 144, -1, 154, 147, 148, -1, -1, 150, 267, 268, 258, -1, 156, -1, 262, 263, -1, 160, -1, -1, -1, -1, -1, -1, -1, -1, -1, 286, 287, 288, 289, 290, 291, -1, -1, 0, -1, -1, -1, 287, 288, -1, 290, 186, -1, -1, 294, 295, 296, 297, 298, -1, -1, 196, 258, 199, 315, -1, 262, 263, -1, -1, 268, -1, -1, 209, 210, -1, -1, 213, 258, -1, 215, -1, 262, 263, 282, 283, 284, 285, -1, 268, -1, 287, 288, 291, 290, -1, -1, -1, 294, 295, 296, 297, 298, 282, 283, 284, 285, 287, 288, -1, 290, -1, 291, 268, 294, 295, 296, 297, 298, -1, -1, -1, -1, -1, -1, 256, 257, 282, 283, 284, 285, 262, 263, 264, 267, 268, 291, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, -1, -1, 286, 287, 288, 289, 290, 291, -1, -1, -1, 293, -1, -1, -1, -1, -1, 299, 300, -1, 302, 303, -1, -1, -1, -1, 308, -1, -1, 311, 312, -1, 314, 315, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, -1, -1, 299, 300, -1, 302, 303, -1, -1, -1, -1, 308, -1, -1, 311, 312, -1, 314, 315, 256, 257, -1, -1, -1, -1, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 293, -1, -1, -1, -1, -1, 299, 300, -1, 302, 303, -1, -1, -1, -1, 308, -1, 256, 311, 312, -1, 314, 315, 262, 263, 264, -1, -1, -1, -1, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, -1, -1, -1, -1, -1, 258, -1, -1, -1, 262, 263, 293, -1, -1, -1, -1, -1, 299, 300, 258, 302, 303, -1, 262, 263, -1, 308, -1, -1, 311, 312, -1, 314, 315, 287, 288, -1, 290, -1, -1, -1, 294, 295, 296, 297, 298, -1, -1, 287, 288, -1, 290, -1, -1, -1, 294, 295, 296, 297, 298, 258, -1, -1, -1, 262, 263, -1, -1, -1, -1, -1, -1, 258, -1, -1, -1, 262, 263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 287, 288, -1, 290, -1, -1, -1, 294, 295, 296, 297, 298, 287, 288, -1, 290, -1, -1, -1, 294, 295, 296, 297, 298, 258, -1, -1, -1, 262, 263, -1, -1, -1, -1, -1, -1, 258, -1, -1, -1, 262, 263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 287, 288, -1, 290, -1, -1, -1, 294, 295, 296, 297, 298, 287, 288, -1, 290, -1, -1, -1, 294, 295, 296, 297, 298, 258, -1, -1, -1, 262, 263, -1, -1, -1, -1, -1, -1, 258, -1, -1, -1, 262, 263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 287, 288, -1, 290, -1, -1, -1, 294, 295, 296, 297, 298, 287, 288, -1, 290, -1, -1, -1, 294, 295, 296, 297, 298, }; #define YYFINAL 1 #ifndef YYDEBUG #define YYDEBUG 0 #endif #define YYMAXTOKEN 315 #if YYDEBUG const char * const 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,"LB","RB","LP","RP","MENUS", "MENU","BUTTON","DEFAULT_FUNCTION","PLUS","MINUS","ALL","OR","CURSORS","ICONS", "COLOR","SAVECOLOR","MONOCHROME","FUNCTION","WINDOW_FUNCTION","ZOOM", "MAKE_TITLE","GRAYSCALE","NO_TITLE","AUTO_RAISE","ICON_REGION","META","SHIFT", "LOCK","CONTROL","WINDOW","TITLE","ICON","ROOT","FRAME","COLON","EQUALS", "START_ICONIFIED","MOVE","RESIZE","WAIT","SELECT","KILL","LEFT_TITLEBUTTON", "RIGHT_TITLEBUTTON","NUMBER","KEYWORD","NKEYWORD","CKEYWORD","CLKEYWORD", "FKEYWORD","FSKEYWORD","SKEYWORD","DKEYWORD","JKEYWORD","WINDOW_RING", "WARP_CURSOR","ERRORTOKEN","NO_STACKMODE","STRING", }; const char * const yyrule[] = {"$accept : twmrc", "twmrc : stmts", "stmts :", "stmts : stmts stmt", "stmt : error", "stmt : noarg", "stmt : sarg", "stmt : narg", "stmt : ICON_REGION string DKEYWORD DKEYWORD number number", "stmt : ZOOM number", "stmt : ZOOM", "stmt : CURSORS cursor_list", "stmt : LEFT_TITLEBUTTON string EQUALS action", "stmt : RIGHT_TITLEBUTTON string EQUALS action", "stmt : button string", "stmt : button action", "stmt : string fullkey", "stmt : button full", "$$1 :", "stmt : NO_STACKMODE $$1 win_list", "stmt : NO_STACKMODE", "$$2 :", "stmt : NO_TITLE $$2 win_list", "stmt : NO_TITLE", "$$3 :", "stmt : MAKE_TITLE $$3 win_list", "$$4 :", "stmt : START_ICONIFIED $$4 win_list", "$$5 :", "stmt : AUTO_RAISE $$5 win_list", "$$6 :", "stmt : MENU string LP string COLON string RP $$6 menu", "$$7 :", "stmt : MENU string $$7 menu", "$$8 :", "stmt : FUNCTION string $$8 function", "$$9 :", "stmt : ICONS $$9 icon_list", "$$10 :", "stmt : COLOR $$10 color_list", "$$11 :", "stmt : GRAYSCALE $$11 color_list", "stmt : SAVECOLOR save_color_list", "$$12 :", "stmt : MONOCHROME $$12 color_list", "stmt : DEFAULT_FUNCTION action", "stmt : WINDOW_FUNCTION action", "$$13 :", "stmt : WARP_CURSOR $$13 win_list", "stmt : WARP_CURSOR", "$$14 :", "stmt : WINDOW_RING $$14 win_list", "noarg : KEYWORD", "sarg : SKEYWORD string", "narg : NKEYWORD number", "full : EQUALS keys COLON contexts COLON action", "fullkey : EQUALS keys COLON contextkeys COLON action", "keys :", "keys : keys key", "key : META", "key : SHIFT", "key : LOCK", "key : CONTROL", "key : META number", "key : OR", "contexts :", "contexts : contexts context", "context : WINDOW", "context : TITLE", "context : ICON", "context : ROOT", "context : FRAME", "context : ALL", "context : OR", "contextkeys :", "contextkeys : contextkeys contextkey", "contextkey : WINDOW", "contextkey : TITLE", "contextkey : ICON", "contextkey : ROOT", "contextkey : FRAME", "contextkey : ALL", "contextkey : OR", "contextkey : string", "cursor_list : LB cursor_entries RB", "cursor_entries :", "cursor_entries : cursor_entries cursor_entry", "cursor_entry : FRAME string string", "cursor_entry : FRAME string", "cursor_entry : TITLE string string", "cursor_entry : TITLE string", "cursor_entry : ICON string string", "cursor_entry : ICON string", "cursor_entry : BUTTON string string", "cursor_entry : BUTTON string", "cursor_entry : MOVE string string", "cursor_entry : MOVE string", "cursor_entry : RESIZE string string", "cursor_entry : RESIZE string", "cursor_entry : WAIT string string", "cursor_entry : WAIT string", "cursor_entry : MENU string string", "cursor_entry : MENU string", "cursor_entry : SELECT string string", "cursor_entry : SELECT string", "cursor_entry : KILL string string", "cursor_entry : KILL string", "color_list : LB color_entries RB", "color_entries :", "color_entries : color_entries color_entry", "color_entry : CLKEYWORD string", "$$15 :", "color_entry : CLKEYWORD string $$15 win_color_list", "color_entry : CKEYWORD string", "save_color_list : LB s_color_entries RB", "s_color_entries :", "s_color_entries : s_color_entries s_color_entry", "s_color_entry : string", "s_color_entry : CLKEYWORD", "win_color_list : LB win_color_entries RB", "win_color_entries :", "win_color_entries : win_color_entries win_color_entry", "win_color_entry : string string", "win_list : LB win_entries RB", "win_entries :", "win_entries : win_entries win_entry", "win_entry : string", "icon_list : LB icon_entries RB", "icon_entries :", "icon_entries : icon_entries icon_entry", "icon_entry : string string", "function : LB function_entries RB", "function_entries :", "function_entries : function_entries function_entry", "function_entry : action", "menu : LB menu_entries RB", "menu_entries :", "menu_entries : menu_entries menu_entry", "menu_entry : string action", "menu_entry : string LP string COLON string RP action", "action : FKEYWORD", "action : FSKEYWORD string", "signed_number : number", "signed_number : PLUS number", "signed_number : MINUS number", "button : BUTTON number", "string : STRING", "number : NUMBER", }; #endif #ifdef YYSTACKSIZE #undef YYMAXDEPTH #define YYMAXDEPTH YYSTACKSIZE #else #ifdef YYMAXDEPTH #define YYSTACKSIZE YYMAXDEPTH #else #define YYSTACKSIZE 10000 #define YYMAXDEPTH 10000 #endif #endif #define YYINITSTACKSIZE 200 /* LINTUSED */ int yydebug; int yynerrs; int yyerrflag; int yychar; short *yyssp; YYSTYPE *yyvsp; YYSTYPE yyval; YYSTYPE yylval; short *yyss; short *yysslim; YYSTYPE *yyvs; unsigned int yystacksize; int yyparse(void); #line 568 "gram.y" static void yyerror(const char *s) { twmrc_error_prefix(); fprintf (stderr, "error in input file: %s\n", s ? s : ""); ParseError = 1; } static void RemoveDQuote(char *str) { register char *i, *o; register int n; register int count; for (i=str+1, o=str; *i && *i != '\"'; o++) { if (*i == '\\') { switch (*++i) { case 'n': *o = '\n'; i++; break; case 'b': *o = '\b'; i++; break; case 'r': *o = '\r'; i++; break; case 't': *o = '\t'; i++; break; case 'f': *o = '\f'; i++; break; case '0': if (*++i == 'x') goto hex; else --i; case '1': case '2': case '3': case '4': case '5': case '6': case '7': n = 0; count = 0; while (*i >= '0' && *i <= '7' && count < 3) { n = (n<<3) + (*i++ - '0'); count++; } *o = n; break; hex: case 'x': n = 0; count = 0; while (i++, count++ < 2) { if (*i >= '0' && *i <= '9') n = (n<<4) + (*i - '0'); else if (*i >= 'a' && *i <= 'f') n = (n<<4) + (*i - 'a') + 10; else if (*i >= 'A' && *i <= 'F') n = (n<<4) + (*i - 'A') + 10; else break; } *o = n; break; case '\n': i++; /* punt */ o--; /* to account for o++ at end of loop */ break; case '\"': case '\'': case '\\': default: *o = *i++; break; } } else *o = *i++; } *o = '\0'; } static MenuRoot *GetRoot(const char *name, const char* fore, const char *back) { MenuRoot *tmp; tmp = FindMenuRoot(name); if (tmp == NULL) tmp = NewMenuRoot(name); if (fore) { int save; save = Scr->FirstTime; Scr->FirstTime = TRUE; GetColor(COLOR, &tmp->hi_fore, fore); GetColor(COLOR, &tmp->hi_back, back); Scr->FirstTime = save; } return tmp; } static void GotButton(int butt, int func) { int i; for (i = 0; i < NUM_CONTEXTS; i++) { if ((cont & (1 << i)) == 0) continue; Scr->Mouse[butt][i][mods].func = func; if (func == F_MENU) { pull->prev = NULL; Scr->Mouse[butt][i][mods].menu = pull; } else { root = GetRoot(TWM_ROOT, NULLSTR, NULLSTR); Scr->Mouse[butt][i][mods].item = AddToMenu(root,"x",Action, NULL, func, NULLSTR, NULLSTR); } } Action = ""; pull = NULL; cont = 0; mods_used |= mods; mods = 0; } static void GotKey(char *key, int func) { int i; for (i = 0; i < NUM_CONTEXTS; i++) { if ((cont & (1 << i)) == 0) continue; if (!AddFuncKey(key, i, mods, func, Name, Action)) break; } Action = ""; pull = NULL; cont = 0; mods_used |= mods; mods = 0; } static void GotTitleButton (char *bitmapname, int func, Bool rightside) { if (!CreateTitleButton (bitmapname, func, Action, pull, rightside, True)) { twmrc_error_prefix(); fprintf (stderr, "unable to create %s titlebutton \"%s\"\n", rightside ? "right" : "left", bitmapname); } Action = ""; pull = NULL; } static Bool CheckWarpScreenArg (char *s) { XmuCopyISOLatin1Lowered (s, s); if (strcmp (s, WARPSCREEN_NEXT) == 0 || strcmp (s, WARPSCREEN_PREV) == 0 || strcmp (s, WARPSCREEN_BACK) == 0) return True; for (; *s && isascii(*s) && isdigit(*s); s++) ; /* SUPPRESS 530 */ return (*s ? False : True); } static Bool CheckWarpRingArg (char *s) { XmuCopyISOLatin1Lowered (s, s); if (strcmp (s, WARPSCREEN_NEXT) == 0 || strcmp (s, WARPSCREEN_PREV) == 0) return True; return False; } static Bool CheckColormapArg (char *s) { XmuCopyISOLatin1Lowered (s, s); if (strcmp (s, COLORMAP_NEXT) == 0 || strcmp (s, COLORMAP_PREV) == 0 || strcmp (s, COLORMAP_DEFAULT) == 0) return True; return False; } void twmrc_error_prefix (void) { fprintf (stderr, "%s: line %d: ", ProgramName, yylineno); } #line 803 "gram.c" /* allocate initial stack or double stack size, up to YYMAXDEPTH */ static int yygrowstack(void) { unsigned int newsize; long sslen; short *newss; YYSTYPE *newvs; if ((newsize = yystacksize) == 0) newsize = YYINITSTACKSIZE; else if (newsize >= YYMAXDEPTH) return -1; else if ((newsize *= 2) > YYMAXDEPTH) newsize = YYMAXDEPTH; sslen = yyssp - yyss; #ifdef SIZE_MAX #define YY_SIZE_MAX SIZE_MAX #else #define YY_SIZE_MAX 0xffffffffU #endif if (newsize && YY_SIZE_MAX / newsize < sizeof *newss) goto bail; newss = yyss ? (short *)realloc(yyss, newsize * sizeof *newss) : (short *)malloc(newsize * sizeof *newss); /* overflow check above */ if (newss == NULL) goto bail; yyss = newss; yyssp = newss + sslen; if (newsize && YY_SIZE_MAX / newsize < sizeof *newvs) goto bail; newvs = yyvs ? (YYSTYPE *)realloc(yyvs, newsize * sizeof *newvs) : (YYSTYPE *)malloc(newsize * sizeof *newvs); /* overflow check above */ if (newvs == NULL) goto bail; yyvs = newvs; yyvsp = newvs + sslen; yystacksize = newsize; yysslim = yyss + newsize - 1; return 0; bail: if (yyss) free(yyss); if (yyvs) free(yyvs); yyss = yyssp = NULL; yyvs = yyvsp = NULL; yystacksize = 0; return -1; } #define YYABORT goto yyabort #define YYREJECT goto yyabort #define YYACCEPT goto yyaccept #define YYERROR goto yyerrlab int yyparse(void) { int yym, yyn, yystate; #if YYDEBUG const char *yys; if ((yys = getenv("YYDEBUG"))) { yyn = *yys; if (yyn >= '0' && yyn <= '9') yydebug = yyn - '0'; } #endif /* YYDEBUG */ yynerrs = 0; yyerrflag = 0; yychar = (-1); if (yyss == NULL && yygrowstack()) goto yyoverflow; yyssp = yyss; yyvsp = yyvs; *yyssp = yystate = 0; yyloop: if ((yyn = yydefred[yystate]) != 0) 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 >= yysslim && yygrowstack()) { 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; #if defined(__GNUC__) goto yynewerror; #endif yynewerror: yyerror("syntax error"); #if defined(__GNUC__) 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 >= yysslim && yygrowstack()) { 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]; if (yym) yyval = yyvsp[1-yym]; else memset(&yyval, 0, sizeof yyval); switch (yyn) { case 8: #line 146 "gram.y" { AddIconRegion(yyvsp[-4].ptr, yyvsp[-3].num, yyvsp[-2].num, yyvsp[-1].num, yyvsp[0].num); } break; case 9: #line 147 "gram.y" { if (Scr->FirstTime) { Scr->DoZoom = TRUE; Scr->ZoomCount = yyvsp[0].num; } } break; case 10: #line 153 "gram.y" { if (Scr->FirstTime) Scr->DoZoom = TRUE; } break; case 11: #line 155 "gram.y" {} break; case 12: #line 156 "gram.y" { GotTitleButton (yyvsp[-2].ptr, yyvsp[0].num, False); } break; case 13: #line 159 "gram.y" { GotTitleButton (yyvsp[-2].ptr, yyvsp[0].num, True); } break; case 14: #line 162 "gram.y" { root = GetRoot(yyvsp[0].ptr, NULLSTR, NULLSTR); Scr->Mouse[yyvsp[-1].num][C_ROOT][0].func = F_MENU; Scr->Mouse[yyvsp[-1].num][C_ROOT][0].menu = root; } break; case 15: #line 166 "gram.y" { Scr->Mouse[yyvsp[-1].num][C_ROOT][0].func = yyvsp[0].num; if (yyvsp[0].num == F_MENU) { pull->prev = NULL; Scr->Mouse[yyvsp[-1].num][C_ROOT][0].menu = pull; } else { root = GetRoot(TWM_ROOT,NULLSTR,NULLSTR); Scr->Mouse[yyvsp[-1].num][C_ROOT][0].item = AddToMenu(root,"x",Action, NULL,yyvsp[0].num,NULLSTR,NULLSTR); } Action = ""; pull = NULL; } break; case 16: #line 182 "gram.y" { GotKey(yyvsp[-1].ptr, yyvsp[0].num); } break; case 17: #line 183 "gram.y" { GotButton(yyvsp[-1].num, yyvsp[0].num); } break; case 18: #line 184 "gram.y" { list = &Scr->NoStackModeL; } break; case 20: #line 186 "gram.y" { if (Scr->FirstTime) Scr->StackMode = FALSE; } break; case 21: #line 188 "gram.y" { list = &Scr->NoTitle; } break; case 23: #line 190 "gram.y" { if (Scr->FirstTime) Scr->NoTitlebar = TRUE; } break; case 24: #line 192 "gram.y" { list = &Scr->MakeTitle; } break; case 26: #line 194 "gram.y" { list = &Scr->StartIconified; } break; case 28: #line 196 "gram.y" { list = &Scr->AutoRaise; } break; case 30: #line 198 "gram.y" { root = GetRoot(yyvsp[-5].ptr, yyvsp[-3].ptr, yyvsp[-1].ptr); } break; case 31: #line 200 "gram.y" { root->real_menu = TRUE;} break; case 32: #line 201 "gram.y" { root = GetRoot(yyvsp[0].ptr, NULLSTR, NULLSTR); } break; case 33: #line 202 "gram.y" { root->real_menu = TRUE; } break; case 34: #line 203 "gram.y" { root = GetRoot(yyvsp[0].ptr, NULLSTR, NULLSTR); } break; case 36: #line 205 "gram.y" { list = &Scr->IconNames; } break; case 38: #line 207 "gram.y" { color = COLOR; } break; case 40: #line 209 "gram.y" { color = GRAYSCALE; } break; case 43: #line 213 "gram.y" { color = MONOCHROME; } break; case 45: #line 215 "gram.y" { Scr->DefaultFunction.func = yyvsp[0].num; if (yyvsp[0].num == F_MENU) { pull->prev = NULL; Scr->DefaultFunction.menu = pull; } else { root = GetRoot(TWM_ROOT,NULLSTR,NULLSTR); Scr->DefaultFunction.item = AddToMenu(root,"x",Action, NULL,yyvsp[0].num, NULLSTR, NULLSTR); } Action = ""; pull = NULL; } break; case 46: #line 231 "gram.y" { Scr->WindowFunction.func = yyvsp[0].num; root = GetRoot(TWM_ROOT,NULLSTR,NULLSTR); Scr->WindowFunction.item = AddToMenu(root,"x",Action, NULL,yyvsp[0].num, NULLSTR, NULLSTR); Action = ""; pull = NULL; } break; case 47: #line 239 "gram.y" { list = &Scr->WarpCursorL; } break; case 49: #line 241 "gram.y" { if (Scr->FirstTime) Scr->WarpCursor = TRUE; } break; case 50: #line 243 "gram.y" { list = &Scr->WindowRingL; } break; case 52: #line 248 "gram.y" { if (!do_single_keyword (yyvsp[0].num)) { twmrc_error_prefix(); fprintf (stderr, "unknown singleton keyword %d\n", yyvsp[0].num); ParseError = 1; } } break; case 53: #line 258 "gram.y" { if (!do_string_keyword (yyvsp[-1].num, yyvsp[0].ptr)) { twmrc_error_prefix(); fprintf (stderr, "unknown string keyword %d (value \"%s\")\n", yyvsp[-1].num, yyvsp[0].ptr); ParseError = 1; } } break; case 54: #line 268 "gram.y" { if (!do_number_keyword (yyvsp[-1].num, yyvsp[0].num)) { twmrc_error_prefix(); fprintf (stderr, "unknown numeric keyword %d (value %d)\n", yyvsp[-1].num, yyvsp[0].num); ParseError = 1; } } break; case 55: #line 280 "gram.y" { yyval.num = yyvsp[0].num; } break; case 56: #line 283 "gram.y" { yyval.num = yyvsp[0].num; } break; case 59: #line 290 "gram.y" { mods |= Mod1Mask; } break; case 60: #line 291 "gram.y" { mods |= ShiftMask; } break; case 61: #line 292 "gram.y" { mods |= LockMask; } break; case 62: #line 293 "gram.y" { mods |= ControlMask; } break; case 63: #line 294 "gram.y" { if (yyvsp[0].num < 1 || yyvsp[0].num > 5) { twmrc_error_prefix(); fprintf (stderr, "bad modifier number (%d), must be 1-5\n", yyvsp[0].num); ParseError = 1; } else { mods |= (Mod1Mask << (yyvsp[0].num - 1)); } } break; case 64: #line 304 "gram.y" { } break; case 67: #line 311 "gram.y" { cont |= C_WINDOW_BIT; } break; case 68: #line 312 "gram.y" { cont |= C_TITLE_BIT; } break; case 69: #line 313 "gram.y" { cont |= C_ICON_BIT; } break; case 70: #line 314 "gram.y" { cont |= C_ROOT_BIT; } break; case 71: #line 315 "gram.y" { cont |= C_FRAME_BIT; } break; case 72: #line 316 "gram.y" { cont |= C_ALL_BITS; } break; case 73: #line 317 "gram.y" { } break; case 76: #line 324 "gram.y" { cont |= C_WINDOW_BIT; } break; case 77: #line 325 "gram.y" { cont |= C_TITLE_BIT; } break; case 78: #line 326 "gram.y" { cont |= C_ICON_BIT; } break; case 79: #line 327 "gram.y" { cont |= C_ROOT_BIT; } break; case 80: #line 328 "gram.y" { cont |= C_FRAME_BIT; } break; case 81: #line 329 "gram.y" { cont |= C_ALL_BITS; } break; case 82: #line 330 "gram.y" { } break; case 83: #line 331 "gram.y" { Name = yyvsp[0].ptr; cont |= C_NAME_BIT; } break; case 87: #line 341 "gram.y" { NewBitmapCursor(&Scr->FrameCursor, yyvsp[-1].ptr, yyvsp[0].ptr); } break; case 88: #line 343 "gram.y" { NewFontCursor(&Scr->FrameCursor, yyvsp[0].ptr); } break; case 89: #line 345 "gram.y" { NewBitmapCursor(&Scr->TitleCursor, yyvsp[-1].ptr, yyvsp[0].ptr); } break; case 90: #line 347 "gram.y" { NewFontCursor(&Scr->TitleCursor, yyvsp[0].ptr); } break; case 91: #line 349 "gram.y" { NewBitmapCursor(&Scr->IconCursor, yyvsp[-1].ptr, yyvsp[0].ptr); } break; case 92: #line 351 "gram.y" { NewFontCursor(&Scr->IconCursor, yyvsp[0].ptr); } break; case 93: #line 353 "gram.y" { NewBitmapCursor(&Scr->ButtonCursor, yyvsp[-1].ptr, yyvsp[0].ptr); } break; case 94: #line 355 "gram.y" { NewFontCursor(&Scr->ButtonCursor, yyvsp[0].ptr); } break; case 95: #line 357 "gram.y" { NewBitmapCursor(&Scr->MoveCursor, yyvsp[-1].ptr, yyvsp[0].ptr); } break; case 96: #line 359 "gram.y" { NewFontCursor(&Scr->MoveCursor, yyvsp[0].ptr); } break; case 97: #line 361 "gram.y" { NewBitmapCursor(&Scr->ResizeCursor, yyvsp[-1].ptr, yyvsp[0].ptr); } break; case 98: #line 363 "gram.y" { NewFontCursor(&Scr->ResizeCursor, yyvsp[0].ptr); } break; case 99: #line 365 "gram.y" { NewBitmapCursor(&Scr->WaitCursor, yyvsp[-1].ptr, yyvsp[0].ptr); } break; case 100: #line 367 "gram.y" { NewFontCursor(&Scr->WaitCursor, yyvsp[0].ptr); } break; case 101: #line 369 "gram.y" { NewBitmapCursor(&Scr->MenuCursor, yyvsp[-1].ptr, yyvsp[0].ptr); } break; case 102: #line 371 "gram.y" { NewFontCursor(&Scr->MenuCursor, yyvsp[0].ptr); } break; case 103: #line 373 "gram.y" { NewBitmapCursor(&Scr->SelectCursor, yyvsp[-1].ptr, yyvsp[0].ptr); } break; case 104: #line 375 "gram.y" { NewFontCursor(&Scr->SelectCursor, yyvsp[0].ptr); } break; case 105: #line 377 "gram.y" { NewBitmapCursor(&Scr->DestroyCursor, yyvsp[-1].ptr, yyvsp[0].ptr); } break; case 106: #line 379 "gram.y" { NewFontCursor(&Scr->DestroyCursor, yyvsp[0].ptr); } break; case 110: #line 391 "gram.y" { if (!do_colorlist_keyword (yyvsp[-1].num, color, yyvsp[0].ptr)) { twmrc_error_prefix(); fprintf (stderr, "unhandled list color keyword %d (string \"%s\")\n", yyvsp[-1].num, yyvsp[0].ptr); ParseError = 1; } } break; case 111: #line 400 "gram.y" { list = do_colorlist_keyword(yyvsp[-1].num, color, yyvsp[0].ptr); if (!list) { twmrc_error_prefix(); fprintf (stderr, "unhandled color list keyword %d (string \"%s\")\n", yyvsp[-1].num, yyvsp[0].ptr); ParseError = 1; } } break; case 112: #line 410 "gram.y" { /* No action */; } break; case 113: #line 411 "gram.y" { if (!do_color_keyword (yyvsp[-1].num, color, yyvsp[0].ptr)) { twmrc_error_prefix(); fprintf (stderr, "unhandled color keyword %d (string \"%s\")\n", yyvsp[-1].num, yyvsp[0].ptr); ParseError = 1; } } break; case 117: #line 429 "gram.y" { do_string_savecolor(color, yyvsp[0].ptr); } break; case 118: #line 430 "gram.y" { do_var_savecolor(yyvsp[0].num); } break; case 122: #line 440 "gram.y" { if (Scr->FirstTime && color == Scr->Monochrome) AddToList(list, yyvsp[-1].ptr, yyvsp[0].ptr); } break; case 126: #line 452 "gram.y" { if (Scr->FirstTime) AddToList(list, yyvsp[0].ptr, 0); } break; case 130: #line 464 "gram.y" { if (Scr->FirstTime) AddToList(list, yyvsp[-1].ptr, yyvsp[0].ptr); } break; case 134: #line 474 "gram.y" { AddToMenu(root, "", Action, NULL, yyvsp[0].num, NULLSTR, NULLSTR); Action = ""; } break; case 138: #line 487 "gram.y" { AddToMenu(root, yyvsp[-1].ptr, Action, pull, yyvsp[0].num, NULLSTR, NULLSTR); Action = ""; pull = NULL; } break; case 139: #line 492 "gram.y" { AddToMenu(root, yyvsp[-6].ptr, Action, pull, yyvsp[0].num, yyvsp[-4].ptr, yyvsp[-2].ptr); Action = ""; pull = NULL; } break; case 140: #line 500 "gram.y" { yyval.num = yyvsp[0].num; } break; case 141: #line 501 "gram.y" { yyval.num = yyvsp[-1].num; Action = yyvsp[0].ptr; switch (yyvsp[-1].num) { case F_MENU: pull = GetRoot (yyvsp[0].ptr, NULLSTR,NULLSTR); pull->prev = root; break; case F_WARPRING: if (!CheckWarpRingArg (Action)) { twmrc_error_prefix(); fprintf (stderr, "ignoring invalid f.warptoring argument \"%s\"\n", Action); yyval.num = F_NOP; } case F_WARPTOSCREEN: if (!CheckWarpScreenArg (Action)) { twmrc_error_prefix(); fprintf (stderr, "ignoring invalid f.warptoscreen argument \"%s\"\n", Action); yyval.num = F_NOP; } break; case F_COLORMAP: if (CheckColormapArg (Action)) { yyval.num = F_COLORMAP; } else { twmrc_error_prefix(); fprintf (stderr, "ignoring invalid f.colormap argument \"%s\"\n", Action); yyval.num = F_NOP; } break; } /* end switch */ } break; case 142: #line 542 "gram.y" { yyval.num = yyvsp[0].num; } break; case 143: #line 543 "gram.y" { yyval.num = yyvsp[0].num; } break; case 144: #line 544 "gram.y" { yyval.num = -(yyvsp[0].num); } break; case 145: #line 547 "gram.y" { yyval.num = yyvsp[0].num; if (yyvsp[0].num == 0) yyerror("bad button 0"); if (yyvsp[0].num > MAX_BUTTONS) { yyval.num = 0; yyerror("button number too large"); } } break; case 146: #line 559 "gram.y" { ptr = strdup(yyvsp[0].ptr); RemoveDQuote(ptr); yyval.ptr = ptr; } break; case 147: #line 564 "gram.y" { yyval.num = yyvsp[0].num; } break; #line 1579 "gram.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 >= yysslim && yygrowstack()) { goto yyoverflow; } *++yyssp = yystate; *++yyvsp = yyval; goto yyloop; yyoverflow: yyerror("yacc stack overflow"); yyabort: if (yyss) free(yyss); if (yyvs) free(yyvs); yyss = yyssp = NULL; yyvs = yyvsp = NULL; yystacksize = 0; return (1); yyaccept: if (yyss) free(yyss); if (yyvs) free(yyvs); yyss = yyssp = NULL; yyvs = yyvsp = NULL; yystacksize = 0; return (0); }