vixie@wrl.dec.com (Paul Vixie) (05/03/90)
Submitted-by: vixie@wrl.dec.com (Paul Vixie) Posting-number: Volume 7, Issue 22 Archive-name: awl/part08 #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 8 (of 17)." # Contents: awl.y etc/xw.h # Wrapped by vixie@jove.pa.dec.com on Mon Apr 30 01:25:23 1990 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'awl.y' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'awl.y'\" else echo shar: Extracting \"'awl.y'\" \(26311 characters\) sed "s/^X//" >'awl.y' <<'END_OF_FILE' X%{ X#ifndef lint static char *rcsid = "$Header: /usr/src/local/awl/RCS/awl.y,v 2.6 90/04/19 20:04:34 jkh Exp $"; X#endif X X/* X * X * Copyright 1989 X * Jordan K. Hubbard X * X * PCS Computer Systeme, GmbH. X * Munich, West Germany X * X * X * This file is part of AWL. X * X * AWL is free software; you can redistribute it and/or modify X * it under the terms of the GNU General Public License as published by X * the Free Software Foundation; either version 1, or (at your option) X * any later version. X * X * AWL is distributed in the hope that it will be useful, X * but WITHOUT ANY WARRANTY; without even the implied warranty of X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the X * GNU General Public License for more details. X * X * You should have received a copy of the GNU General Public License X * along with AWL; see the file COPYING. If not, write to X * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. X * X * X */ X X/* X * This is awl's main yacc parser. X * X * $Log: awl.y,v $ X * Revision 2.6 90/04/19 20:04:34 jkh X * Alpha checkin. X * X * Revision 2.5 90/03/30 22:01:33 jkh X * Drastically re-arranged the opcodes. X * X * Revision 2.4 90/03/30 20:13:23 jkh X * Got switch/case working. Fixed list constants. X * X * Revision 2.3 90/03/29 18:25:26 jkh X * Added first cut at switch/case. X * X * Revision 2.2 90/03/27 09:13:21 jkh X * Added PIXMAP builtin type. X * X * Revision 2.1 90/03/26 13:11:45 jkh X * Removed rcsclean from allclean rule; overkill. X * X * Revision 2.0 90/03/26 01:42:52 jkh X * pre-beta check-in X * X */ X X#include "AwlP.h" X X/* For break/continue statements */ Local Symbol BreakList = NULL, ContinueList = NULL; X X/* For switch statements */ X#define NO_SWITCH 0 X#define IN_SWITCH 1 X#define SEEN_DEFAULT 2 Local Symbol CaseHeaderList = NULL, CaseBodyList = NULL; Local int CaseState = NO_SWITCH; X X/* For local variables */ Local Symbol CurrentFunc = NULL; X X/* For list constants */ String *ListKludge; int ListKludgeSize, ListKludgeMax; X X/* Misc */ Local Datum d1; X XExport int yyerror(); XExport void yywarn(); X Import AwlWidget _currW; X X#define YYKOTZ(msg, arg) { if (yyerror((msg), (arg))) return(1); } X X%} X X%union X{ X char bval; X WidgetClass cval; X int ival; X FTYPE fval; X String sval; X String *lval; X Symbol symb; X Datum data; X} X X/* From K&R, (plus the special operators) */ X%left COMMA X%right EQ ME PE TE DE RE XE AE OE CE SLE SRE X%right QST COL X%left LOR X%left LAND X%left OR X%left XOR X%left AND COPY NUKE X%left EE NE X%left LT LE GT GE X%left SL SR X%left PLUS MINUS X%left MULT DIV MOD X%right NOT ADDR COMP PP MM UMINUS CAST RANGE X%left MBR X%left DOT LBRK RBRK X X/* X * The general instruction set (minus most ALU ops, which were def'd above) X * The order of these puppies is important! Don't mess with it without X * reading the helpful comments in eval.c where opcode_table is declared. X */ X%token ALU CALL JUMP JUMPZ POP RTS ARES CLOS DUP HALT LINK OPEN PUSH X X/* ALU ops not used directly by expressions. _LASTALU must always be last */ X%token ASOC SUB TRI _LASTALU X X/* Registers and internal types */ X%token _PC _SP _FP X%token FUNC_UNDEF FUNC_ACTION FUNC_BUILTIN FUNC_CALLBACK FUNC_LAYOUT X%token FUNC_USER FUNC_EXTERN FILEDESC FILEPDESC RESOURCE SYMBOL RANGE X X/* public types */ X%token ANY CADDR CALLBACK CHAR FADDR FLOAT IADDR INT LAYOUT LIST PIXMAP SADDR X%token STRING TRANSLATION WCLASS WIDGET X X/* classes */ X%token ALLOCATED CONSTANT DATA FUNCTION INDIRECT LABEL STATIC X X/* keywords and separators */ X%token ';' '{' '}' '(' ')' X%token IF ELSE WHILE DO FOR UNTIL BREAK CONTINUE RETURN GOTO SWITCH X%token CASE DEFAULT X X%token GLOBAL LOCAL X X%nonassoc IF X%nonassoc ELSE X X%token <ival> INT X%token <fval> FLOAT X%token <bval> CHAR X%token <sval> STRING X%token <sval> IDENTIFIER X%token <cval> WIDGET_TYPE X X%type <data> char_data int_data float_data string_data X%type <data> range_data list_data wclass_data X X%type <data> widget_data X%type <ival> numeric do_prefix X%type <sval> string ident X%type <symb> newparm parm parameter_list opt_parm_list X%type <symb> function_start X%type <symb> if_prefix else_clause X%type <symb> while_prefix while_loop until_loop X%type <ival> f_cond X%type <symb> f_lb1 f_lb2 f_last X%type <lval> list X X%start declaration X X%% X global_declaration X : GLOBAL global_body semi X ; X global_body X : global_keyword X | global_body COMMA global_keyword X { yyerrok; } X | error X { YYKOTZ("Missing or invalid symbol name for global", 0); } X | global_body error X { YYKOTZ("Unexpected symbol following global definition", 0); } X | global_body error global_keyword X { YYKOTZ("Missing or invalid separator", 0); } X | global_body COMMA error X { YYKOTZ("Missing or invalid symbol list for global", 0); } X ; X global_keyword X : ident X { X Symbol tmp; X X tmp = symbol_new(_currW, $1, STRING); X symbol_aobj(tmp) = new_aobj($1); X symbol_add(tmp); X } X | ident EQ CHAR X { X Symbol tmp = symbol_new(_currW, $1, CHAR); X symbol_char(tmp) = $3; X symbol_add(tmp); X XtFree($1); X } X | ident EQ INT X { X Symbol tmp = symbol_new(_currW, $1, INT); X symbol_int(tmp) = $3; X symbol_add(tmp); X XtFree($1); X } X | ident EQ FLOAT X { X Symbol tmp = symbol_new(_currW, $1, FLOAT); X symbol_float(tmp) = $3; X symbol_add(tmp); X XtFree($1); X } X | ident EQ range_data X { X Symbol tmp = symbol_new(_currW, $1, RANGE); X symbol_data(tmp) = $3; X symbol_add(tmp); X XtFree($1); X } X | ident EQ string X { X Symbol tmp = symbol_new(_currW, $1, STRING); X symbol_aobj(tmp) = new_aobj($3); X symbol_add(tmp); X XtFree($1); X } X | ident EQ list X { X Symbol tmp = symbol_new(_currW, $1, LIST); X symbol_aobj(tmp) = new_aobj($3); X symbol_add(tmp); X XtFree($1); X } X | ident lpar rpar X { X symbol_add_function(_currW, $1); X XtFree($1); X } X | ident LBRK INT RBRK X { X Symbol tmp; X X tmp = symbol_new(_currW, $1, STRING); X symbol_class(tmp) = ALLOCATED; X symbol_aobj(tmp) = new_aobj(XtMalloc($3)); X bzero(aobj_ptr(symbol_aobj(tmp)), $3); X symbol_add(tmp); X XtFree($1); X } X | ident EQ error X { YYKOTZ("Missing or invalid initializer for global", 0); } X | ident LBRK error RBRK X { YYKOTZ("Invalid or missing size for global array type", 0); } X ; X declaration X : function_declaration X | declaration function_declaration X { yyerrok; } X | global_declaration X | declaration global_declaration X { yyerrok; } X | error X { YYKOTZ("Missing or invalid function/global declaration", 0); } X | declaration error X { YYKOTZ("Invalid function/global declaration", 0); } X ; X function_declaration X : function_start compound_statement X { X Function fp = symbol_function($1); X X /* X * emit an RTS in case there was no return. If there was, X * it will be automatically ignored by do_emit(). X */ X do_emit(_currW, RTS, FalseDatum); X function_end(fp) = awl_lastpc(_currW); X if (awl_showasm(_currW)) { X fprintf(awl_err(_currW), X "\nCode for %s:\n", symbol_name($1)); X disasm(_currW, function_uaddr(fp), function_end(fp)); X } X symbol_set_locals(NULL); X CurrentFunc = NULL; X } X ; X function_start X : ident opt_parm_list X { X int offset; X Symbol tmp; X Address addr; X X tmp = $2; X offset = 1; X while(tmp) { X symbol_int(tmp) = -(offset++); X tmp = symbol_next(tmp); X } X symbol_set_locals($2); X addr_pc(addr) = awl_lastpc(_currW); X $$ = symbol_def_function(_currW, $1, FUNC_USER, X offset - 1, addr, TRUE); X CurrentFunc = $$; X XtFree($1); X } X ; X opt_parm_list X : lpar rpar X { X $$ = NULL; X yyerrok; X } X | lpar parameter_list rpar X { X $$ = $2; X yyerrok; X } X | error X { YYKOTZ("Missing or invalid parameter list", 0); } X ; X newparm X : ident X { X $$ = symbol_new(_currW, $1, _FP); X XtFree($1); X } X ; X parm X : newparm X | newparm X { X datum_symbol(d1) = $1; X do_push(_currW, SYMBOL, d1); X } X EQ expr X { do_emit(_currW, POP, PopDupNone); } X ; X parameter_list X : parm X | parm COMMA parameter_list X { X symbol_next($1) = $3; X yyerrok; X } X | error X { YYKOTZ("Missing or invalid parameter in parameter list", 0); } X ; X widget_data X : widget_decl X { $$ = FalseDatum; } X ; X compound_statement X : lbra statements rbra X ; X statements X : statement X | statements statement X { yyerrok; } X | error X { YYKOTZ("Missing or invalid statement", 0); } X | statements error X { YYKOTZ("Invalid statement", 0); } X ; X statement X : semi /* null statement */ X | discarding_expr X | compound_statement X | BREAK semi X { X if (BreakList) { X datum_symbol(d1) = BreakList; X do_emit(_currW, JUMP, d1); X } X else X YYKOTZ("Break not inside loop or switch.", 0) X } X | CONTINUE semi X { X if (ContinueList) { X datum_symbol(d1) = ContinueList; X do_emit(_currW, JUMP, d1); X } X else X YYKOTZ("Continue not inside loop.", 0) X } X | RETURN semi X { do_emit(_currW, RTS, FalseDatum); } X | RETURN expression semi X { do_emit(_currW, RTS, TrueDatum); } X | ident COL X { X Symbol tmp; X X if ((tmp = symbol_find(_currW, $1)) != NULL) { X if (symbol_class(tmp) != LABEL) /* illegal */ X YYKOTZ("Attempt to redefine %s as label.", $1) X else if (symbol_int(tmp) != UNDEF_ADDR) X YYKOTZ("Attempted redefinition of label %s.", $1) X } X else { X tmp = symbol_new(_currW, $1, INT); X symbol_class(tmp) = LABEL; X } X symbol_int(tmp) = awl_lastpc(_currW); X symbol_add(tmp); X debug(_currW, "label '%s' declared", $1, awl_lastpc(_currW)); X XtFree($1); X } X | GOTO ident semi X { X Symbol tmp; X X if ((tmp = symbol_find(_currW, $2)) != NULL) { X if (symbol_class(tmp) != LABEL) X YYKOTZ("Illegal target for GOTO: %s", $2) X else { X datum_symbol(d1) = tmp; X do_emit(_currW, JUMP, d1); X } X } X else { X tmp = symbol_new(_currW, $2, INT); X symbol_class(tmp) = LABEL; X symbol_type(tmp) = INT; X symbol_int(tmp) = UNDEF_ADDR; X symbol_add(tmp); X datum_symbol(d1) = tmp; X do_emit(_currW, JUMP, d1); X debug(_currW, "GOTO to forward label %s", $2); X } X XtFree($2); X } X | LOCAL parameter_list semi X { X Symbol tmp = $2; X X if (!CurrentFunc) X YYKOTZ("LOCAL keyword not in any function", 0) X else { X while (tmp) { X symbol_int(tmp) = X ++function_nlocals(symbol_function(CurrentFunc)); X tmp = symbol_next(tmp); X } X symbol_set_locals($2); X } X } X | global_declaration X | if_prefix statement X { symbol_int($1) = awl_lastpc(_currW); } X | if_prefix statement else_clause X { symbol_int($1) = awl_lastpc(_currW); } X statement X { symbol_int($3) = awl_lastpc(_currW); } X | while_prefix while_loop statement X { X datum_symbol(d1) = $1; X do_emit(_currW, JUMP, d1); X symbol_int($2) = awl_lastpc(_currW); X ContinueList = symbol_next(ContinueList); X BreakList = symbol_next(BreakList); X yyerrok; X } X | while_prefix error X { YYKOTZ("Missing or invalid expression for while", 0); } X | do_prefix statement until_loop X { X symbol_int($3) = $1; X ContinueList = symbol_next(ContinueList); X BreakList = symbol_next(BreakList); X yyerrok; X } X | do_prefix error X { YYKOTZ("Missing or invalid statement for do", 0); } X | FOR lpar f_init f_lb0 f_cond f_lb1 f_itr f_lb2 f_last statement X { X /* make the jump to f_lb1 */ X datum_symbol(d1) = $6; X do_emit(_currW, JUMP, d1); X /* backpatch the f_cond JUMP */ X datum_symbol(awl_text(_currW)[$5]) = $8; X symbol_int($9) = awl_lastpc(_currW); X ContinueList = symbol_next(ContinueList); X BreakList = symbol_next(BreakList); X yyerrok; X } X | FOR error X { YYKOTZ("Invalid syntax in for loop", 0); } X | switch_prefix statement X { X if (CaseHeaderList) { X symbol_int(CaseHeaderList) = awl_lastpc(_currW); X CaseHeaderList = symbol_next(CaseHeaderList); X } X if (CaseBodyList) { X symbol_int(CaseBodyList) = awl_lastpc(_currW); X CaseBodyList = symbol_next(CaseBodyList); X } X symbol_int(BreakList) = awl_lastpc(_currW); X BreakList = symbol_next(BreakList); X CaseState = NO_SWITCH; X /* Get rid of the last dup'd expression */ X do_discard(_currW); X yyerrok; X } X | switch_prefix error X { YYKOTZ("Missing body for switch", 0); } X | case_prefix expression COL X { X Symbol tmp; X X /* Check to see if case is true. If not, jump to next case */ X do_alu(_currW, EE); X datum_symbol(d1) = CaseHeaderList; X do_emit(_currW, JUMPZ, d1); X if (CaseBodyList) { X symbol_int(CaseBodyList) = awl_lastpc(_currW); X CaseBodyList = symbol_next(CaseBodyList); X } X tmp = do_new_label(_currW, UNDEF_ADDR); X symbol_next(tmp) = CaseBodyList; X CaseBodyList = tmp; X yyerrok; X } X | case_prefix error X { YYKOTZ("Invalid syntax for case label", 0); } X | case_prefix error COL X { YYKOTZ("Invalid expression for case label", 0); } X | DEFAULT COL X { X Symbol tmp; X X if (CaseState == NO_SWITCH) X YYKOTZ("default: case not in switch", 0) X else if (CaseState == SEEN_DEFAULT) X YYKOTZ("More than one 'default:' clause in switch", 0) X else { X CaseState = SEEN_DEFAULT; X if (CaseHeaderList) { X symbol_int(CaseHeaderList) = awl_lastpc(_currW); X CaseHeaderList = symbol_next(CaseHeaderList); X } X if (CaseBodyList) { X symbol_int(CaseBodyList) = awl_lastpc(_currW); X CaseBodyList = symbol_next(CaseBodyList); X } X tmp = do_new_label(_currW, UNDEF_ADDR); X symbol_next(tmp) = CaseHeaderList; X CaseHeaderList = tmp; X tmp = do_new_label(_currW, awl_lastpc(_currW)); X symbol_next(tmp) = CaseBodyList; X CaseBodyList = tmp; X } X } X ; X if_prefix X : IF lpar expression rpar X { X $$ = do_new_label(_currW, UNDEF_ADDR); X datum_symbol(d1) = $$; X do_emit(_currW, JUMPZ, d1); X yyerrok; X } X | IF error X { YYKOTZ("Missing or invalid if", 0); } X ; X else_clause X : ELSE X { X $$ = do_new_label(_currW, UNDEF_ADDR); X datum_symbol(d1) = $$; X do_emit(_currW, JUMP, d1); X } X ; X while_prefix X : WHILE X { X $$ = do_new_label(_currW, awl_lastpc(_currW)); X symbol_next($$) = ContinueList; X ContinueList = $$; X } X ; X while_loop X : lpar expression rpar X { X $$ = do_new_label(_currW, UNDEF_ADDR); X datum_symbol(d1) = $$; X do_emit(_currW, JUMPZ, d1); X symbol_next($$) = BreakList; X BreakList = $$; X } X ; X do_prefix X : DO X { X Symbol tmp; X X $$ = awl_lastpc(_currW); X tmp = do_new_label(_currW, $$); X symbol_next(tmp) = ContinueList; X ContinueList = tmp; X tmp = do_new_label(_currW, UNDEF_ADDR); X symbol_next(tmp) = BreakList; X BreakList = tmp; X } X ; X until_loop X : UNTIL lpar expression rpar X { X $$ = datum_symbol(d1) = do_new_label(_currW, UNDEF_ADDR); X do_emit(_currW, JUMPZ, d1); X symbol_int(BreakList) = awl_lastpc(_currW); X yyerrok; X } X | UNTIL error X { YYKOTZ("Missing or invalid expression for until", 0); } X ; X f_init X : optional_expression X ; X f_lb0 X : semi X { X Symbol tmp; X X /* create label pointing at f_cond */ X tmp = do_new_label(_currW, awl_lastpc(_currW)); X symbol_next(tmp) = ContinueList; X ContinueList = tmp; X } X ; X f_cond X : /* nichts */ X { X do_push(_currW, INT, TrueDatum); X /* point us at the place to patch the jump later */ X $$ = awl_lastpc(_currW) + 1; X datum_symbol(d1) = NULL; X do_emit(_currW, JUMP, d1); X } X | expression X { X /* point us at the place to patch the jump later */ X $$ = awl_lastpc(_currW) + 1; X datum_symbol(d1) = NULL; X do_emit(_currW, JUMP, d1); X } X ; X f_lb1 X : semi X { $$ = do_new_label(_currW, awl_lastpc(_currW)); } X ; X f_itr X : optional_expression X { X /* X * we know that the ContinueList will be pointing at lb0 X * (f_cond) so we just use that rather than backpatching. X */ X datum_symbol(d1) = ContinueList; X do_emit(_currW, JUMP, d1); X } X ; X f_lb2 X : /* nada */ X { $$ = do_new_label(_currW, awl_lastpc(_currW)); } X ; X f_last X : rpar X { X /* create dummy label for jump to end of for */ X $$ = do_new_label(_currW, UNDEF_ADDR); X datum_symbol(d1) = $$; X do_emit(_currW, JUMPZ, d1); X symbol_next($$) = BreakList; X BreakList = $$; X } X ; X switch_prefix X : SWITCH lpar expression rpar X { X Symbol tmp; X X tmp = do_new_label(_currW, UNDEF_ADDR); X symbol_next(tmp) = BreakList; X BreakList = tmp; X CaseState = IN_SWITCH; X yyerrok; X } X | SWITCH error X { YYKOTZ("Missing or invalid expression for switch", 0); } X ; X case_prefix X : CASE X { X Symbol tmp; X X if (CaseState == NO_SWITCH) X YYKOTZ("Case not in switch", 0) X else if (CaseState == SEEN_DEFAULT) X yywarn("Case after 'default:' clause will never be reached"); X else { X if (CaseBodyList) X do_optional_jump(_currW, CaseBodyList); X if (CaseHeaderList) { X symbol_int(CaseHeaderList) = awl_lastpc(_currW); X CaseHeaderList = symbol_next(CaseHeaderList); X } X tmp = do_new_label(_currW, UNDEF_ADDR); X symbol_next(tmp) = CaseHeaderList; X CaseHeaderList = tmp; X do_emit(_currW, DUP); X } X } X ; X expression X : expr X | expression COMMA expr X { yyerrok; } X ; X optional_expression X : /* rien */ X | expression X { do_discard(_currW); } X ; X discarding_expr X : expression semi X { do_discard(_currW); } X ; X l1_expr X : identifier X | funcall X | l1_expr DOT ident X { X do_push(_currW, STRING, new_aobj($3)); X do_alu(_currW, DOT); X } X | l1_expr LBRK expr RBRK X { do_alu(_currW, ASOC); } X | l1_expr DOT error X { YYKOTZ("Missing or invalid member reference", 0); } X | l1_expr LBRK error RBRK X { YYKOTZ("Missing or invalid array reference", 0); } X | l1_expr error X { YYKOTZ("Missing or invalid identifier", 0); } X ; X dupl1expr X : l1_expr X { do_emit(_currW, DUP); } X ; X l2_expr X : l1_expr X | l1_expr EQ expr X { do_emit(_currW, POP, PopDupValue); } X | PP dupl1expr X { X do_push(_currW, INT, TrueDatum); /* true = convenient 1 */ X do_alu(_currW, PLUS); X do_emit(_currW, POP, PopDupValue); X } X | MM dupl1expr X { X do_push(_currW, INT, TrueDatum); X do_alu(_currW, SUB); X do_emit(_currW, POP, PopDupValue); X } X | dupl1expr PP X { X do_push(_currW, INT, TrueDatum); X do_alu(_currW, PLUS); X do_emit(_currW, POP, PopDupTarget); X } X | dupl1expr MM X { X do_push(_currW, INT, TrueDatum); X do_alu(_currW, SUB); X do_emit(_currW, POP, PopDupTarget); X } X | dupl1expr PE expr X { X do_alu(_currW, PLUS); X do_emit(_currW, POP, PopDupValue); X } X | dupl1expr ME expr X { X do_alu(_currW, SUB); X do_emit(_currW, POP, PopDupValue); X } X | dupl1expr TE expr X { X do_alu(_currW, MULT); X do_emit(_currW, POP, PopDupValue); X } X | dupl1expr DE expr X { X do_alu(_currW, DIV); X do_emit(_currW, POP, PopDupValue); X } X | dupl1expr RE expr X { X do_alu(_currW, MOD); X do_emit(_currW, POP, PopDupValue); X } X | dupl1expr SLE expr X { X do_alu(_currW, SL); X do_emit(_currW, POP, PopDupValue); X } X | dupl1expr SRE expr X { X do_alu(_currW, SR); X do_emit(_currW, POP, PopDupValue); X } X | dupl1expr XE expr X { X do_alu(_currW, XOR); X do_emit(_currW, POP, PopDupValue); X } X | dupl1expr OE expr X { X do_alu(_currW, OR); X do_emit(_currW, POP, PopDupValue); X } X | dupl1expr AE expr X { X do_alu(_currW, AND); X do_emit(_currW, POP, PopDupValue); X } X | dupl1expr CE expr X { X do_alu(_currW, COMP); X do_emit(_currW, POP, PopDupValue); X } X ; X expr X : l2_expr X | lpar expr rpar X | char_data { do_push(_currW, CHAR, $1); } X | int_data { do_push(_currW, INT, $1); } X | float_data { do_push(_currW, FLOAT, $1); } X | string_data { do_push(_currW, STRING, $1); } X | list_data { do_push(_currW, LIST, $1); } X | range_data { do_push(_currW, RANGE, $1); } X | wclass_data { do_push(_currW, WCLASS, $1); } X | widget_data { do_push(_currW, LAYOUT, $1); } X | expr MBR expr { do_alu(_currW, MBR); } X | expr PLUS expr { do_alu(_currW, PLUS); } X | expr MINUS expr { do_alu(_currW, SUB); } X | expr MULT expr { do_alu(_currW, MULT); } X | expr DIV expr { do_alu(_currW, DIV); } X | expr MOD expr { do_alu(_currW, MOD); } X | expr LT expr { do_alu(_currW, LT); } X | expr GT expr { do_alu(_currW, GT); } X | expr LE expr { do_alu(_currW, LE); } X | expr GE expr { do_alu(_currW, GE); } X | expr EE expr { do_alu(_currW, EE); } X | expr NE expr { do_alu(_currW, NE); } X | expr SL expr { do_alu(_currW, SL); } X | expr SR expr { do_alu(_currW, SR); } X | expr OR expr { do_alu(_currW, OR); } X | expr AND expr { do_alu(_currW, AND); } X | expr XOR expr { do_alu(_currW, XOR); } X | expr LAND expr { do_alu(_currW, LAND); } X | expr LOR expr { do_alu(_currW, LOR); } X | expr QST expr COL expr { do_alu(_currW, TRI); } X | lpar expr rpar expr %prec CAST { do_alu(_currW, CAST); } X | MINUS expr %prec UMINUS { do_alu(_currW, MINUS); } X | AND expr %prec ADDR { do_alu(_currW, ADDR); } X | COPY expr { do_alu(_currW, COPY); } X | NUKE expr { do_alu(_currW, NUKE); } X | COMP expr { do_alu(_currW, COMP); } X | NOT expr { do_alu(_currW, NOT); } X ; X identifier X : ident X { X Symbol tmp; X X /* X * Unknown identifiers are created automatically as string syms. X */ X if ((tmp = symbol_find(_currW, $1)) == NULL) { X tmp = symbol_new(_currW, $1, STRING); X symbol_aobj(tmp) = new_aobj($1); X symbol_add(tmp); X } X datum_symbol(d1) = tmp; X do_push(_currW, SYMBOL, d1); X } X ; X funcall X : ident params X { X Symbol tmp; X X if ((tmp = symbol_find(_currW, $1)) == NULL) X tmp = symbol_add_function(_currW, $1); /* forward ref */ X datum_symbol(d1) = tmp; X do_emit(_currW, CALL, d1); X XtFree($1); X } X ; X params X : s_parm e_parm X | s_parm expression e_parm X ; X s_parm X : lpar X { do_emit(_currW, LINK); } X ; X e_parm X : rpar X ; X widget_decl X : widget_open widget_body X { do_emit(_currW, CLOS); } X ; X widget_body X : lbra widget_line rbra X | semi X ; X widget_open X : widget_type widget_name X { do_emit(_currW, OPEN); } X ; X widget_type X : wclass_data X { do_push(_currW, WCLASS, $1); } X | l1_expr X ; X widget_name X : string_data X { do_push(_currW, STRING, $1); } X | l1_expr X ; X widget_line X : resource X | widget_line resource X | widget_decl X | widget_line widget_decl X | work_proc X | widget_line work_proc X ; X resource X : string_data expr semi X { X do_push(_currW, STRING, $1); X do_emit(_currW, ARES); X } X ; X work_proc X : funcall semi X { do_discard(_currW); } X ; X wclass_data X : WIDGET_TYPE X { datum_wclass($$) = $1; } X ; X char_data X : CHAR X { datum_char($$) = $1; } X ; X int_data X : INT X { datum_int($$) = $1; } X ; X float_data X : FLOAT X { datum_float($$) = $1; } X ; X string_data X : string X { datum_aobj($$) = new_aobj($1); } X ; X list_data X : list X { datum_aobj($$) = new_aobj($1); } X ; X range_data X : numeric RANGE numeric X { X range_min(datum_range($$)) = (short)$1; X range_max(datum_range($$)) = (short)$3; X } X ; X numeric X : INT X | CHAR X { $$ = (int)$1; } X | FLOAT X { $$ = (int)$1; } X ; X string X : STRING X | STRING MULT INT X { X $$ = string_multiply($1, $3); X debug(_currW, "parse: string * freeing %s", $1); X XtFree($1); X yyerrok; X } X ; X ident X : IDENTIFIER X ; X list X : list_start list_elements list_end X { $$ = ListKludge; } X ; X list_start X : lbra X { X ListKludgeMax = 5; X ListKludgeSize = 0; X ListKludge = (String *)XtMalloc(sizeof(String *) * 6); X } X ; X list_elements X : string X { X if (ListKludgeSize == ListKludgeMax) { X ListKludgeMax += 5; X ListKludge =(String *)XtRealloc(ListKludge, sizeof(String *) X * (ListKludgeMax + 1)); X } X ListKludge[ListKludgeSize++] = $1; X } X | list_elements COMMA string X { X if (ListKludgeSize == ListKludgeMax) { X ListKludgeMax += 5; X ListKludge =(String *)XtRealloc(ListKludge, sizeof(String *) X * (ListKludgeMax + 1)); X } X ListKludge[ListKludgeSize++] = $3; X } X ; X list_end X : rbra X { ListKludge[ListKludgeSize] = NULL; } X ; X lpar X : '(' X ; X rpar X : ')' X { yyerrok; } X ; X lbra X : '{' X ; X rbra X : '}' X { yyerrok; } X ; X semi X : ';' X ; X X%% X X/* Additional C support routines. */ X X/* The to-be-expected error routine */ XExport int yyerror(s, n) String s; Generic n; X{ X Local int err_cnt = 0; X char msg1[255], msg2[512]; X X if (err_cnt++ > 5) { X sprintf(msg1, "%s:%d: Too many errors, aborting..\n", X yy_file, yy_line); X XtError(msg1); X err_cnt = 0; X return 1; X } X sprintf(msg1, s, n); X if (yy_file) X sprintf(msg2, "%s:%d: %s\n", yy_file, X yy_line ? yy_line - 1 : 0, msg1); X else X sprintf(msg2, "<stdin>:%d: %s\n", X yy_line ? yy_line - 1 : 0, msg1); X XtError(msg2); X return 0; X} X X/* Like yyerror, but only a warning */ XExport void yywarn(s, n) String s; Generic n; X{ X char msg1[255], msg2[512]; X X if (!awl_nowarn(_currW)) { X sprintf(msg1, s, n); X if (yy_file) X sprintf(msg2, "%s:%d: %s\n", yy_file, X yy_line ? yy_line - 1 : 0, msg1); X else X sprintf(msg2, "<stdin>:%d: %s\n", X yy_line ? yy_line - 1 : 0, msg1); X XtWarning(msg2); X } X} END_OF_FILE if test 26311 -ne `wc -c <'awl.y'`; then echo shar: \"'awl.y'\" unpacked with wrong size! fi # end of 'awl.y' fi if test -f 'etc/xw.h' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'etc/xw.h'\" else echo shar: Extracting \"'etc/xw.h'\" \(17768 characters\) sed "s/^X//" >'etc/xw.h' <<'END_OF_FILE' X#define BS 0 X#define CR 0 X#define DEFAULT_HEIGHT 300 X#define DEFAULT_WIDTH 300 X#define DEL 0 X#define INFINITE_WIDTH 32767 X#define LF 0 X#define MAXCUT 30000 X#define MIN_SLIDER_SIZE 4 X#define RequiredCursorMargin 3 X#define SP 0 X#define TAB 0 X#define XtCAlignment "Alignment" X#define XtCAllowCascades "AllowCascades" X#define XtCArrowDirection "ArrowDirection" X#define XtCAssociateChildren "AssociateChildren" X#define XtCAttachTo "AttachTo" X#define XtCBackgroundTile "BackgroundTile" X#define XtCBorderPad "BorderPad" X#define XtCBottomShadowTile "BottomShadowTile" X#define XtCCascadeImage "CascadeImage" X#define XtCCascadeOn "CascadeOn" X#define XtCCausesResize "CausesResize" X#define XtCColumnPosition "ColumnPosition" X#define XtCColumnWidth "ColumnWidth" X#define XtCColumns "Columns" X#define XtCDestroyMode "DestroyMode" X#define XtCDisplayTitle "DisplayTitle" X#define XtCElementHeight "ElementHeight" X#define XtCElementHighlight "ElementHighlight" X#define XtCEraseOn "EraseOn" X#define XtCForceHorizontalSB "ForceHorizontalSB" X#define XtCForceSize "ForceSize" X#define XtCForceVerticalSB "ForceVerticalSB" X#define XtCGranularity "Granularity" X#define XtCGravity "Gravity" X#define XtCGridThickness "GridThickness" X#define XtCGrow "Grow" X#define XtCHScrollBarHeight "HScrollBarHeight" X#define XtCHScrollBarWidth "HScrollBarWidth" X#define XtCHSliderExtent "HSliderExtent" X#define XtCHSliderMax "HSliderMax" X#define XtCHSliderMin "HSliderMin" X#define XtCHSliderOrigin "HSliderOrigin" X#define XtCHighlightStyle "HighlightStyle" X#define XtCHighlightThickness "HighlightThickness" X#define XtCHighlightTile "HighlightTile" X#define XtCHsbHeight "HsbHeight" X#define XtCHsbWidth "HsbWidth" X#define XtCHsbX "HsbX" X#define XtCHsbY "HsbY" X#define XtCImage "Image" X#define XtCInitialDelay "InitialDelay" X#define XtCInitialX "InitialX" X#define XtCInitialY "InitialY" X#define XtCInvertOnEnter "InvertOnEnter" X#define XtCInvertOnSelect "InvertOnSelect" X#define XtCKbdAccelerator "KbdAccelerator" X#define XtCKbdSelect "KbdSelect" X#define XtCLPadding "LPadding" X#define XtCLabelImage "LabelImage" X#define XtCLabelLocation "LabelLocation" X#define XtCLabelType "LabelType" X#define XtCLayout "Layout" X#define XtCLayoutType "LayoutType" X#define XtCLineSpace "LineSpace" X#define XtCMarkImage "MarkImage" X#define XtCMax "Max" X#define XtCMaximumSize "MaximumSize" X#define XtCMenuMgrId "MenuMgrId" X#define XtCMenuPost "MenuPost" X#define XtCMenuSelect "MenuSelect" X#define XtCMenuUnpost "MenuUnpost" X#define XtCMgrOverrideMnemonic "MgrOverrideMnemonic" X#define XtCMin "Min" X#define XtCMnemonic "Mnemonic" X#define XtCMode "Mode" X#define XtCNumColumns "NumColumns" X#define XtCNumSelectedElements "NumSelectedElements" X#define XtCPadding "Padding" X#define XtCPixelScale "PixelScale" X#define XtCPostAccelerator "PostAccelerator" X#define XtCPrecedence "Precedence" X#define XtCPulldownBarId "PulldownBarId" X#define XtCRPadding "RPadding" X#define XtCRecomputeSize "RecomputeSize" X#define XtCRepeatRate "RepeatRate" X#define XtCRowPosition "RowPosition" X#define XtCSRimage "RasterImage" X#define XtCSashIndent "SashIndent" X#define XtCScroll "Scroll" X#define XtCSelectedElements "SelectedElements" X#define XtCSelectionBias "SelectionBias" X#define XtCSelectionMethod "SelectionMethod" X#define XtCSelectionStyle "SelectionStyle" X#define XtCSensitiveTile "SensitiveTile" X#define XtCSeparatorType "SeparatorType" X#define XtCSet "Set" X#define XtCSetMark "SetMark" X#define XtCShowSelected "ShowSelected" X#define XtCSingleRow "SingleRow" X#define XtCSlideAreaTile "SlideAreaTile" X#define XtCSlideMoveType "SlideMoveType" X#define XtCSlideOrientation "SlideOrientation" X#define XtCSliderExtent "SliderExtent" X#define XtCSliderMax "SliderMax" X#define XtCSliderMin "SliderMin" X#define XtCSliderOrigin "SliderOrigin" X#define XtCSliderTile "SliderTile" X#define XtCSourceType "SourceType" X#define XtCSquare "Square" X#define XtCStickyMenus "StickyMenus" X#define XtCStrip "Strip" X#define XtCTitleBorderWidth "TitleBorderWidth" X#define XtCTitleHSpace "TitleHSpace" X#define XtCTitleImage "TitleImage" X#define XtCTitleLPadding "TitleLPadding" X#define XtCTitleOverride "TitleOverride" X#define XtCTitlePosition "TitlePosition" X#define XtCTitlePrecedence "TitlePrecedence" X#define XtCTitleRPadding "TitleRPadding" X#define XtCTitleRegion "TitleRegion" X#define XtCTitleShowing "TitleShowing" X#define XtCTitleString "TitleString" X#define XtCTitleToMenuPad "TitleToMenuPad" X#define XtCTitleTranslations "TitleTranslations" X#define XtCTitleType "TitleType" X#define XtCTitleVSpace "TitleVSpace" X#define XtCToggle "Toggle" X#define XtCTopLevel "TopLevel" X#define XtCTopShadowTile "TopShadowTile" X#define XtCTraversalOn "TraversalOn" X#define XtCTraversalType "TraversalType" X#define XtCUnderlineOverride "UnderlineOverride" X#define XtCUnderlinePosition "UnderlinePosition" X#define XtCUnderlineTitle "UnderlineTitle" X#define XtCVScrollBarHeight "VScrollBarHeight" X#define XtCVScrollBarWidth "VScrollBarWidth" X#define XtCVSliderExtent "VSliderExtent" X#define XtCVSliderMax "VSliderMax" X#define XtCVSliderMin "VSliderMin" X#define XtCVSliderOrigin "VSliderOrigin" X#define XtCVsbHeight "VsbHeight" X#define XtCVsbWidth "VsbWidth" X#define XtCVsbX "VsbX" X#define XtCVsbY "VsbY" X#define XtCWidgetType "WidgetType" X#define XtCWorkSpaceToSiblingPad "WorkSpaceToSiblingPad" X#define XtCWrap "Wrap" X#define XtCWrapBreak "WrapBreak" X#define XtCWrapForm "WrapForm" X#define XtCXAddWidth "XAddWidth" X#define XtCXAttachOffset "XAttachOffset" X#define XtCXAttachRight "XAttachRight" X#define XtCXOffset "XOffset" X#define XtCXRefName "XRefName" X#define XtCXRefWidget "XRefWidget" X#define XtCXResizable "XResizable" X#define XtCXVaryOffset "XVaryOffset" X#define XtCYAddHeight "YAddHeight" X#define XtCYAttachBottom "YAttachBottom" X#define XtCYAttachOffset "YAttachOffset" X#define XtCYOffset "YOffset" X#define XtCYRefName "YRefName" X#define XtCYRefWidget "YRefWidget" X#define XtCYResizable "YResizable" X#define XtCYVaryOffset "YVaryOffset" X#define XtNalignment "alignment" X#define XtNallowCascades "allowCascades" X#define XtNallowResize "allowResize" X#define XtNareaSelected "areaSelected" X#define XtNarrowDirection "arrowDirection" X#define XtNassociateChildren "associateChildren" X#define XtNattachTo "attachTo" X#define XtNbackgroundTile "backgroundTile" X#define XtNborderFrame "borderFrame" X#define XtNborderPad "borderPad" X#define XtNbottomMargin "bottomMargin" X#define XtNbottomShadowColor "bottomShadowColor" X#define XtNbottomShadowTile "bottomShadowTile" X#define XtNcascadeImage "cascadeImage" X#define XtNcascadeOn "cascadeOn" X#define XtNcascadeSelect "cascadeSelect" X#define XtNcascadeUnselect "cascadeUnselect" X#define XtNcausesResize "causesResize" X#define XtNcolumnPosition "columnPosition" X#define XtNcolumnWidth "columnWidth" X#define XtNcolumns "columns" X#define XtNcursor "cursor" X#define XtNdestroyMode "destroyMode" X#define XtNdiskSrc "disksrc" X#define XtNdisplayPosition "displayPosition" X#define XtNdisplayTitle "displayTitle" X#define XtNdrawColor "drawColor" X#define XtNeditType "editType" X#define XtNelementHeight "elementHeight" X#define XtNelementHighlight "elementHighlight" X#define XtNenter "enter" X#define XtNeraseColor "eraseColor" X#define XtNeraseOn "eraseOn" X#define XtNexecute "execute" X#define XtNexpose "expose" X#define XtNfile "file" X#define XtNfont "font" X#define XtNfontColor "fontColor" X#define XtNforceHorizontalSB "forceHorizontalSB" X#define XtNforceSize "forceSize" X#define XtNforceVerticalSB "forceVerticalSB" X#define XtNframed "framed" X#define XtNgranularity "granularity" X#define XtNgravity "gravity" X#define XtNgridThickness "gridThickness" X#define XtNgrow "grow" X#define XtNhScrollBarHeight "hScrollBarHeight" X#define XtNhScrollBarWidth "hScrollBarWidth" X#define XtNhScrollEvent "hScrollEvent" X#define XtNhSliderExtent "hSliderExtent" X#define XtNhSliderMax "hSliderMax" X#define XtNhSliderMin "hSliderMin" X#define XtNhSliderOrigin "hSliderOrigin" X#define XtNhighlightColor "highlightColor" X#define XtNhighlightStyle "highlightStyle" X#define XtNhighlightThickness "highlightThickness" X#define XtNhighlightTile "highlightTile" X#define XtNhsbHeight "hsbHeight" X#define XtNhsbWidth "hsbWidth" X#define XtNhsbX "hsbX" X#define XtNhsbY "hsbY" X#define XtNimage "image" X#define XtNinitialDelay "initialDelay" X#define XtNinitialX "initialX" X#define XtNinitialY "initialY" X#define XtNinsertPosition "insertPosition" X#define XtNinvertOnEnter "invertOnEnter" X#define XtNinvertOnSelect "invertOnSelect" X#define XtNkbdAccelerator "kbdAccelerator" X#define XtNkbdSelect "kbdSelect" X#define XtNkeyDown "keyDown" X#define XtNlPadding "lPadding" X#define XtNlabelImage "labelImage" X#define XtNlabelLocation "labelLocation" X#define XtNlabelType "labelType" X#define XtNlayout "layout" X#define XtNlayoutType "layoutType" X#define XtNleave "leave" X#define XtNleaveVerification "leaveVerification" X#define XtNleftMargin "leftMargin" X#define XtNlength "length" X#define XtNlineSpace "lineSpace" X#define XtNmarkImage "markImage" X#define XtNmax "max" X#define XtNmaximumSize "maximumSize" X#define XtNmenuMgrId "menuMgrId" X#define XtNmenuPost "menuPost" X#define XtNmenuSelect "menuSelect" X#define XtNmenuUnpost "menuUnpost" X#define XtNmgrOverrideMnemonic "mgrOverrideMnemonic" X#define XtNmgrTitleOverride "mgrTitleOverride" X#define XtNmgrUnderlineOverride "mgrUnderlineOverride" X#define XtNmin "min" X#define XtNmnemonic "mnemonic" X#define XtNmode "mode" X#define XtNmodifyVerification "modifyVerification" X#define XtNmotionVerification "motionVerification" X#define XtNnextTop "nextTop" X#define XtNnumColumns "numColumns" X#define XtNnumSelectedElements "numSelectedElements" X#define XtNpadding "padding" X#define XtNpixelScale "pixelScale" X#define XtNposition "position" X#define XtNpostAccelerator "postAccelerator" X#define XtNprecedence "precedence" X#define XtNpulldownBarId "pulldownBarId" X#define XtNrPadding "rPadding" X#define XtNrecomputeSize "recomputeSize" X#define XtNrefigureMode "refigureMode" X#define XtNregion "region" X#define XtNrelease "release" X#define XtNrepeatRate "repeatRate" X#define XtNresize "resize" X#define XtNrightMargin "rightMargin" X#define XtNrowPosition "rowPosition" X#define XtNsRimage "rasterImage" X#define XtNsashIndent "sashIndent" X#define XtNscroll "scroll" X#define XtNscrollbarOrientation "scrollbarOrientation" X#define XtNselect "select" X#define XtNselectColor "selectColor" X#define XtNselectedElements "selectedElements" X#define XtNselection "selection" X#define XtNselectionArray "selectionArray" X#define XtNselectionBias "selectionBias" X#define XtNselectionColor "selectionColor" X#define XtNselectionMethod "selectionMethod" X#define XtNselectionStyle "selectionStyle" X#define XtNsensitiveTile "sensitiveTile" X#define XtNseparatorType "separatorType" X#define XtNset "set" X#define XtNsetMark "setMark" X#define XtNshowSelected "showSelected" X#define XtNsingleRow "singleRow" X#define XtNskipAdjust "skipAdjust" X#define XtNslideAreaTile "slideAreaTile" X#define XtNslideMoveType "slideMoveType" X#define XtNslideOrientation "slideOrientation" X#define XtNsliderColor "sliderColor" X#define XtNsliderExtent "sliderExtent" X#define XtNsliderMax "sliderMax" X#define XtNsliderMin "sliderMin" X#define XtNsliderMoved "sliderMoved" X#define XtNsliderOrigin "sliderOrigin" X#define XtNsliderReleased "sliderReleased" X#define XtNsliderTile "sliderTile" X#define XtNsourceType "sourceType" X#define XtNsquare "square" X#define XtNstickyMenus "stickyMenus" X#define XtNstring "string" X#define XtNstringSrc "stringsrc" X#define XtNstrip "strip" X#define XtNtextSource "textSource" X#define XtNtitleBackground "titleBackground" X#define XtNtitleBorderWidth "titleBorderWidth" X#define XtNtitleForeground "titleForeground" X#define XtNtitleHSpace "titleHSpace" X#define XtNtitleImage "titleImage" X#define XtNtitleLPadding "titleLPadding" X#define XtNtitleNextTop "titleNextTop" X#define XtNtitlePosition "titlePosition" X#define XtNtitlePrecedence "titlePrecedence" X#define XtNtitleRPadding "titleRPadding" X#define XtNtitleRegion "titleRegion" X#define XtNtitleRelease "titleRelease" X#define XtNtitleSelect "titleSelect" X#define XtNtitleShowing "titleShowing" X#define XtNtitleString "titleString" X#define XtNtitleToMenuPad "titleToMenuPad" X#define XtNtitleTranslations "titleTranslations" X#define XtNtitleType "titleType" X#define XtNtitleVSpace "titleVSpace" X#define XtNtitlebarTile "titlebarTile" X#define XtNtoggle "toggle" X#define XtNtopLevel "topLevel" X#define XtNtopMargin "topMargin" X#define XtNtopShadowColor "topShadowColor" X#define XtNtopShadowTile "topShadowTile" X#define XtNtraversalOn "traversalOn" X#define XtNtraversalType "traversalType" X#define XtNunderlinePosition "underlinePosition" X#define XtNunderlineTitle "underlineTitle" X#define XtNvScrollBarHeight "vScrollBarHeight" X#define XtNvScrollBarWidth "vScrollBarWidth" X#define XtNvScrollEvent "vScrollEvent" X#define XtNvSliderExtent "vSliderExtent" X#define XtNvSliderMax "vSliderMax" X#define XtNvSliderMin "vSliderMin" X#define XtNvSliderOrigin "vSliderOrigin" X#define XtNvsbHeight "vsbHeight" X#define XtNvsbWidth "vsbWidth" X#define XtNvsbX "vsbX" X#define XtNvsbY "vsbY" X#define XtNwidgetType "widgetType" X#define XtNworkSpaceToSiblingPad "workSpaceToSiblingPad" X#define XtNwrap "wrap" X#define XtNwrapBreak "wrapBreak" X#define XtNwrapForm "wrapForm" X#define XtNxAddWidth "xAddWidth" X#define XtNxAttachOffset "xAttachOffset" X#define XtNxAttachRight "xAttachRight" X#define XtNxOffset "xOffset" X#define XtNxRefName "xRefName" X#define XtNxRefWidget "xRefWidget" X#define XtNxResizable "xResizable" X#define XtNxVaryOffset "xVaryOffset" X#define XtNyAddHeight "yAddHeight" X#define XtNyAttachBottom "yAttachBottom" X#define XtNyAttachOffset "yAttachOffset" X#define XtNyOffset "yOffset" X#define XtNyRefName "yRefName" X#define XtNyRefWidget "yRefWidget" X#define XtNyResizable "yResizable" X#define XtNyVaryOffset "yVaryOffset" X#define XtRAlignment "Alignment" X#define XtRArrowDirection "arrowDirection" X#define XtRDestroyMode "DestroyMode" X#define XtRElementHighlight "ElementHighlight" X#define XtRGravity "Gravity" X#define XtRHighlightStyle "HighlightStyle" X#define XtRLabelLocation "LabelLocation" X#define XtRLabelType "LabelType" X#define XtRLayout "Layout" X#define XtRLayoutType "LayoutType" X#define XtRRCMode "Mode" X#define XtRSelectionBias "SelectionBias" X#define XtRSelectionMethod "SelectionMethod" X#define XtRSelectionStyle "SelectionStyle" X#define XtRSeparatorType "SeparatorType" X#define XtRSlideMoveType "slideMoveType" X#define XtRSlideOrientation "slideOrientation" X#define XtRSourceType "SourceType" X#define XtRTilePix "TilePix" X#define XtRTileType "tileType" X#define XtRTitlePositionType "TitlePositionType" X#define XtRTitleType "TitleType" X#define XtRTranslationTable "TranslationTable" X#define XtRTraversalType "TraversalType" X#define XtRWidgetType "WidgetType" X#define XtRWrap "Wrap" X#define Xw25_FOREGROUND 2 X#define Xw50_FOREGROUND 3 X#define Xw75_FOREGROUND 4 X#define XwALIGN_CENTER 2 X#define XwALIGN_LEFT 1 X#define XwALIGN_NONE 0 X#define XwALIGN_RIGHT 3 X#define XwARROW_DOWN 1 X#define XwARROW_LEFT 2 X#define XwARROW_RIGHT 3 X#define XwARROW_UP 0 X#define XwAutoScrollBoth 3 X#define XwAutoScrollHorizontal 1 X#define XwAutoScrollOff 0 X#define XwAutoScrollVertical 2 X#define XwBACKGROUND 1 X#define XwBLOCK 10 X#define XwBORDER 0 X#define XwBOTTOM 0 X#define XwCASCADEWIDTH 16 X#define XwCENTER 2 X#define XwCOL_BIAS 2 X#define XwDOUBLE_DASHED_LINE 4 X#define XwDOUBLE_LINE 2 X#define XwDisplayForm 1 X#define XwEdiskSrc "disksrc" X#define XwEstringSrc "stringsrc" X#define XwFOREGROUND 0 X#define XwGrowBoth 3 X#define XwGrowHorizontal 1 X#define XwGrowOff 0 X#define XwGrowVertical 2 X#define XwHIGHLIGHT_ENTER 1 X#define XwHIGHLIGHT_OFF 0 X#define XwHIGHLIGHT_TRAVERSAL 2 X#define XwHORIZONTAL 0 X#define XwHORIZONTAL_TILE 6 X#define XwHardWrap 2 X#define XwIGNORE 0 X#define XwIMAGE 1 X#define XwINSTANT 0 X#define XwINVERT 1 X#define XwLEFT 1 X#define XwMANAGER 1 X#define XwMARKWIDTH 16 X#define XwMAXIMIZE 2 X#define XwMAXIMUM_COLUMNS 1 X#define XwMAXIMUM_UNALIGNED 2 X#define XwMENUBTNPAD 6 X#define XwMINIMIZE 1 X#define XwMULTIPLE 1 X#define XwNO_BIAS 0 X#define XwNO_LINE 0 X#define XwNO_SHRINK 0 X#define XwN_OF_MANY 0 X#define XwONE_OF_MANY 1 X#define XwPATTERN 1 X#define XwPATTERN_BORDER 1 X#define XwPRIMITIVE 2 X#define XwPULLDOWN 1 X#define XwREQUESTED_COLUMNS 0 X#define XwRIGHT 0 X#define XwROW_BIAS 1 X#define XwSHRINK_ALL 2 X#define XwSHRINK_COLUMN 1 X#define XwSINGLE 0 X#define XwSINGLE_DASHED_LINE 3 X#define XwSINGLE_LINE 1 X#define XwSLANT_LEFT 8 X#define XwSLANT_RIGHT 7 X#define XwSOLID 0 X#define XwSTICKY 1 X#define XwSTRING 0 X#define XwSWINDOW 3 X#define XwSoftWrap 1 X#define XwSourceForm 0 X#define XwTB_CHUNK 30 X#define XwTITLE 2 X#define XwTOP 0 X#define XwTRANSPARENT 2 X#define XwTRAVERSE_CURRENT 0 X#define XwTRAVERSE_DOWN 4 X#define XwTRAVERSE_HOME 7 X#define XwTRAVERSE_LEFT 1 X#define XwTRAVERSE_NEXT 5 X#define XwTRAVERSE_NEXT_TOP 8 X#define XwTRAVERSE_PREV 6 X#define XwTRAVERSE_RIGHT 2 X#define XwTRAVERSE_UP 3 X#define XwUNKNOWN 0 X#define XwVERTICAL 1 X#define XwVERTICAL_TILE 5 X#define XwWIDGET_DEFINED 2 X#define XwWORK_SPACE 3 X#define XwWrapAny 0 X#define XwWrapOff 0 X#define XwWrapWhiteSpace 1 X#define XwactionAdjust 1 X#define XwactionEnd 2 X#define XwactionStart 0 X#define XwdiskSrc 1 X#define XweditDone 0 X#define XweditError 1 X#define XweditPosError 2 X#define XweditReject 3 X#define XwisOff 1 X#define XwisOn 0 X#define XwprogDefinedSrc 2 X#define XwsdLeft 0 X#define XwsdRight 1 X#define XwselectAll 6 X#define XwselectChar 2 X#define XwselectLine 4 X#define XwselectNull 0 X#define XwselectParagraph 5 X#define XwselectPosition 1 X#define XwselectWord 3 X#define XwsmTextExtend 1 X#define XwsmTextSelect 0 X#define XwstEOL 2 X#define XwstLast 3 X#define XwstPositions 0 X#define XwstWhiteSpace 1 X#define XwstringSrc 0 X#define XwtextAppend 1 X#define XwtextEdit 2 X#define XwtextRead 0 X#define leaveVerify 2 X#define modVerify 1 X#define motionVerify 0 END_OF_FILE if test 17768 -ne `wc -c <'etc/xw.h'`; then echo shar: \"'etc/xw.h'\" unpacked with wrong size! fi # end of 'etc/xw.h' fi echo shar: End of archive 8 \(of 17\). cp /dev/null ark8isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 17 archives. rm -f ark[1-9]isdone ark[1-9][0-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0 dan ---------------------------------------------------- O'Reilly && Associates argv@sun.com / argv@ora.com Opinions expressed reflect those of the author only.