home *** CD-ROM | disk | FTP | other *** search
- Subject: v23i083: ABC interactive programming environment, Part04/25
- Newsgroups: comp.sources.unix
- Approved: rsalz@uunet.UU.NET
- X-Checksum-Snefru: b30008ad 31bc8e3d 16e942b6 b8ebc527
-
- Submitted-by: Steven Pemberton <steven@cwi.nl>
- Posting-number: Volume 23, Issue 83
- Archive-name: abc/part04
-
- #! /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@uunet.uu.net if you want that tool.
- # Contents: abc/abc.1 abc/bed/e1tabl.c abc/ex/wsgroup.abc
- # Wrapped by rsalz@litchi.bbn.com on Mon Dec 17 13:27:53 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 4 (of 25)."'
- if test -f 'abc/abc.1' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'abc/abc.1'\"
- else
- echo shar: Extracting \"'abc/abc.1'\" \(23759 characters\)
- sed "s/^X//" >'abc/abc.1' <<'END_OF_FILE'
- X.if t \{\
- X.\" replace this with some constant width font (for ABC characters):
- X.ds <: \\fC
- X.\" we filled in \\fC (Courier) for Postscript printers;
- X.\" use \\f(CW on Versatec;
- X.\" use \\f(lp on Harris typesetter.
- X.ds :> \\fP
- X.ds [ [\\s-2
- X.ds ] \\s+2]
- X.ds _ \\v'+0u'\(ru\\v'-0u'\|
- X.ds * \\v'+18u'\s+2*\s0\\v'-18u'\"lower and larger
- X.ds dg \\(dg
- X.ds <= \\(<=
- X.ds Q \&`
- X.ds U \&'
- X.ds uA \\(ua
- X.ds dA \\(da
- X.ds .5 .5v
- X.ds .3 .3v\}
- X.if n \{\
- X.ds <: \\fR
- X.ds :> \\fP
- X.ds [ [
- X.ds ] ]
- X.ds _ _
- X.ds * *
- X.ds dg *
- X.ds <= <=
- X.ds Q \&'
- X.ds U \&'
- X.ds uA ^
- X.ds dA v
- X.ds .5 1v
- X.ds .3 1v\}
- X.TH ABC 1 local
- X.tr **
- X.SH NAME
- Xabc \-
- XABC interpreter & environment
- X.br
- Xabckeys \-
- Xchange key bindings for \*Qabc\*U
- X.SH SYNOPSIS
- X.B "abc\ \ \ "
- X[workspace and editor options] [file ...]
- X.br
- X.B "abc\ \ \ "
- X[workspace and task options]
- X.br
- X.B "abckeys"
- X.SH DESCRIPTION
- XWithout options or files, the ABC interpreter is started, using the
- XABC editor, in the last workspace used or in workspace \*Q\fIfirst\fP\*U
- Xif this is your first abc session.
- XA workspace is kept as a group of files in a directory,
- Xwith separate files for each how-to and location.
- XThe workspace directories themselves are kept by default in the
- Xdirectory $HOME/abc.
- XOn non-Unix machines, $HOME is the disk you are working on.
- X.PP
- XWorkspace Options:
- X.TP 14n
- X.B "-W" "dir"
- Xuse group of workspaces in \*Qdir\*U instead of $HOME/abc.
- X.TP
- X.B "-w" "name"
- Xstart in workspace \*Qname\*U instead of last workspace used.
- X.TP
- X.B "-w" "path"
- Xuse \*Qpath\*U as workspace (no -W option allowed).
- X.PP
- XEditor option:
- X.TP 14n
- X.B "-e"
- XUse $EDITOR as editor to edit definitions, instead of ABC editor (Unix only).
- X.TP
- X.B "file" "..."
- XRead commands from file(s) instead of from standard input;
- Xinput for \*(<:READ\*(:> commands is taken from standard input.
- XIf a file is called \*Q-\*U and standard input is the keyboard,
- Xthe ABC system is started up interactively for that entry.
- X.PP
- XSpecial tasks:
- X.TP 14n
- X.B "-i" "tab"
- XFill table \*Qtab\*U with text lines from standard input
- X.TP
- X.B "-o" "tab"
- XWrite text lines from table \*Qtab\*U to standard output
- X.TP
- X.B "-l"
- XList the how-to's in workspace on standard output
- X.TP
- X.B "-r"
- XRecover a workspace when its index is lost: useful after a machine
- Xcrash if the ABC internal administration files didn't get written out.
- X.TP
- X.B "-R"
- XRecover the index of a group of workspaces
- X.SH USAGE
- X(This is necessarily a very brief description; see \*QThe ABC
- XProgrammer's Handbook\*U for full details.)
- X.sp \*(.3
- XUse \*Q\*(<:QUIT\*(:>\*U to finish an ABC session.
- X.sp \*(.3
- XWhen ABC starts up interactively, it displays a prompt and awaits
- Xinput.
- X.sp \*(.3
- XTYPING AND SUGGESTIONS:
- Xas you type, the system tries to suggest a possible continuation for
- Xwhat you have typed;
- Xto accept the suggestion, press [accept] (by default this is bound to
- Xthe \*[TAB\*] key;
- Xtype \*Q\*(<:?\*(:>\*U to find out the bindings for the keyboard you
- Xare using).
- XIf you don't want to accept the suggestion, just carry on typing (you
- Xcan always type character for character, ignoring the suggestions).
- XUsually the system knows where a letter must be capital and where not,
- Xand you usually don't have to use the shift key; however, in the few
- Xplaces where both a lower-case and an upper-case letter would be
- Xlegal (for instance for \*(<:AND\*(:>), you have to type the letter upper-case.
- X.sp \*(.3
- XWhen you type a control command, like \*(<:WHILE\*(:>, the system provides
- Xindentation automatically for the body of the command; to reduce the
- Xindentation one level, type [return].
- X.sp \*(.3
- XCORRECTING AND EDITING:
- Xthe [undo] key (by default bound to backspace) undoes the last key you
- Xtyped.
- XRepeatedly typing it undoes more and more, up to a certain maximum
- Xnumber of keypresses.
- X.sp \*(.3
- XTo correct other parts, you must put the \*Qfocus\*U onto the part you
- Xwant to change.
- XThe focus is displayed by underlining or reverse video.
- X[Widen] and [extend] make the focus larger,
- X[first] and [last] make it smaller.
- X.sp \*(.3
- X[Delete] deletes the contents of the focus.
- X.sp \*(.3
- X[Copy] copies the contents of the focus to a buffer, or if the focus
- Xis not focussed on anything, copies the contents of the buffer back to
- Xwhere you are positioned.
- X.sp \*(.3
- XMOVING THE FOCUS:
- X[Upline] and [downline] focus on one line above or below.
- X[Previous] and [next] move the focus left and right.
- X[Up], [down], [left], and [right] move an empty focus around.
- X[Goto] widens the focus to the largest thing at the current position.
- X.sp \*(.3
- XOTHER OPERATIONS:
- X[Look] redraws the screen; [record] records all keystrokes until the
- Xnext time you press [record] \(em [play] replays them.
- X[Redo] redoes the last key(s) undone; [interrupt] interrupts a running
- Xcommand.
- X.sp \*(.3
- XWORKSPACES:
- XTo create a new workspace, or go to an existing workspace, type
- X\*Q\*(<:>name\*(:>\*U.
- XTo go to the last workspace you were in, type a single \*Q\*(<:>\*(:>\*U.
- XTo get a list of workspace names, type \*Q\*(<:>>\*(:>\*U.
- X.sp \*(.3
- XHOW-TO's:
- XTo create a new how-to, just type the first line of the how-to.
- XThis creates the new how-to, and allows you to type the body.
- XUse [exit] to finish it (by default \*[ESC\*]\*[ESC\*]).
- X.sp \*(.3
- XTo visit a how-to, type a colon, followed by the name of the how-to.
- XAgain, use [exit] to exit.
- XTo visit the last how-to again, or the last how-to you got an error
- Xmessage for, type a single \*Q\*(<::\*(:>\*U.
- XTo get a list of the how-to's in this workspace, type \*Q\*(<:::\*(:>\*U.
- X.sp \*(.3
- XTo edit a location, type a \*Q\*(<:=\*(:>\*U followed by the name of the location.
- XTo re-edit it, type a single \*Q\*(<:=\*(:>\*U.
- XTo get a list of the locations in the workspace, type \*Q\*(<:=\|=\*(:>\*U.
- X.SH KEY BINDINGS
- XThe binding of editing operations like [accept] to keys
- Xmay be different for your keyboard;
- Xtype a \*Q\*(<:?\*(:>\*U at the prompt to find out what the bindings are
- Xfor your keyboard.
- X.br
- XTo redefine the keys used for editor operations, run \*Qabckeys\*U.
- XThis produces a private key definitions file.
- XYou will be given instructions on how to use it.
- X.br
- XKeys labeled
- X.I f1...f8
- Xare
- X.I "function keys."
- XOn Unix, the way to type these is terminal-dependent.
- XThe codes they send must be defined by the termcap entry for your terminal.
- X.br
- XIf a terminal has arrow keys
- X.if t \*(uA, \(<-, \(->, \*(dA
- Xwhich transmit codes to the computer,
- Xthese should be used for Up, Down, Left and Right.
- XAgain, the termcap entry must define the codes.
- X.br
- XThe Goto operation is of most use if the cursor can be moved
- Xlocally at the terminal, or if the terminal has a mouse;
- Xthe Goto operation will sense the terminal for the cursor or mouse position.
- XOn Unix, we use two extra non-standard termcap capabilities for this:
- X\&\*Qsp\*U which gives the
- Xstring that must be sent to the terminal to sense the cursor position,
- Xand \*Qcp\*U which defines the format of the reply (in the same format as
- Xother cursor-addressing strings in termcap).
- XIf your terminal's mouse-click sends the position of the click
- Xautomatically, just set \*Qsp\*U to the empty string.
- XSee
- X.IR termcap (5)
- Xfor more details.
- X.SH FILES
- X.ta 5c
- X.if n .ta 25
- X.nf
- X\&$HOME/copybuf.abc copy buffer between sessions
- X\&$HOME/abc/wsgroup.abc table mapping workspace names to directory names
- X\&$HOME/abc/abckeys\*_$TERM private key definitions file (Unix only)
- X\&$HOME/abc/abc.key private key definitions file (non-Unix)
- X\&position.abc focus position of edited how-to's in workspace
- X\&perm.abc table mapping object names to file names
- X\&suggest.abc suggestion list for user-defined commands
- X\&types.abc table with codes for typechecking between how-to's
- X\&\**.cmd command how-to's in this workspace
- X\&\**.zfd, \&\**.mfd, \&\**.dfd function how-to's in this workspace
- X\&\**.zpd, \&\**.mpd, \&\**.dpd predicate how-to's in this workspace
- X\&\**.cts permanent locations in this workspace
- Xabc.msg messages file, used for errors (not on Macintosh)
- Xabc.hlp helpfile with this text (MacABC.help on Macintosh)
- X.fi
- X.sp \*(.3
- XThe latter two are searched for first in your startup directory,
- Xthen in $HOME/abc, and finally, on Unix,
- Xin a directory determined by the installer of ABC.
- XOn the IBM PC and Atari ST the directories in your $PATH are used
- Xin the last stage
- X(if you have a hard disk place these files
- Xin the workspaces directory \*(<:abc\*(:>).
- X.SH ATARI ST IMPLEMENTATION
- XThere are four files supplied: the program \*(<:abc.tos\*(:> itself,
- X\&\*(<:abckeys.tos\*(:> for changing your key bindings,
- Xthe help file \&\*(<:abc.hlp\*(:>,
- Xand the error messages file \*(<:abc.msg\*(:>.
- X(See FILES above.)
- X.br
- XIf you start ABC up from the desktop, and you want to use the options given
- Xabove, like \*(<:-w\*(:>,
- Xyou should rename \*(<:abc.tos\*(:> to \*(<:abc.ttp\*(:>.
- XThere is an additional facility for redirecting input and output:
- Xthe parameter \*(<:>outfile\*(:> redirects all output from ABC to the file
- Xcalled \*(<:outfile\*(:>,
- Xand similarly \*(<:<infile\*(:> takes its input from the file called \*(<:infile\*(:>.
- X.SH IBM PC IMPLEMENTATION
- XThere are four files for running ABC, the program \*(<:abc.exe\*(:> itself,
- X\&\*(<:abckeys.exe\*(:> for changing your key bindings,
- Xthe help file \*(<:abc.hlp\*(:>,
- Xand the error messages file \*(<:abc.msg\*(:>.
- X(See FILES above.)
- X.br
- XIf your screen size is non-standard, or your machine is not 100% BIOS
- Xcompatible (which is unusal these days), you can specify the screen-size,
- Xand whether to use the BIOS or ANSI.SYS for output, by typing after
- Xthe \*(<:A>\*(:> prompt, before you start ABC up, one of the following:
- X.RS
- X.nf
- X\&\*(<:SET SCREEN=ANSI \*(:>\fIlines cols\fP
- X\&\*(<:SET SCREEN=BIOS \*(:>\fIlines cols\fP
- X.fi
- X.RE
- XIf you are going to use \*(<:ANSI.SYS\*(:>,
- Xbe sure you have the line
- X.RS
- X\&\*(<:DEVICE=ANSI.SYS\*(:>
- X.RE
- Xin your \*(<:CONFIG.SYS\*(:> file.
- XConsult the DOS manual for further details.
- X.SH APPLE MACINTOSH IMPLEMENTATION
- XThere are three files supplied: \*(<:MacABC\*(:>, the application itself,
- X\&\*(<:MacABC.help\*(:>, the help file,
- Xand \*(<:MacABC.doc\*(:>, a MacWrite document containing a variant
- Xof this text.
- XThe help file should be in the same folder as MacABC,
- Xor in your System Folder.
- X.br
- XMacABC runs in a single window.
- XYou'll notice that most operations are menu entries,
- Xas well as being possible from the keyboard.
- XYou can start ABC up by double-clicking the MacABC icon
- Xin which case you start up in the last workspace used,
- Xor by double-clicking on any icon in a workspace,
- Xin which case you start in that workspace.
- XIn this latter case, if the filename of the icon you clicked on
- Xends in \*(<:.cmd\*(:>, that how-to is executed,
- Xbut the how-to may not have any parameters.
- X.br
- XInstead of the special option flags mentioned above, most of the tasks,
- Xlike recovering a workspace, can be done from the File menu.
- X.br
- X.ps 8
- X.vs 10p
- X\*(dg Notes for Macintosh guru's:
- X.br
- XThe messages are \*(<:STR#\*(:> resources in MacABC; you must use a
- Xresource editor to change them.
- X.br
- XMacABC uses \*(<:Monaco 9\*(:> for the screen, and \*(<:Courier 10\*(:>
- Xfor printing.
- XYou can change them with ResEdit,
- Xby editing the resource with type \*(<:Conf\*(:>
- Xand ID \*(<:0\*(:>.
- XThe horizontal and vertical window-size and the window-title can
- Xalso be adapted there.
- XTo facilitate this,
- Xfirst Paste the \*(<:TMPL\*(:> resource with ID \*(<:5189\*(:>
- Xnamed \*(<:Conf\*(:> from MacABC to (a copy of) ResEdit.
- XBut beware, MacABC only works properly with Fixed-width Fonts like
- X\&\*(<:Monaco\*(:> and \*(<:Courier\*(:>.
- X.ps
- X.vs
- X.SH SEE ALSO
- X.in +.5i
- X.ti -.5i
- XLeo Geurts, Lambert Meertens and Steven Pemberton,
- X.I "The ABC Programmer's Handbook,"
- XPrentice-Hall, Englewood Cliffs, New Jersey, 1989,
- XISBN\ 0-13-000027-2.
- X.ti -.5i
- XSteven Pemberton,
- X.I "An Alternative Simple Language and Environment for PCs,"
- XIEEE Software, Vol. 4, No. 1, January 1987, pp. 56-64.
- X.ti -.5i
- X.I "The ABC Newsletter."
- XAvailable free from CWI.
- X.SH AUTHORS
- XFrank van Dijk,
- XLeo Geurts,
- XTimo Krijnen,
- XLambert Meertens,
- XSteven Pemberton,
- XGuido van Rossum.
- X.SH ADDRESS
- XABC Distribution,
- XCWI/AA,
- XPostbox 4079,
- X1009 AB Amsterdam,
- XThe Netherlands.
- X.br
- XE-mail: \*Qabc@cwi.nl\*U.
- X.fl
- X.ne 5v
- X.SH SUMMARY OF SPECIAL ACTIONS
- X.rs
- X.ta 2.5c
- X.if n .ta 8
- X.nf
- X.sp
- X\*(<::\*(:>\fIname\fP Visit how-to called \*Qname\*U
- X\*(<::\*(:> Visit last how-to refered to
- X\*(<:::\*(:> Display headings of how-to's in this workspace
- X.sp \*(.3
- X\*(<:=\*(:>\fIname\fP Visit contents of location
- X\*(<:=\*(:> Visit last location visited
- X\*(<:==\*(:> Display names of permament locations in this workspace
- X.sp \*(.3
- X\*(<:>\*(:>\fIname\fP Visit workspace \*Qname\*U
- X\*(<:>\*(:> Visit last workspace visited
- X\*(<:>>\*(:> Display list of workspace names
- X.sp \*(.3
- X\*(<:QUIT\*(:> Leave ABC
- X.fi
- X.ne 5v
- X.SH SUMMARY OF EDITING OPERATIONS
- X.rs
- X.ta 2.5c 5.5c
- X.if n .ta 10 27
- X.nf
- X.sp
- XName Default Keys\*(dg Short description
- X.sp \*(.3
- XAccept \*[TAB\*] Accept suggestion, focus to hole or end of line
- XReturn \*[RETURN\*] Add line or decrease indentation
- X.sp \*(.3
- XWiden \fIf1\fP, \*[ESC\*] w Widen focus
- XExtend \fIf2\fP, \*[ESC\*] e Extend focus (usually to the right)
- XFirst \fIf3\fP, \*[ESC\*] f Move focus to first contained item
- XLast \fIf4\fP, \*[ESC\*] l Move focus to last contained item
- X.sp \*(.3
- XPrevious \fIf5\fP, \*[ESC\*] p Move focus to previous item
- XNext \fIf6\fP, \*[ESC\*] n Move focus to next item
- XUpline \fIf7\fP, \*[ESC\*] u Move focus to whole line above
- XDownline \fIf8\fP, \*[ESC\*] d Move focus to whole line below
- X.sp \*(.3
- XUp \*(uA, \*[ESC\*] U Make new hole, move up
- XDown \*(dA, \*[ESC\*] D Make new hole, move down
- XLeft \(<-, \*[ESC\*] , Make new hole, move left
- XRight \(->, \*[ESC\*] . Make new hole, move right
- X.sp \*(.3
- XGoto \*[ctrl-G\*], \fImouseclick\fP New focus at cursor position
- X.sp \*(.3
- XUndo \*[BACKSPACE\*] Undo effect of last key pressed (may be repeated)
- XRedo \*[ctrl-U\*] Redo last UNDOne key (may be repeated)
- X.sp \*(.3
- XCopy \fIf9\fP, \*[ctrl-C\*], \*[ESC\*]c Copy buffer to hole, or focus to buffer
- XDelete \*[ctrl-D\*] Delete contents of focus (to buffer if empty)
- X.sp \*(.3
- XRecord \*[ctrl-R\*] Start/stop recording keystrokes
- XPlay \*[ctrl-P\*] Play back recorded keystrokes
- X.sp \*(.3
- XLook \*[ctrl-L\*] Redisplay screen
- XHelp \fIf10\fP, \*[ESC\*]? Print summary of editing operations
- X.sp \*(.3
- XExit \*[ctrl-X\*] Finish changes or execute command
- XInterrupt (as set by \*Qstty\*U) Interrupt command execution
- XSuspend (as set by \*Qstty\*U) Suspend ABC (only for shell with job control)
- X.fi
- X.sp
- X\*(dg Notes:
- X.sp \*(.3
- X\*[Ctrl-D\*] means: hold the \*[CTRL\*] (or \*[CONTROL\*]) key down while pressing d.
- X.br
- X\&\*[ESC\*] w means: press the \*[ESC\*] key first, then w.
- X.fl
- X.if t .bp
- X.SH ABC QUICK REFERENCE
- X.PD 0v
- X.nh
- X.de Sh
- X.fl
- X.if t .ne 5
- X.sp \*(.5
- X.LP
- X.if t .ft 3
- X\&\\$1
- X.if t .ft 1
- X.sp \*(.5
- X..
- X.de Lp
- X.sp \*(.3
- X..
- X.de LI
- X.fl
- X.if t .ft 2
- X.if t .TP 36n
- X.if n .TP 30n
- X.if n .nr LL 81m
- X..
- X.de IS
- X.if t .ft 1
- X..
- X.rs
- X.Sh "COMMANDS"
- X.LI
- X\*(<:WRITE\*(:> expr
- X.IS
- XWrite to screen;
- X.if n .br
- X\*(<:/\*(:> before or after \fIexpr\fP gives new line
- X.LI
- X\*(<:READ\*(:>\ address\ \*(<:EG\*(:>\ expr
- X.IS
- XRead expression from terminal to \fIaddress\fP;
- X.if n .br
- X\fIexpr\fP is example
- X.LI
- X\*(<:READ\*(:> address \*(<:RAW\*(:>
- X.IS
- XRead line of text
- X.LI
- X\*(<:PUT\*(:> expr \*(<:IN\*(:> address
- X.IS
- XPut value of \fIexpr\fP in \fIaddress\fP
- X.LI
- X\*(<:SET\ RANDOM\*(:>\ expr
- X.IS
- XStart random sequence for \*(<:random\*(:> and \*(<:choice\*(:>
- X.LI
- X\*(<:REMOVE\*(:> expr \*(<:FROM\*(:> list
- X.IS
- XRemove one element from \fIlist\fP
- X.LI
- X\*(<:INSERT\*(:> expr \*(<:IN\*(:> list
- X.IS
- XInsert in right place
- X.LI
- X\*(<:DELETE\*(:> address
- X.IS
- XDelete permanent location or table entry
- X.LI
- X\*(<:PASS\*(:>
- X.IS
- XDo nothing
- X.LI
- X\*(<:\fIKEYWORD\fR\*(:>\ expr \*(<:\fIKEYWORD\fR\*(:>\ .\^.\^.
- X.IS
- XExecute user-defined command
- X.LI
- X\*(<:\fIKEYWORD\fR\*(:>
- X.IS
- XExecute refined command
- X.Lp
- X.LI
- X\*(<:CHECK\*(:> test
- X.IS
- XCheck \fItest\fP and stop if it fails
- X.LI
- X\*(<:IF\*(:> test\*(<::\*(:>
- X.IS
- XIf \fItest\fP succeeds, execute \fIcommands\fP;
- X.LI
- X\*(<: \*(:>commands
- X.IS
- X no \*(<:ELSE\*(:> allowed
- X.fl
- X.ne 4
- X.LI
- X\*(<:SELECT:\*(:>
- X.IS
- XSelect one alternative:
- X.LI
- X\*(<: \*(:>test\*(<::\*(:> commands
- X.IS
- X try each \fItest\fP in order
- X.LI
- X\*(<: \*(:>.\^.\^.
- X.IS
- X (one must succeed;
- X.LI
- X\*(<: \*(:>test\*(<::\*(:> commands
- X.IS
- X the last \fItest\fP may be \*(<:ELSE\*(:>)
- X.LI
- X\*(<:WHILE\*(:> test\*(<::\*(:>
- X.IS
- XAs long as \fItest\fP succeeds
- X.LI
- X\*(<: \*(:>commands
- X.IS
- X execute \fIcommands\fP
- X.LI
- X\*(<:FOR\*(:>\ name\*(<:,\*(:>\^.\^.\^.\ \*(<:IN\*(:>\ train\*(<::\*(:>
- X.IS
- XTake each element of \fItrain\fP in turn
- X.LI
- X\*(<: \*(:>commands
- X.IS
- X.Sh "HOW-TO's"
- X.LI
- X\*(<:HOW\ TO\ \fIKEYWORD\fR\*(:>\ .\^.\^.\*(<::\*(:>
- X.IS
- XDefine new command \fIKEYWORD\fP\ .\^.\^.
- X.LI
- X\*(<: \*(:>commands
- X.IS
- X.LI
- X\*(<:HOW\ TO\ RETURN\*(:>\ f\*(<::\*(:>
- X.IS
- XDefine new function \fIf\fP with no arguments
- X.LI
- X\*(<: \*(:>commands
- X.IS
- X (returns a value)
- X.LI
- X\*(<:HOW\ TO\ RETURN\*(:>\ f\ x\*(<::\*(:>
- X.IS
- XDefine new function \fIf\fP with one argument
- X.LI
- X\*(<: \*(:>commands
- X.IS
- X.LI
- X\*(<:HOW\ TO\ RETURN\*(:> x f y\*(<::\*(:>
- X.IS
- XDefine new function \fIf\fP with two arguments
- X.LI
- X\*(<: \*(:>commands
- X.IS
- X.LI
- X\*(<:HOW\ TO\ REPORT\*(:> pr\*(<::\*(:>
- X.IS
- XDefine new predicate \fIpr\fP with no arguments
- X.LI
- X\*(<: \*(:>commands
- X.IS
- X (succeeds/fails)
- X.LI
- X\*(<:HOW\ TO\ REPORT\*(:> pr x\*(<::\*(:>
- X.IS
- XDefine new predicate \fIpr\fP with one argument
- X.LI
- X\*(<: \*(:>commands
- X.IS
- X.LI
- X\*(<:HOW\ TO\ REPORT\*(:> x pr y\*(<::\*(:>
- X.IS
- XDefine new predicate \fIpr\fP with two arguments
- X.LI
- X\*(<: \*(:>commands
- X.IS
- X.Lp
- X.LI
- X\*(<:SHARE\*(:> name\*(<:,\*(:>.\^.\^.
- X.IS
- XShare permanent locations
- X.if n .br
- X(before commands of how-to)
- X.Sh "Refinements (after the commands of a how-to)"
- X.LI
- XKEYWORD \*(<::\*(:> commands
- X.IS
- XDefine command refinement
- X.LI
- Xname\*(<::\*(:> commands
- X.IS
- XDefine expression- or test-refinement
- X.Sh "Terminating commands" ""
- X.LI
- X\*(<:QUIT\*(:>
- X.IS
- XLeave command how-to or command refinement,
- X.br
- Xor leave ABC
- X.LI
- X\*(<:RETURN\*(:> expr
- X.IS
- XLeave function how-to or expression refinement,
- X.if t .br
- Xreturn value of \fIexpr\fP
- X.LI
- X\*(<:REPORT\*(:> test
- X.IS
- XLeave predicate how-to or test-refinement,
- X.br
- Xreport outcome of \fItest\fP
- X.LI
- X\*(<:SUCCEED\*(:>
- X.IS
- XThe same, report success
- X.LI
- X\*(<:FAIL\*(:>
- X.IS
- XThe same, report failure
- X.Sh "EXPRESSIONS AND ADDRESSES"
- X.LI
- X\*(<:666\*(:>,\ \*(<:3.14\*(:>,\ \*(<:3.14e-9\*(:>
- X.IS
- XExact constants
- X.Lp
- X.LI
- Xexpr\*(<:,\*(:>expr\*(<:,\*(:>\^.\^.\^.
- X.IS
- XCompound
- X.LI
- Xname\*(<:,\*(:>name\*(<:,\*(:>\^.\^.\^.
- X.IS
- XNaming (may also be used as address)
- X.Lp
- X.LI
- Xtext\|\*(<:@\*(:>\|p
- X.IS
- X\*(<:"ABCD"@2 = "BCD"\*(:> (also address)
- X.\"Trimmed text, from p-th character on (also address)
- X.LI
- Xtext\*(<:|\*(:>q
- X.IS
- X\*(<:"ABCD"|3 = "ABC"\*(:> (also address)
- X.\"The same, first q characters (also address)
- X.LI
- Xtext\|\*(<:@\*(:>\|p\*(<:|\*(:>q
- X.IS
- X\*(<:"ABCD"@2|1 = "BCD"|1 = "B"\*(:>
- X.\"The same, from p-th on, first q characters (also location)
- X.Lp
- X.LI
- Xtable\*(<:[\*(:>expr\*(<:]\*(:>
- X.IS
- XTable selection (also address)
- X.Lp
- X.LI
- X\*(<:"Jan"\*(:>,\ \*(<:'Feb'\*(:>,\ \*(<:'Won''t!'\*(:>
- X.IS
- XTextual displays (empty: \*(<:""\*(:> or \*(<:''\*(:>)
- X.LI
- X\*(<:"value\ =\ `\*(:>expr\*(<:`;"\*(:>
- X.IS
- XConversion of \fIexpr\fP to text
- X.Lp
- X.LI
- X\*(<:{1;\ 2;\ 2;\*(:>\ .\^.\^.\^\*(<:}\*(:>
- X.IS
- XList display (empty: \*(<:{}\*(:>)
- X.LI
- X\*(<:{1..9;\*(:>\ .\^.\^.\^\*(<:}\*(:>,\ \*(<:{"a".."z";\*(:>\ .\^.\^.\^\*(<:}\*(:>
- X.IS
- XList of consecutive values
- X.Lp
- X.LI
- X\*(<:{["Jan"]: 1; ["Feb"]: 2; \*(:>.\^.\^.\^\*(<:}\*(:>
- X.IS
- XTable display (empty: \*(<:{}\*(:>)
- X.Lp
- X.LI
- Xf,\ f x,\ x f y
- X.IS
- XResult of function \fIf\fP (no permanent effects)
- X.LI
- Xname
- X.IS
- XResult of refinement (no permanent effects)
- X.Sh "TESTS"
- X.LI
- Xx \*(<:<\*(:> \|y,\ x \*(<:<=\*(:> \|y,\ x \*(<:>=\*(:> \|y,\ x \*(<:>\*(:> \|y
- X.IS
- XOrder tests
- X.LI
- Xx \*(<:=\*(:> \|y,\ x \*(<:<>\*(:> \|y
- X.IS
- X (\*(<:<>\*(:> means \*Qnot equals\*U)
- X.LI
- X\*(<:0\ <=\ d\ <\ 10\*(:>
- X.Lp
- X.LI
- Xpr,\ pr x,\ x pr y
- X.IS
- XOutcome of predicate \fIpr\fP (no permanent effects)
- X.LI
- Xname
- X.IS
- XOutcome of refinement (no permanent effects)
- X.Lp
- X.LI
- Xtest\ \*(<:AND\*(:>\ test\ \*(<:AND\*(:>\ .\^.\^.
- X.IS
- XFails as soon as one of the tests fails
- X.LI
- Xtest\ \*(<:OR\*(:>\ test\ \*(<:OR\*(:>\ .\^.\^.
- X.IS
- XSucceeds as soon as one of the tests succeeds
- X.LI
- X\*(<:NOT\*(:>\ test
- X.Lp
- X.LI
- X\*(<:SOME \*(:>name\*(<:,\*(:>\^.\^.\^. \*(<:IN\*(:> train \*(<:HAS\*(:> test
- X.IS
- X.if n .br
- XSets \fIname\fP, .\^.\^. on success
- X.LI
- X\*(<:EACH \*(:>name\*(<:,\*(:>\^.\^.\^. \*(<:IN\*(:> train \*(<:HAS\*(:> test
- X.IS
- X.if n .br
- XSets \fIname\fP, .\^.\^. on failure
- X.LI
- X\*(<:NO \*(:>name\*(<:,\*(:>\^.\^.\^. \*(<:IN\*(:> train \*(<:HAS\*(:> test
- X.IS
- X.if n .br
- XSets \fIname\fP, .\^.\^. on failure
- X.ne 5
- X.Sh "PREDEFINED FUNCTIONS AND PREDICATES"
- X.ns
- X.Sh "Functions and predicates on numbers"
- X.LI
- X\*(<:~\*(:>x
- X.IS
- XApproximate value of \fIx\fP
- X.LI
- X\*(<:exactly\*(:>\ x
- X.IS
- XExact value of \fIx\fP
- X.LI
- X\*(<:exact\*(:> x
- X.IS
- XTest if \fIx\fP is exact
- X.LI
- X\*(<:+\*(:>x,\ x\*(<:+\*(:>y,\ x\*(<:-\*(:>y,\ \*(<:-\*(:>x,\ x\*(<:*\*(:>y,\ x\*(<:/\*(:>y
- X.IS
- XPlain arithmetic
- X.LI
- Xx\*(<:**\*(:>y
- X.IS
- X\fIx\fP raised to the power \fIy\fP
- X.LI
- X\*(<:root\*(:>\ x,\ n\ \*(<:root\*(:>\ x
- X.IS
- XSquare root, \fIn\fP-th root
- X.LI
- X\*(<:abs\*(:>\ x,\ \*(<:sign\*(:>\ x
- X.IS
- XAbsolute value, sign (= \(mi1, 0, or +1)
- X.LI
- X\*(<:round\*(:>\ x,\ \*(<:floor\*(:>\ x,\ \*(<:ceiling\*(:>\ x
- X.IS
- XRounded to whole number
- X.LI
- Xn\ \*(<:round\*(:>\ x
- X.IS
- X\fIx\fP rounded to \fIn\fP digits after decimal point
- X.LI
- Xa\ \*(<:mod\*(:>\ n
- X.IS
- XRemainder of \fIa\fP on division by \fIn\fP
- X.LI
- X\*(<:*/\*(:>x
- X.IS
- XNumerator of exact number \fIx\fP
- X.LI
- X\*(<:/*\*(:>x
- X.IS
- XDenominator
- X.LI
- X\*(<:random\*(:>
- X.IS
- XRandom approximate number \fIr\fP, 0 \*(<= \fIr\fP < 1
- X.LI
- X\*(<:e\*(:>,\ \*(<:exp\*(:>\ x
- X.IS
- XBase of natural logarithm, exponential function
- X.LI
- X\*(<:log\*(:>\ x,\ b\ \*(<:log\*(:>\ x
- X.IS
- XNatural logarithm, logarithm to the base \fIb\fP
- X.LI
- X\*(<:pi\*(:>,\ \*(<:sin\*(:>\ x,\ \*(<:cos\*(:>\ x,\ \*(<:tan\*(:>\ x,\ \*(<:arctan\*(:>\ x
- X.IS
- X.if n .br
- XTrigonometric functions, with \fIx\fP in radians
- X.LI
- X\*(<:angle\*(:>\ (x,\ y),\ \*(<:radius\*(:>\ (x,\ y)
- X.IS
- XAngle of and radius to point \fI(x,\ y)\fP
- X.LI
- Xc\ \*(<:sin\*(:>\ x,\ c\ \*(<:cos\*(:>\ x,\ c\ \*(<:tan\*(:>\ x
- X.IS
- XSimilar, with the circle divided into \fIc\fP parts
- X.LI
- Xc\ \*(<:arctan\*(:>\ x,\ c\ \*(<:angle\*(:>\ (x,\ y)
- X.IS
- X (e.g. 360 for degrees)
- X.LI
- X\*(<:now\*(:>
- X.IS
- Xe.g. \*(<:(1999, 12, 31, 23, 59, 59.999)\*(:>
- X.Sh "Functions on texts"
- X.LI
- Xt\*(<:^\*(:>u
- X.IS
- X\fIt\fP and \fIu\fP joined into one text
- X.LI
- Xt\*(<:^^\*(:>n
- X.IS
- X\fIt\fP repeated \fIn\fP times
- X.LI
- X\*(<:lower\*(:>\ t
- X.IS
- X\*(<:lower "aBc" = "abc"\*(:>
- X.LI
- X\*(<:upper\*(:>\ t
- X.IS
- X\*(<:upper "aBc" = "ABC"\*(:>
- X.LI
- X\*(<:stripped\*(:>\ t
- X.IS
- XStrip leading and trailing spaces from \fIt\fP
- X.LI
- X\*(<:split\*(:>\ t
- X.IS
- XSplit text \fIt\fP into words
- X.Sh "Function on tables"
- X.LI
- X\*(<:keys\*(:> table
- X.IS
- XList of all keys in \fItable\fP
- X.Sh "Functions and predicates on trains"
- X.LI
- X\*(<:#\*(:>train
- X.IS
- XNumber of elements in \fItrain\fP
- X.LI
- Xe\*(<:#\*(:>train
- X.IS
- XNumber of elements equal to \fIe\fP
- X.LI
- Xe \*(<:in\*(:> train,\ e \*(<:not.in\*(:> train
- X.IS
- XTest for presence or absence
- X.LI
- X\*(<:min\*(:> train
- X.IS
- XSmallest element of \fItrain\fP
- X.LI
- Xe \*(<:min\*(:> train
- X.IS
- XSmallest element larger than \fIe\fP
- X.LI
- X\*(<:max\*(:> train,\ e \*(<:max\*(:> train
- X.IS
- XLargest element
- X.LI
- Xtrain \*(<:item\*(:> n
- X.IS
- X\fIn\fP-th element
- X.LI
- X\*(<:choice\*(:> train
- X.IS
- XRandom element
- X.Sh "Functions on all types"
- X.LI
- Xx\*(<:<<\*(:>n
- X.IS
- X\fIx\fP converted to text, aligned left in width \fIn\fP
- X.LI
- Xx\*(<:><\*(:>n
- X.IS
- XThe same,\ centred
- X.LI
- Xx\*(<:>>\*(:>n
- X.IS
- XThe same, aligned right
- X.Sh "THE CHARACTERS"
- X.LI
- X\&\*(<: !"#$%&'()*+,-./\*(:>
- X.IS
- XThis is the order of all characters
- X.LI
- X\&\*(<:0123456789:;<=>?\*(:>
- X.IS
- Xthat may occur in a text.
- X.LI
- X\*(<:@ABCDEFGHIJKLMNO\*(:>
- X.IS
- X(The first is a space.)
- X.LI
- X\*(<:PQRSTUVWXYZ[\e]^_\*(:>
- X.LI
- X\*(<:`abcdefghijklmno\*(:>
- X.LI
- X\*(<:pqrstuvwxyz{|}~\*(:>
- X\fR
- END_OF_FILE
- if test 23759 -ne `wc -c <'abc/abc.1'`; then
- echo shar: \"'abc/abc.1'\" unpacked with wrong size!
- fi
- # end of 'abc/abc.1'
- fi
- if test -f 'abc/bed/e1tabl.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'abc/bed/e1tabl.c'\"
- else
- echo shar: Extracting \"'abc/bed/e1tabl.c'\" \(27315 characters\)
- sed "s/^X//" >'abc/bed/e1tabl.c' <<'END_OF_FILE'
- X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1988. */
- X
- X/* Data file with grammar tables. */
- X
- X/* WARNING: this file is constructed by 'mktable'. */
- X/* If you want to change the grammar, see ../boot/README. */
- X
- X#include "b.h"
- X#include "bedi.h"
- X#include "tabl.h"
- X
- Xclasselem s0[]= {95,0};
- Xclasselem i0[]= {58,95,0};
- Xclasselem s1[]= {1,0};
- Xclasselem i1[]= {58,1,0};
- Xclasselem s2[]= {96,0};
- Xclasselem i2[]= {26,96,27,96,28,96,29,96,30,96,31,96,32,96,33,96,34,96,
- X 35,96,36,96,37,96,38,96,39,96,40,96,41,96,42,96,43,96,44,96,45,
- X 96,46,96,47,96,48,96,49,96,50,96,51,96,0};
- Xclasselem s3[]= {2,0};
- Xclasselem i3[]= {26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,2,36,
- X 2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,2,45,2,46,2,47,2,48,2,
- X 49,2,50,2,51,2,0};
- Xclasselem s4[]= {97,0};
- Xclasselem i4[]= {16,97,18,97,0};
- Xclasselem s5[]= {3,0};
- Xclasselem i5[]= {16,3,18,3,0};
- Xclasselem s6[]= {98,0};
- Xclasselem i6[]= {53,98,0};
- Xclasselem s7[]= {4,0};
- Xclasselem i7[]= {53,4,0};
- Xclasselem s8[]= {99,0};
- Xclasselem i8[]= {2,99,3,99,4,99,5,99,6,99,7,99,8,99,10,99,11,99,12,99,
- X 13,99,14,99,15,99,16,99,17,99,18,99,19,99,20,99,21,99,22,99,23,
- X 99,24,99,25,99,26,99,27,99,28,99,29,99,30,99,31,99,32,99,33,99,
- X 34,99,35,99,36,99,37,99,38,99,39,99,40,99,41,99,42,99,43,99,44,
- X 99,45,99,46,99,47,99,48,99,49,99,50,99,51,99,52,99,53,99,54,99,
- X 55,99,56,99,58,99,59,99,60,99,61,99,62,99,0};
- Xclasselem s9[]= {5,0};
- Xclasselem i9[]= {2,5,3,5,4,5,5,5,6,5,7,5,8,5,10,5,11,5,12,5,13,5,14,5,
- X 15,5,16,5,17,5,18,5,19,5,20,5,21,5,22,5,23,5,24,5,25,5,26,5,27,
- X 5,28,5,29,5,30,5,31,5,32,5,33,5,34,5,35,5,36,5,37,5,38,5,39,5,
- X 40,5,41,5,42,5,43,5,44,5,45,5,46,5,47,5,48,5,49,5,50,5,51,5,52,
- X 5,53,5,54,5,55,5,56,5,58,5,59,5,60,5,61,5,62,5,0};
- Xclasselem s10[]= {100,0};
- Xclasselem i10[]= {2,100,3,100,5,100,6,100,7,100,8,100,9,100,10,100,11,
- X 100,12,100,13,100,14,100,15,100,16,100,17,100,18,100,19,100,20,
- X 100,21,100,22,100,23,100,24,100,25,100,26,100,27,100,28,100,29,
- X 100,30,100,31,100,32,100,33,100,34,100,35,100,36,100,37,100,38,
- X 100,39,100,40,100,41,100,42,100,43,100,44,100,45,100,46,100,47,
- X 100,48,100,49,100,50,100,51,100,52,100,53,100,54,100,55,100,56,
- X 100,58,100,59,100,60,100,61,100,62,100,0};
- Xclasselem s11[]= {6,0};
- Xclasselem i11[]= {2,6,3,6,5,6,6,6,7,6,8,6,9,6,10,6,11,6,12,6,13,6,14,6,
- X 15,6,16,6,17,6,18,6,19,6,20,6,21,6,22,6,23,6,24,6,25,6,26,6,27,
- X 6,28,6,29,6,30,6,31,6,32,6,33,6,34,6,35,6,36,6,37,6,38,6,39,6,
- X 40,6,41,6,42,6,43,6,44,6,45,6,46,6,47,6,48,6,49,6,50,6,51,6,52,
- X 6,53,6,54,6,55,6,56,6,58,6,59,6,60,6,61,6,62,6,0};
- Xclasselem s12[]= {101,0};
- Xclasselem i12[]= {5,101,12,101,13,101,15,101,17,101,21,101,22,101,23,101,
- X 25,101,55,101,60,101,62,101,0};
- Xclasselem s13[]= {7,0};
- Xclasselem i13[]= {5,7,12,7,13,7,15,7,17,7,21,7,22,7,23,7,25,7,55,7,60,
- X 7,62,7,0};
- Xclasselem s14[]= {102,0};
- Xclasselem i14[]= {2,102,3,102,4,102,5,102,6,102,7,102,8,102,9,102,10,102,
- X 11,102,12,102,13,102,14,102,15,102,16,102,17,102,18,102,19,102,
- X 20,102,21,102,22,102,23,102,24,102,25,102,26,102,27,102,28,102,
- X 29,102,30,102,31,102,32,102,33,102,34,102,35,102,36,102,37,102,
- X 38,102,39,102,40,102,41,102,42,102,43,102,44,102,45,102,46,102,
- X 47,102,48,102,49,102,50,102,51,102,52,102,53,102,54,102,55,102,
- X 56,102,57,102,58,102,59,102,60,102,61,102,62,102,0};
- Xclasselem s15[]= {8,0};
- Xclasselem i15[]= {2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,8,
- X 14,8,15,8,16,8,17,8,18,8,19,8,20,8,21,8,22,8,23,8,24,8,25,8,26,
- X 8,27,8,28,8,29,8,30,8,31,8,32,8,33,8,34,8,35,8,36,8,37,8,38,8,
- X 39,8,40,8,41,8,42,8,43,8,44,8,45,8,46,8,47,8,48,8,49,8,50,8,51,
- X 8,52,8,53,8,54,8,55,8,56,8,57,8,58,8,59,8,60,8,61,8,62,8,0};
- Xclasselem s16[]= {103,0};
- Xclasselem s17[]= {104,0};
- Xclasselem s18[]= {9,11,12,7,13,1,3,10,14,18,20,0};
- Xclasselem i18[]= {5,7,12,7,13,7,15,7,17,7,21,7,22,7,23,7,25,7,55,7,60,
- X 7,62,7,58,1,16,3,18,3,10,10,59,14,9,18,4,20,0};
- Xclasselem a18[]= {44,9,32,12,91,13,0};
- Xclasselem j18[]= {1,11,2,12,0};
- Xclasselem s19[]= {93,9,11,12,7,13,1,3,10,14,18,20,0};
- Xclasselem i19[]= {5,7,12,7,13,7,15,7,17,7,21,7,22,7,23,7,25,7,55,7,60,
- X 7,62,7,58,1,16,3,18,3,10,10,59,14,9,18,4,20,0};
- Xclasselem a19[]= {44,9,32,12,91,13,0};
- Xclasselem j19[]= {1,11,2,12,0};
- Xclasselem s20[]= {11,12,7,13,1,3,10,14,18,20,0};
- Xclasselem i20[]= {5,7,12,7,13,7,15,7,17,7,21,7,22,7,23,7,25,7,55,7,60,
- X 7,62,7,58,1,16,3,18,3,10,10,59,14,9,18,4,20,0};
- Xclasselem a20[]= {32,12,91,13,0};
- Xclasselem j20[]= {1,11,2,12,0};
- Xclasselem s21[]= {7,13,1,3,10,14,18,20,0};
- Xclasselem i21[]= {5,7,12,7,13,7,15,7,17,7,21,7,22,7,23,7,25,7,55,7,60,
- X 7,62,7,58,1,16,3,18,3,10,10,59,14,9,18,4,20,0};
- Xclasselem a21[]= {91,13,0};
- Xclasselem s22[]= {11,7,13,1,3,10,14,18,20,0};
- Xclasselem i22[]= {5,7,12,7,13,7,15,7,17,7,21,7,22,7,23,7,25,7,55,7,60,
- X 7,62,7,58,1,16,3,18,3,10,10,59,14,9,18,4,20,0};
- Xclasselem a22[]= {91,13,0};
- Xclasselem j22[]= {1,11,0};
- Xclasselem s23[]= {13,1,3,10,14,18,20,0};
- Xclasselem i23[]= {58,1,16,3,18,3,10,10,59,14,9,18,4,20,0};
- Xclasselem a23[]= {91,13,0};
- Xclasselem s24[]= {93,15,11,12,7,13,1,3,10,14,18,20,16,17,0};
- Xclasselem i24[]= {5,7,12,7,13,7,15,7,17,7,21,7,22,7,23,7,25,7,55,7,60,
- X 7,62,7,58,1,16,3,18,3,10,10,59,14,9,18,4,20,52,17,0};
- Xclasselem a24[]= {59,15,32,12,91,13,59,16,0};
- Xclasselem j24[]= {1,11,2,12,0};
- Xclasselem s25[]= {11,12,7,13,1,3,10,14,18,20,15,0};
- Xclasselem i25[]= {5,7,12,7,13,7,15,7,17,7,21,7,22,7,23,7,25,7,55,7,60,
- X 7,62,7,58,1,16,3,18,3,10,10,59,14,9,18,4,20,0};
- Xclasselem a25[]= {32,12,91,13,59,15,0};
- Xclasselem j25[]= {1,11,2,12,0};
- Xclasselem s26[]= {11,12,7,13,1,3,10,14,18,20,0};
- Xclasselem i26[]= {5,7,12,7,13,7,15,7,17,7,21,7,22,7,23,7,25,7,55,7,60,
- X 7,62,7,58,1,16,3,18,3,10,10,59,14,9,18,4,20,0};
- Xclasselem a26[]= {32,12,91,13,0};
- Xclasselem j26[]= {1,11,2,12,0};
- Xclasselem s27[]= {17,0};
- Xclasselem i27[]= {52,17,0};
- Xclasselem s28[]= {16,17,0};
- Xclasselem i28[]= {52,17,0};
- Xclasselem a28[]= {59,16,0};
- Xclasselem s29[]= {93,5,22,19,0};
- Xclasselem i29[]= {2,5,3,5,4,5,5,5,6,5,7,5,8,5,10,5,11,5,12,5,13,5,14,5,
- X 15,5,16,5,17,5,18,5,19,5,20,5,21,5,22,5,23,5,24,5,25,5,26,5,27,
- X 5,28,5,29,5,30,5,31,5,32,5,33,5,34,5,35,5,36,5,37,5,38,5,39,5,
- X 40,5,41,5,42,5,43,5,44,5,45,5,46,5,47,5,48,5,49,5,50,5,51,5,52,
- X 5,53,5,54,5,55,5,56,5,58,5,59,5,60,5,61,5,62,5,57,22,0};
- Xclasselem j29[]= {1,19,0};
- Xclasselem s30[]= {5,22,0};
- Xclasselem i30[]= {2,5,3,5,4,5,5,5,6,5,7,5,8,5,10,5,11,5,12,5,13,5,14,5,
- X 15,5,16,5,17,5,18,5,19,5,20,5,21,5,22,5,23,5,24,5,25,5,26,5,27,
- X 5,28,5,29,5,30,5,31,5,32,5,33,5,34,5,35,5,36,5,37,5,38,5,39,5,
- X 40,5,41,5,42,5,43,5,44,5,45,5,46,5,47,5,48,5,49,5,50,5,51,5,52,
- X 5,53,5,54,5,55,5,56,5,58,5,59,5,60,5,61,5,62,5,57,22,0};
- Xclasselem s31[]= {5,22,19,0};
- Xclasselem i31[]= {2,5,3,5,4,5,5,5,6,5,7,5,8,5,10,5,11,5,12,5,13,5,14,5,
- X 15,5,16,5,17,5,18,5,19,5,20,5,21,5,22,5,23,5,24,5,25,5,26,5,27,
- X 5,28,5,29,5,30,5,31,5,32,5,33,5,34,5,35,5,36,5,37,5,38,5,39,5,
- X 40,5,41,5,42,5,43,5,44,5,45,5,46,5,47,5,48,5,49,5,50,5,51,5,52,
- X 5,53,5,54,5,55,5,56,5,58,5,59,5,60,5,61,5,62,5,57,22,0};
- Xclasselem j31[]= {1,19,0};
- Xclasselem s32[]= {93,6,22,21,0};
- Xclasselem i32[]= {2,6,3,6,5,6,6,6,7,6,8,6,9,6,10,6,11,6,12,6,13,6,14,6,
- X 15,6,16,6,17,6,18,6,19,6,20,6,21,6,22,6,23,6,24,6,25,6,26,6,27,
- X 6,28,6,29,6,30,6,31,6,32,6,33,6,34,6,35,6,36,6,37,6,38,6,39,6,
- X 40,6,41,6,42,6,43,6,44,6,45,6,46,6,47,6,48,6,49,6,50,6,51,6,52,
- X 6,53,6,54,6,55,6,56,6,58,6,59,6,60,6,61,6,62,6,57,22,0};
- Xclasselem j32[]= {1,21,0};
- Xclasselem s33[]= {6,22,0};
- Xclasselem i33[]= {2,6,3,6,5,6,6,6,7,6,8,6,9,6,10,6,11,6,12,6,13,6,14,6,
- X 15,6,16,6,17,6,18,6,19,6,20,6,21,6,22,6,23,6,24,6,25,6,26,6,27,
- X 6,28,6,29,6,30,6,31,6,32,6,33,6,34,6,35,6,36,6,37,6,38,6,39,6,
- X 40,6,41,6,42,6,43,6,44,6,45,6,46,6,47,6,48,6,49,6,50,6,51,6,52,
- X 6,53,6,54,6,55,6,56,6,58,6,59,6,60,6,61,6,62,6,57,22,0};
- Xclasselem s34[]= {6,22,21,0};
- Xclasselem i34[]= {2,6,3,6,5,6,6,6,7,6,8,6,9,6,10,6,11,6,12,6,13,6,14,6,
- X 15,6,16,6,17,6,18,6,19,6,20,6,21,6,22,6,23,6,24,6,25,6,26,6,27,
- X 6,28,6,29,6,30,6,31,6,32,6,33,6,34,6,35,6,36,6,37,6,38,6,39,6,
- X 40,6,41,6,42,6,43,6,44,6,45,6,46,6,47,6,48,6,49,6,50,6,51,6,52,
- X 6,53,6,54,6,55,6,56,6,58,6,59,6,60,6,61,6,62,6,57,22,0};
- Xclasselem j34[]= {1,21,0};
- Xclasselem s35[]= {23,1,24,25,26,27,0};
- Xclasselem i35[]= {58,1,10,24,0};
- Xclasselem a35[]= {44,23,91,25,64,26,124,27,0};
- Xclasselem s36[]= {1,24,25,26,27,0};
- Xclasselem i36[]= {58,1,10,24,0};
- Xclasselem a36[]= {91,25,64,26,124,27,0};
- Xclasselem s37[]= {28,1,29,0};
- Xclasselem i37[]= {58,1,10,29,0};
- Xclasselem a37[]= {44,28,0};
- Xclasselem s38[]= {1,29,0};
- Xclasselem i38[]= {58,1,10,29,0};
- Xclasselem s39[]= {31,32,33,34,35,36,11,12,7,13,1,3,10,14,18,20,0};
- Xclasselem i39[]= {39,31,44,32,30,33,39,34,5,7,12,7,13,7,15,7,17,7,21,7,
- X 22,7,23,7,25,7,55,7,60,7,62,7,58,1,16,3,18,3,10,10,59,14,9,18,
- X 4,20,0};
- Xclasselem a39[]= {32,35,32,36,32,12,91,13,0};
- Xclasselem j39[]= {2,35,2,36,1,11,2,12,0};
- Xclasselem s40[]= {30,31,32,33,34,35,36,11,12,7,13,1,3,10,14,18,20,0};
- Xclasselem i40[]= {30,30,39,31,44,32,30,33,39,34,5,7,12,7,13,7,15,7,17,
- X 7,21,7,22,7,23,7,25,7,55,7,60,7,62,7,58,1,16,3,18,3,10,10,59,14,
- X 9,18,4,20,0};
- Xclasselem a40[]= {32,35,32,36,32,12,91,13,0};
- Xclasselem j40[]= {2,35,2,36,1,11,2,12,0};
- Xclasselem s41[]= {31,32,33,34,11,12,7,13,1,3,10,14,18,20,0};
- Xclasselem i41[]= {39,31,44,32,30,33,39,34,5,7,12,7,13,7,15,7,17,7,21,7,
- X 22,7,23,7,25,7,55,7,60,7,62,7,58,1,16,3,18,3,10,10,59,14,9,18,
- X 4,20,0};
- Xclasselem a41[]= {32,12,91,13,0};
- Xclasselem j41[]= {1,11,2,12,0};
- Xclasselem s42[]= {9,31,32,33,34,35,36,11,12,7,13,1,3,10,14,18,20,0};
- Xclasselem i42[]= {39,31,44,32,30,33,39,34,5,7,12,7,13,7,15,7,17,7,21,7,
- X 22,7,23,7,25,7,55,7,60,7,62,7,58,1,16,3,18,3,10,10,59,14,9,18,
- X 4,20,0};
- Xclasselem a42[]= {44,9,32,35,32,36,32,12,91,13,0};
- Xclasselem j42[]= {2,35,2,36,1,11,2,12,0};
- Xclasselem s43[]= {37,0};
- Xclasselem i43[]= {26,37,0};
- Xclasselem s44[]= {38,0};
- Xclasselem i44[]= {40,38,0};
- Xclasselem s45[]= {31,32,33,34,35,11,12,7,13,1,3,10,14,18,20,0};
- Xclasselem i45[]= {39,31,44,32,30,33,39,34,5,7,12,7,13,7,15,7,17,7,21,7,
- X 22,7,23,7,25,7,55,7,60,7,62,7,58,1,16,3,18,3,10,10,59,14,9,18,
- X 4,20,0};
- Xclasselem a45[]= {32,35,32,12,91,13,0};
- Xclasselem j45[]= {2,35,1,11,2,12,0};
- Xclasselem s46[]= {31,32,33,34,36,11,12,7,13,1,3,10,14,18,20,0};
- Xclasselem i46[]= {39,31,44,32,30,33,39,34,5,7,12,7,13,7,15,7,17,7,21,7,
- X 22,7,23,7,25,7,55,7,60,7,62,7,58,1,16,3,18,3,10,10,59,14,9,18,
- X 4,20,0};
- Xclasselem a46[]= {32,36,32,12,91,13,0};
- Xclasselem j46[]= {2,36,1,11,2,12,0};
- Xclasselem s47[]= {4,58,53,40,42,41,60,47,54,61,48,49,50,43,46,62,56,55,
- X 44,45,57,52,51,91,2,63,59,39,0};
- Xclasselem i47[]= {53,4,34,58,31,53,44,60,44,47,42,54,43,61,48,48,43,49,
- X 43,50,41,43,29,46,43,62,31,56,44,55,34,44,43,45,28,57,41,52,44,
- X 51,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,2,36,2,37,2,
- X 38,2,39,2,40,2,41,2,42,2,43,2,44,2,45,2,46,2,47,2,48,2,49,2,50,
- X 2,51,2,48,59,0};
- Xclasselem a47[]= {32,63,32,39,0};
- Xclasselem j47[]= {1,40,1,42,1,41,2,63,2,39,0};
- Xclasselem s48[]= {47,54,61,48,49,50,43,46,62,56,55,44,45,57,52,51,91,2,
- X 63,0};
- Xclasselem i48[]= {44,47,42,54,43,61,48,48,43,49,43,50,41,43,29,46,43,62,
- X 31,56,44,55,34,44,43,45,28,57,41,52,44,51,26,2,27,2,28,2,29,2,
- X 30,2,31,2,32,2,33,2,34,2,35,2,36,2,37,2,38,2,39,2,40,2,41,2,42,
- X 2,43,2,44,2,45,2,46,2,47,2,48,2,49,2,50,2,51,2,0};
- Xclasselem a48[]= {32,63,0};
- Xclasselem j48[]= {2,63,0};
- Xclasselem s49[]= {58,53,47,54,61,48,49,50,43,46,62,56,55,44,45,57,52,51,
- X 91,2,63,59,40,41,39,0};
- Xclasselem i49[]= {34,58,31,53,44,47,42,54,43,61,48,48,43,49,43,50,41,43,
- X 29,46,43,62,31,56,44,55,34,44,43,45,28,57,41,52,44,51,26,2,27,
- X 2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,2,36,2,37,2,38,2,39,2,
- X 40,2,41,2,42,2,43,2,44,2,45,2,46,2,47,2,48,2,49,2,50,2,51,2,48,
- X 59,0};
- Xclasselem a49[]= {32,63,32,39,0};
- Xclasselem j49[]= {2,63,1,40,1,41,2,39,0};
- Xclasselem s50[]= {58,59,53,41,0};
- Xclasselem i50[]= {34,58,48,59,31,53,0};
- Xclasselem j50[]= {1,41,0};
- Xclasselem s51[]= {58,59,53,0};
- Xclasselem i51[]= {34,58,48,59,31,53,0};
- Xclasselem s52[]= {9,11,12,7,13,1,3,10,14,18,20,2,64,63,0};
- Xclasselem i52[]= {5,7,12,7,13,7,15,7,17,7,21,7,22,7,23,7,25,7,55,7,60,
- X 7,62,7,58,1,16,3,18,3,10,10,59,14,9,18,4,20,26,2,27,2,28,2,29,
- X 2,30,2,31,2,32,2,33,2,34,2,35,2,36,2,37,2,38,2,39,2,40,2,41,2,
- X 42,2,43,2,44,2,45,2,46,2,47,2,48,2,49,2,50,2,51,2,0};
- Xclasselem a52[]= {44,9,32,12,91,13,32,64,32,63,0};
- Xclasselem j52[]= {1,11,2,12,2,64,2,63,0};
- Xclasselem s53[]= {2,63,0};
- Xclasselem i53[]= {26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,2,36,
- X 2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,2,45,2,46,2,47,2,48,2,
- X 49,2,50,2,51,2,0};
- Xclasselem a53[]= {32,63,0};
- Xclasselem j53[]= {2,63,0};
- Xclasselem s54[]= {65,0};
- Xclasselem i54[]= {1,65,0};
- Xclasselem s55[]= {93,65,0};
- Xclasselem i55[]= {1,65,0};
- Xclasselem s56[]= {93,58,53,47,54,61,48,49,50,43,46,62,56,55,44,45,57,52,
- X 51,91,2,63,59,40,41,39,65,0};
- Xclasselem i56[]= {34,58,31,53,44,47,42,54,43,61,48,48,43,49,43,50,41,43,
- X 29,46,43,62,31,56,44,55,34,44,43,45,28,57,41,52,44,51,26,2,27,
- X 2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,2,36,2,37,2,38,2,39,2,
- X 40,2,41,2,42,2,43,2,44,2,45,2,46,2,47,2,48,2,49,2,50,2,51,2,48,
- X 59,1,65,0};
- Xclasselem a56[]= {32,63,32,39,0};
- Xclasselem j56[]= {2,63,1,40,1,41,2,39,0};
- Xclasselem s57[]= {58,53,47,54,61,48,49,50,43,46,62,56,55,44,45,57,52,51,
- X 91,2,63,59,40,41,39,65,0};
- Xclasselem i57[]= {34,58,31,53,44,47,42,54,43,61,48,48,43,49,43,50,41,43,
- X 29,46,43,62,31,56,44,55,34,44,43,45,28,57,41,52,44,51,26,2,27,
- X 2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,2,36,2,37,2,38,2,39,2,
- X 40,2,41,2,42,2,43,2,44,2,45,2,46,2,47,2,48,2,49,2,50,2,51,2,48,
- X 59,1,65,0};
- Xclasselem a57[]= {32,63,32,39,0};
- Xclasselem j57[]= {2,63,1,40,1,41,2,39,0};
- Xclasselem s58[]= {66,0};
- Xclasselem i58[]= {1,66,0};
- Xclasselem s59[]= {93,66,0};
- Xclasselem i59[]= {1,66,0};
- Xclasselem s60[]= {93,4,0};
- Xclasselem i60[]= {53,4,0};
- Xclasselem s61[]= {67,0};
- Xclasselem i61[]= {33,67,0};
- Xclasselem s62[]= {68,67,0};
- Xclasselem i62[]= {33,67,0};
- Xclasselem j62[]= {1,68,0};
- Xclasselem s63[]= {71,72,2,75,0};
- Xclasselem i63[]= {43,71,43,72,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,
- X 34,2,35,2,36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,2,45,2,46,
- X 2,47,2,48,2,49,2,50,2,51,2,0};
- Xclasselem a63[]= {32,75,0};
- Xclasselem j63[]= {2,75,0};
- Xclasselem s64[]= {73,74,1,29,75,0};
- Xclasselem i64[]= {58,1,10,29,0};
- Xclasselem a64[]= {32,74,32,75,0};
- Xclasselem j64[]= {1,73,2,74,2,75,0};
- Xclasselem s65[]= {1,29,0};
- Xclasselem i65[]= {58,1,10,29,0};
- Xclasselem s66[]= {73,1,29,0};
- Xclasselem i66[]= {58,1,10,29,0};
- Xclasselem j66[]= {1,73,0};
- Xclasselem s67[]= {28,1,29,2,76,75,0};
- Xclasselem i67[]= {58,1,10,29,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34,
- X 2,35,2,36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,2,45,2,46,2,
- X 47,2,48,2,49,2,50,2,51,2,0};
- Xclasselem a67[]= {44,28,32,76,32,75,0};
- Xclasselem j67[]= {2,76,2,75,0};
- Xclasselem s68[]= {2,75,0};
- Xclasselem i68[]= {26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,2,36,
- X 2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,2,45,2,46,2,47,2,48,2,
- X 49,2,50,2,51,2,0};
- Xclasselem a68[]= {32,75,0};
- Xclasselem j68[]= {2,75,0};
- Xclasselem s69[]= {67,68,69,70,0};
- Xclasselem i69[]= {33,67,0};
- Xclasselem j69[]= {1,68,1,69,1,70,0};
- Xclasselem s70[]= {93,78,0};
- Xclasselem i70[]= {1,78,0};
- Xclasselem s71[]= {78,0};
- Xclasselem i71[]= {1,78,0};
- Xclasselem s72[]= {1,2,79,0};
- Xclasselem i72[]= {58,1,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,
- X 2,36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,2,45,2,46,2,47,2,
- X 48,2,49,2,50,2,51,2,0};
- Xclasselem a72[]= {32,79,0};
- Xclasselem j72[]= {2,79,0};
- Xclasselem s73[]= {2,79,0};
- Xclasselem i73[]= {26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,2,36,
- X 2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,2,45,2,46,2,47,2,48,2,
- X 49,2,50,2,51,2,0};
- Xclasselem a73[]= {32,79,0};
- Xclasselem j73[]= {2,79,0};
- Xclasselem s74[]= {93,67,68,69,70,77,0};
- Xclasselem i74[]= {33,67,0};
- Xclasselem j74[]= {1,68,1,69,1,70,1,77,0};
- Xclasselem s75[]= {93,11,12,7,13,1,3,10,14,18,20,0};
- Xclasselem i75[]= {5,7,12,7,13,7,15,7,17,7,21,7,22,7,23,7,25,7,55,7,60,
- X 7,62,7,58,1,16,3,18,3,10,10,59,14,9,18,4,20,0};
- Xclasselem a75[]= {32,12,91,13,0};
- Xclasselem j75[]= {1,11,2,12,0};
- Xclasselem s76[]= {93,4,67,58,53,40,42,41,60,47,54,61,48,49,50,43,46,62,
- X 56,55,44,45,57,52,51,91,2,63,59,39,68,83,85,87,0};
- Xclasselem i76[]= {53,4,33,67,34,58,31,53,44,60,44,47,42,54,43,61,48,48,
- X 43,49,43,50,41,43,29,46,43,62,31,56,44,55,34,44,43,45,28,57,41,
- X 52,44,51,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,2,36,
- X 2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,2,45,2,46,2,47,2,48,2,
- X 49,2,50,2,51,2,48,59,19,83,22,85,23,87,0};
- Xclasselem a76[]= {32,63,32,39,0};
- Xclasselem j76[]= {1,40,1,42,1,41,2,63,2,39,1,68,0};
- Xclasselem s77[]= {93,1,2,79,84,92,0};
- Xclasselem i77[]= {58,1,26,2,27,2,28,2,29,2,30,2,31,2,32,2,33,2,34,2,35,
- X 2,36,2,37,2,38,2,39,2,40,2,41,2,42,2,43,2,44,2,45,2,46,2,47,2,
- X 48,2,49,2,50,2,51,2,19,84,0};
- Xclasselem a77[]= {32,79,0};
- Xclasselem j77[]= {2,79,0};
- Xclasselem s78[]= {93,1,86,0};
- Xclasselem i78[]= {58,1,22,86,0};
- Xclasselem s79[]= {93,1,88,0};
- Xclasselem i79[]= {58,1,23,88,0};
- Xclasselem s80[]= {93,8,0};
- Xclasselem i80[]= {2,8,3,8,4,8,5,8,6,8,7,8,8,8,9,8,10,8,11,8,12,8,13,8,
- X 14,8,15,8,16,8,17,8,18,8,19,8,20,8,21,8,22,8,23,8,24,8,25,8,26,
- X 8,27,8,28,8,29,8,30,8,31,8,32,8,33,8,34,8,35,8,36,8,37,8,38,8,
- X 39,8,40,8,41,8,42,8,43,8,44,8,45,8,46,8,47,8,48,8,49,8,50,8,51,
- X 8,52,8,53,8,54,8,55,8,56,8,57,8,58,8,59,8,60,8,61,8,62,8,0};
- X
- Xstruct classinfo cl[81] = {
- X {s0, i0, 0, 0}, /* name-body */
- X {s1, i1, 0, 0}, /* name */
- X {s2, i2, 0, 0}, /* keyword-body */
- X {s3, i3, 0, 0}, /* keyword */
- X {s4, i4, 0, 0}, /* number-body */
- X {s5, i5, 0, 0}, /* number */
- X {s6, i6, 0, 0}, /* comment-body */
- X {s7, i7, 0, 0}, /* comment */
- X {s8, i8, 0, 0}, /* text1-body */
- X {s9, i9, 0, 0}, /* text1 */
- X {s10, i10, 0, 0}, /* text2-body */
- X {s11, i11, 0, 0}, /* text2 */
- X {s12, i12, 0, 0}, /* operator-body */
- X {s13, i13, 0, 0}, /* operator */
- X {s14, i14, 0, 0}, /* rawinput-body */
- X {s15, i15, 0, 0}, /* rawinput */
- X {s16, 0, 0, 0}, /* suggestion-body */
- X {s17, 0, 0, 0}, /* sugghowname-body */
- X {s18, i18, a18, j18}, /* expression */
- X {s19, i19, a19, j19}, /* optional_expression */
- X {s20, i20, a20, j20}, /* single_expression */
- X {s21, i21, a21, 0}, /* block */
- X {s22, i22, a22, j22}, /* group */
- X {s23, i23, a23, 0}, /* primary */
- X {s24, i24, a24, j24}, /* optional_list_or_table_filler_series */
- X {s25, i25, a25, j25}, /* list_filler_series_tail */
- X {s26, i26, a26, j26}, /* list_filler */
- X {s27, i27, 0, 0}, /* table_filler */
- X {s28, i28, a28, 0}, /* table_filler_series_tail */
- X {s29, i29, 0, j29}, /* txt1 */
- X {s30, i30, 0, 0}, /* text1_conv */
- X {s31, i31, 0, j31}, /* text1_next */
- X {s32, i32, 0, j32}, /* txt2 */
- X {s33, i33, 0, 0}, /* text2_conv */
- X {s34, i34, 0, j34}, /* text2_next */
- X {s35, i35, a35, 0}, /* address */
- X {s36, i36, a36, 0}, /* single_address */
- X {s37, i37, a37, 0}, /* naming */
- X {s38, i38, 0, 0}, /* single_naming */
- X {s39, i39, a39, j39}, /* test */
- X {s40, i40, a40, j40}, /* e_test */
- X {s41, i41, a41, j41}, /* r_test */
- X {s42, i42, a42, j42}, /* coll_test */
- X {s43, i43, 0, 0}, /* and */
- X {s44, i44, 0, 0}, /* or */
- X {s45, i45, a45, j45}, /* and_test */
- X {s46, i46, a46, j46}, /* or_test */
- X {s47, i47, a47, j47}, /* cmd */
- X {s48, i48, a48, j48}, /* simple_cmd */
- X {s49, i49, a49, j49}, /* shortcmd */
- X {s50, i50, 0, j50}, /* c_ifforwhile */
- X {s51, i51, 0, 0}, /* ifforwhile */
- X {s52, i52, a52, j52}, /* kw_next */
- X {s53, i53, a53, j53}, /* exp_next */
- X {s54, i54, 0, 0}, /* suite */
- X {s55, i55, 0, 0}, /* optional_suite */
- X {s56, i56, a56, j56}, /* optional_cmdsuite */
- X {s57, i57, a57, j57}, /* cmdsuite */
- X {s58, i58, 0, 0}, /* t_suite */
- X {s59, i59, 0, 0}, /* optional_t_suite */
- X {s60, i60, 0, 0}, /* optional_comment */
- X {s61, i61, 0, 0}, /* head */
- X {s62, i62, 0, j62}, /* commented_head */
- X {s63, i63, a63, j63}, /* formal_cmd */
- X {s64, i64, a64, j64}, /* formal_formula */
- X {s65, i65, 0, 0}, /* ff_block */
- X {s66, i66, 0, j66}, /* ff_group */
- X {s67, i67, a67, j67}, /* formal_kw_next */
- X {s68, i68, a68, j68}, /* naming_next */
- X {s69, i69, 0, j69}, /* refpred */
- X {s70, i70, 0, 0}, /* optional_refinements */
- X {s71, i71, 0, 0}, /* refinements */
- X {s72, i72, a72, j72}, /* name_or_keyword */
- X {s73, i73, a73, j73}, /* kwltail */
- X {s74, i74, 0, j74}, /* unit_edit */
- X {s75, i75, a75, j75}, /* address_edit */
- X {s76, i76, a76, j76}, /* imm_cmd */
- X {s77, i77, a77, j77}, /* ed_unit */
- X {s78, i78, 0, 0}, /* ed_address */
- X {s79, i79, 0, 0}, /* ws_cmd */
- X {s80, i80, 0, 0} /* raw_input */
- X};
- X
- Xstatic struct table abc_grammar[95] = {
- X /* 0 */ {"Rootsymbol", {0,0,0,0,0}, {&cl[76],0,0,0}, 0},
- X /* 1 */ {"Name", {0,0,0,0,0}, {&cl[0],0,0,0}, 0},
- X /* 2 */ {"Keyword", {0,0,0,0,0}, {&cl[2],0,0,0}, 0},
- X /* 3 */ {"Number", {0,0,0,0,0}, {&cl[4],0,0,0}, 0},
- X /* 4 */ {"Comment", {0,0,0,0,0}, {&cl[6],0,0,0}, 0},
- X /* 5 */ {"Text1", {0,0,0,0,0}, {&cl[8],0,0,0}, 0},
- X /* 6 */ {"Text2", {0,0,0,0,0}, {&cl[10],0,0,0}, 0},
- X /* 7 */ {"Operator", {0,0,0,0,0}, {&cl[12],0,0,0}, 0},
- X /* 8 */ {"Rawinput", {0,0,0,0,0}, {&cl[14],0,0,0}, 0},
- X /* 9 */ {"Collateral", {0,", ",0,0,0}, {&cl[20],&cl[18],0,0}, 0},
- X /* 10 */ {"Compound", {"(",")",0,0,0}, {&cl[42],0,0,0}, 0},
- X /* 11 */ {"Blocked", {0,0,0,0,0}, {&cl[21],&cl[22],0,0}, 0},
- X /* 12 */ {"Grouped", {0," ",0,0,0}, {&cl[22],&cl[20],0,0}, 0},
- X /* 13 */ {"Sel_expr", {0,"[","]",0,0}, {&cl[23],&cl[18],0,0}, 0},
- X /* 14 */ {"List_or_table_display", {"{","}",0,0,0}, {&cl[24],0,0,0}, 0},
- X /* 15 */ {"List_filler_series", {0,"; ",0,0,0}, {&cl[26],&cl[25],0,0}, 0},
- X /* 16 */ {"Table_filler_series", {0,"; ",0,0,0}, {&cl[27],&cl[28],0,0}, 0},
- X /* 17 */ {"Table_filler", {"[","]: ",0,0,0}, {&cl[18],&cl[20],0,0}, 0},
- X /* 18 */ {"Text1_display", {"'","'",0,0,0}, {&cl[29],0,0,0}, 0},
- X /* 19 */ {"Text1_plus", {0,0,0,0,0}, {&cl[30],&cl[31],0,0}, 0},
- X /* 20 */ {"Text2_display", {"\"","\"",0,0,0}, {&cl[32],0,0,0}, 0},
- X /* 21 */ {"Text2_plus", {0,0,0,0,0}, {&cl[33],&cl[34],0,0}, 0},
- X /* 22 */ {"Conversion", {"`","`",0,0,0}, {&cl[19],0,0,0}, 0},
- X /* 23 */ {"Multiple_address", {0,", ",0,0,0}, {&cl[36],&cl[35],0,0}, 0},
- X /* 24 */ {"Compound_address", {"(",")",0,0,0}, {&cl[35],0,0,0}, 0},
- X /* 25 */ {"Selection", {0,"[","]",0,0}, {&cl[35],&cl[18],0,0}, 0},
- X /* 26 */ {"Behead", {0,"@",0,0,0}, {&cl[35],&cl[22],0,0}, 0},
- X /* 27 */ {"Curtail", {0,"|",0,0,0}, {&cl[35],&cl[22],0,0}, 0},
- X /* 28 */ {"Multiple_naming", {0,", ",0,0,0}, {&cl[38],&cl[37],0,0}, 0},
- X /* 29 */ {"Compound_naming", {"(",")",0,0,0}, {&cl[37],0,0,0}, 0},
- X /* 30 */ {"Else_kw", {"ELSE",0,0,0,0}, {0,0,0,0}, 0},
- X /* 31 */ {"Not", {"NOT ",0,0,0,0}, {&cl[41],0,0,0}, 0},
- X /* 32 */ {"Some_in", {"SOME "," IN "," HAS ",0,0}, {&cl[37],&cl[20],&cl[41],0}, 0},
- X /* 33 */ {"Each_in", {"EACH "," IN "," HAS ",0,0}, {&cl[37],&cl[20],&cl[41],0}, 0},
- X /* 34 */ {"No_in", {"NO "," IN "," HAS ",0,0}, {&cl[37],&cl[20],&cl[41],0}, 0},
- X /* 35 */ {"And", {0," ",0,0,0}, {&cl[20],&cl[43],0,0}, 0},
- X /* 36 */ {"Or", {0," ",0,0,0}, {&cl[20],&cl[44],0,0}, 0},
- X /* 37 */ {"And_kw", {"AND ",0,0,0,0}, {&cl[45],0,0,0}, 0},
- X /* 38 */ {"Or_kw", {"OR ",0,0,0,0}, {&cl[46],0,0,0}, 0},
- X /* 39 */ {"Cmt_cmd", {0," ",0,0,0}, {&cl[48],&cl[7],0,0}, 0},
- X /* 40 */ {"Short_comp", {0,"\t","\b",0,0}, {&cl[51],&cl[49],0,0}, 0},
- X /* 41 */ {"Cmt_comp", {0,0,0,0,0}, {&cl[51],&cl[7],0,0}, 0},
- X /* 42 */ {"Long_comp", {0,"\t","\b",0,0}, {&cl[50],&cl[54],0,0}, 0},
- X /* 43 */ {"Put", {"PUT "," IN ",0,0,0}, {&cl[18],&cl[35],0,0}, 0},
- X /* 44 */ {"Insert", {"INSERT "," IN ",0,0,0}, {&cl[18],&cl[35],0,0}, 0},
- X /* 45 */ {"Remove", {"REMOVE "," FROM ",0,0,0}, {&cl[18],&cl[35],0,0}, 0},
- X /* 46 */ {"Delete", {"DELETE ",0,0,0,0}, {&cl[35],0,0,0}, 0},
- X /* 47 */ {"Share", {"SHARE ",0,0,0,0}, {&cl[37],0,0,0}, 0},
- X /* 48 */ {"Write", {"WRITE ",0,0,0,0}, {&cl[18],0,0,0}, 0},
- X /* 49 */ {"Read", {"READ "," EG ",0,0,0}, {&cl[35],&cl[20],0,0}, 0},
- X /* 50 */ {"Read_raw", {"READ "," RAW",0,0,0}, {&cl[35],0,0,0}, 0},
- X /* 51 */ {"Set", {"SET RANDOM ",0,0,0,0}, {&cl[18],0,0,0}, 0},
- X /* 52 */ {"Pass", {"PASS",0,0,0,0}, {0,0,0,0}, 0},
- X /* 53 */ {"For", {"FOR "," IN ",": ",0,0}, {&cl[37],&cl[20],0,0}, 0},
- X /* 54 */ {"Quit", {"QUIT",0,0,0,0}, {0,0,0,0}, 0},
- X /* 55 */ {"Succeed", {"SUCCEED",0,0,0,0}, {0,0,0,0}, 0},
- X /* 56 */ {"Fail", {"FAIL",0,0,0,0}, {0,0,0,0}, 0},
- X /* 57 */ {"Check", {"CHECK ",0,0,0,0}, {&cl[39],0,0,0}, 0},
- X /* 58 */ {"If", {"IF ",": ",0,0,0}, {&cl[39],0,0,0}, 0},
- X /* 59 */ {"While", {"WHILE ",": ",0,0,0}, {&cl[39],0,0,0}, 0},
- X /* 60 */ {"Select", {"SELECT: ","\t","\b",0,0}, {&cl[60],&cl[58],&cl[60],0}, 0},
- X /* 61 */ {"Return", {"RETURN ",0,0,0,0}, {&cl[18],0,0,0}, 0},
- X /* 62 */ {"Report", {"REPORT ",0,0,0,0}, {&cl[39],0,0,0}, 0},
- X /* 63 */ {"Kw_plus", {0," ",0,0,0}, {&cl[3],&cl[52],0,0}, 0},
- X /* 64 */ {"Exp_plus", {0," ",0,0,0}, {&cl[18],&cl[53],0,0}, 0},
- X /* 65 */ {"Suite", {"\n",0,0,0,0}, {&cl[47],&cl[55],0,0}, 0},
- X /* 66 */ {"Test_suite", {"\n",": ","\t","\b",0}, {&cl[40],&cl[60],&cl[57],&cl[59]}, 0},
- X /* 67 */ {"Head", {"HOW TO ",": ",0,0,0}, {&cl[63],0,0,0}, 0},
- X /* 68 */ {"Cmt_head", {0,0,0,0,0}, {&cl[61],&cl[7],0,0}, 0},
- X /* 69 */ {"Long_unit", {0,"\t","\b",0,0}, {&cl[62],&cl[54],0,0}, 0},
- X /* 70 */ {"Short_unit", {0,"\t","\b",0,0}, {&cl[61],&cl[49],0,0}, 0},
- X /* 71 */ {"Formal_return", {"RETURN ",0,0,0,0}, {&cl[64],0,0,0}, 0},
- X /* 72 */ {"Formal_report", {"REPORT ",0,0,0,0}, {&cl[64],0,0,0}, 0},
- X /* 73 */ {"Blocked_ff", {0,0,0,0,0}, {&cl[65],&cl[66],0,0}, 0},
- X /* 74 */ {"Grouped_ff", {0," ",0,0,0}, {&cl[66],&cl[64],0,0}, 0},
- X /* 75 */ {"Formal_kw_plus", {0," ",0,0,0}, {&cl[3],&cl[67],0,0}, 0},
- X /* 76 */ {"Formal_naming_plus", {0," ",0,0,0}, {&cl[37],&cl[68],0,0}, 0},
- X /* 77 */ {"Ref_join", {0,0,0,0,0}, {&cl[69],&cl[71],0,0}, 0},
- X /* 78 */ {"Refinement", {"\n",": ","\t","\b",0}, {&cl[72],&cl[60],&cl[57],&cl[70]}, 0},
- X /* 79 */ {"Keyword_list", {0," ",0,0,0}, {&cl[3],&cl[73],0,0}, 0},
- X /* 80 */ {"Unit_edit", {0,0,0,0,0}, {&cl[74],0,0,0}, 0},
- X /* 81 */ {"Target_edit", {0,0,0,0,0}, {&cl[75],0,0,0}, 0},
- X /* 82 */ {"Imm_cmd", {0,0,0,0,0}, {&cl[76],0,0,0}, 0},
- X /* 83 */ {"Edit_unit", {":",0,0,0,0}, {&cl[77],0,0,0}, 0},
- X /* 84 */ {"Colon", {":",0,0,0,0}, {0,0,0,0}, 0},
- X /* 85 */ {"Edit_address", {"=",0,0,0,0}, {&cl[78],0,0,0}, 0},
- X /* 86 */ {"Equals", {"=",0,0,0,0}, {0,0,0,0}, 0},
- X /* 87 */ {"Workspace_cmd", {">",0,0,0,0}, {&cl[79],0,0,0}, 0},
- X /* 88 */ {"Right", {">",0,0,0,0}, {0,0,0,0}, 0},
- X /* 89 */ {"Expression", {0,0,0,0,0}, {&cl[18],0,0,0}, 0},
- X /* 90 */ {"Raw_input", {0,0,0,0,0}, {&cl[80],0,0,0}, 0},
- X /* 91 */ {"Suggestion", {0,0,0,0,0}, {&cl[16],0,0,0}, 0},
- X /* 92 */ {"Sugghowname", {0,0,0,0,0}, {&cl[17],0,0,0}, 0},
- X /* 93 */ {"Optional", {0,0,0,0,0}, {0,0,0,0}, 0},
- X /* 94 */ {"Hole", {"?",0,0,0,0}, {0,0,0,0}, 0}
- X};
- X
- Xstruct table *table= abc_grammar;
- X
- Xstatic struct lexinfo abc_lexicals[10] = {
- X {"abcdefghijklmnopqrstuvwxyz", "abcdefghijklmnopqrstuvwxyz0123456789'\"."}, /* NAME */
- X {"ABCDEFGHIJKLMNOPQRSTUVWXYZ", "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'\"."}, /* KEYWORD */
- X {"0123456789.", "0123456789."}, /* NUMBER */
- X {"\\", "^"}, /* COMMENT */
- X {"^'`", "^'`"}, /* TEXT1 */
- X {"^\"`", "^\"`"}, /* TEXT2 */
- X {"+-*/#^~@|<=>", ""}, /* OPERATOR */
- X {"^", "^"}, /* RAWINPUT */
- X {"", ""}, /* SUGGESTION */
- X {"", ""} /* SUGGHOWNAME */
- X};
- X
- Xstruct lexinfo *lextab= abc_lexicals;
- END_OF_FILE
- if test 27315 -ne `wc -c <'abc/bed/e1tabl.c'`; then
- echo shar: \"'abc/bed/e1tabl.c'\" unpacked with wrong size!
- fi
- # end of 'abc/bed/e1tabl.c'
- fi
- if test -f 'abc/ex/wsgroup.abc' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'abc/ex/wsgroup.abc'\"
- else
- echo shar: Extracting \"'abc/ex/wsgroup.abc'\" \(116 characters\)
- sed "s/^X//" >'abc/ex/wsgroup.abc' <<'END_OF_FILE'
- X{[">"]:"try";[">>"]:"generate";["generate"]:"generate";["hanoi"]:"hanoi";["pi"]:"pi";["try"]:"try";["xref"]:"xref"}
- END_OF_FILE
- if test 116 -ne `wc -c <'abc/ex/wsgroup.abc'`; then
- echo shar: \"'abc/ex/wsgroup.abc'\" unpacked with wrong size!
- fi
- # end of 'abc/ex/wsgroup.abc'
- fi
- echo shar: End of archive 4 \(of 25\).
- cp /dev/null ark4isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 25 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still must unpack the following archives:
- echo " " ${MISSING}
- fi
- exit 0 # Just in case...
-