v23i106: ABC interactive programming environment, Patch1
Rich Salz
rsalz at bbn.com
Fri Dec 21 07:27:29 AEST 1990
Submitted-by: rsalz
Posting-number: Volume 23, Issue 106
Archive-name: abc/patch1
[ The file bint.h was missing. Oops. The second of two distribution
patches that do NOT change the released patchlevel. --r$ ]
#! /bin/sh
# This is a shell archive. Remove anything before this line, then feed it
# into a shell via "sh file" or similar. To overwrite existing files,
# type "sh file -c".
# The tool that generated this appeared in the comp.sources.unix newsgroup;
# send mail to comp-sources-unix at uunet.uu.net if you want that tool.
# Contents: bint.h
# Wrapped by rsalz at litchi.bbn.com on Thu Dec 20 15:24:30 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
echo If this archive is complete, you will see the following message:
echo ' "shar: End of archive."'
if test -f 'bint.h' -a "${1}" != "-c" ; then
echo shar: Will not clobber existing file \"'bint.h'\"
else
echo shar: Extracting \"'bint.h'\" \(5295 characters\)
sed "s/^X//" >'bint.h' <<'END_OF_FILE'
X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1988. */
X
X/* interpreter values */
X
X/* Types */
X
X#define Ptn 'T' /* parsetree */
X#define How 'h' /* command howto */
X#define Fun '+' /* function */
X#define Ref 'r' /* refinement */
X#define Prd 'i' /* predicate */
X#define Sim 'S' /* simple location */
X#define Tri '@' /* trimmed text location */
X#define Tse '[' /* table selection location */
X#define Rangebounds 'B' /* for range as list_item */
X#define Ind 'p' /* indirection node for targets and formals */
X
X/************************************************************************/
X/* environment */
X/************************************************************************/
X
Xtypedef value envtab;
Xtypedef struct ec{envtab tab; struct ec *inv_env;} envchain;
Xtypedef envchain *env;
X
X/************************************************************************/
X/* parsetrees */
X/************************************************************************/
X
Xtypedef value parsetree;
X#define NilTree ((parsetree) Vnil)
X#define Is_parsetree(v) (Type(v) == Ptn)
X#define ValidTree(v) ((v) != NilTree)
X
X/************************************************************************/
X/* */
X/* A function or predicate is modelled as a compound consisting of */
X/* (i) Zer/Mon/Dya for zero-, mon- or dyadicity; */
X/* (ii) If a predefined function, an identifying number, otherwise -1 */
X/* (iii) If a user-defined function/predicate, its parse-tree */
X/* */
X/************************************************************************/
X
Xtypedef struct {
X parsetree unit;
X char /* bool */ unparsed;
X char /* bool */ filed;
X parsetree code;
X} how;
X
Xtypedef struct {
X parsetree unit;
X char /* bool */ unparsed;
X char /* bool */ filed;
X parsetree code;
X literal adic;
X intlet pre;
X} funprd;
X
X/* The first four fields of hows and funprds must be the same. */
X#define Use (-1) /* funprd.pre==Use for user-defined funprds */
X
X#define How_to(u) ((how *)Ats(u))
X#define Funprd(f) ((funprd *)Ats(f))
X
Xtypedef value fun;
Xtypedef value prd;
X
Xfun mk_fun();
Xprd mk_prd();
Xvalue mk_how();
X
X#define Is_howto(v) (Type(v) == How)
X#define Is_function(v) (Type(v) == Fun)
X#define Is_predicate(v) (Type(v) == Prd)
X
X/************************************************************************/
X/* refinements */
X/************************************************************************/
X
Xtypedef struct{parsetree rp;} ref;
X#define Refinement(r) ((ref *)Ats(r))
X#define Is_refinement(v) (Type(v) == Ref)
Xvalue mk_ref();
X
X/************************************************************************/
X/* */
X/* Locations */
X/* */
X/* A simple location is modelled as a pair basic-identifier and */
X/* environment, where a basic-identifier is modelled as a text */
X/* and an environment as a pointer to a pair (T, E), where T is a */
X/* table with basic-identifiers as keys and content values as */
X/* associates, and E is the invoking environment or nil. */
X/* */
X/* A trimmed-text location is modelled as a triple (R, B, C). */
X/* */
X/* A compound location is modelled as a compound whose fields are */
X/* locations, rather than values. */
X/* */
X/* A table-selection location is modelled as a pair (R, K). */
X/* */
X/************************************************************************/
X
Xtypedef value loc;
X#define Lnil ((loc) Vnil)
X
Xtypedef value basidf;
Xtypedef struct{basidf i; env e;} simploc;
Xtypedef struct{loc R; value B, C;} trimloc;
Xtypedef struct{loc R; value K;} tbseloc;
X
X#define Simploc(l) ((simploc *)Ats(l))
X#define Tbseloc(l) ((tbseloc *)Ats(l))
X#define Trimloc(l) ((trimloc *)Ats(l))
X
Xloc mk_simploc();
Xloc mk_trimloc();
Xloc mk_tbseloc();
X
X#define Is_locloc(v) IsSmallInt(v)
X#define Is_simploc(v) (Type(v) == Sim)
X#define Is_tbseloc(v) (Type(v) == Tse)
X#define Is_trimloc(v) (Type(v) == Tri)
X
X/************************************************************************/
X/* rangebounds */
X/************************************************************************/
X
X#define R_LWB(v) ((value) *Field((v), 0))
X#define R_UPB(v) ((value) *Field((v), 1))
X#define Is_rangebounds(v) (Type(v) == Rangebounds)
Xvalue mk_rbounds();
X
X/************************************************************************/
X/* indirection */
X/************************************************************************/
X
Xtypedef struct{value val;} indirect;
X#define Indirect(v) ((indirect *)Ats(v))
X#define Is_indirect(v) (Type(v) == Ind)
Xvalue mk_indirect();
X
X/************************************************************************/
END_OF_FILE
if test 5295 -ne `wc -c <'bint.h'`; then
echo shar: \"'bint.h'\" unpacked with wrong size!
fi
# end of 'bint.h'
fi
echo shar: End of archive.
exit 0
exit 0 # Just in case...
--
Please send comp.sources.unix-related mail to rsalz at uunet.uu.net.
Use a domain-based address or give alternate paths, or you may lose out.
More information about the Comp.sources.unix
mailing list