v07i022: AWL -- layout language for widget hierarchies, Part08/18
Paul Vixie
vixie at wrl.dec.com
Thu May 3 07:40:10 AEST 1990
Submitted-by: vixie at 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 at 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 at sun.com / argv at ora.com
Opinions expressed reflect those of the author only.
More information about the Comp.sources.x
mailing list