home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!news.tek.com!master!saab!billr
- From: billr@saab.CNA.TEK.COM (Bill Randle)
- Newsgroups: comp.sources.games
- Subject: v16i059: nethack31 - display oriented dungeons & dragons (Ver. 3.1), Part51/108
- Message-ID: <4362@master.CNA.TEK.COM>
- Date: 1 Feb 93 19:42:49 GMT
- Sender: news@master.CNA.TEK.COM
- Lines: 2770
- Approved: billr@saab.CNA.TEK.COM
- Xref: uunet comp.sources.games:1609
-
- Submitted-by: izchak@linc.cis.upenn.edu (Izchak Miller)
- Posting-number: Volume 16, Issue 59
- Archive-name: nethack31/Part51
- Supersedes: nethack3p9: Volume 10, Issue 46-102
- Environment: Amiga, Atari, Mac, MS-DOS, OS2, Unix, VMS, X11
-
-
-
- #! /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 51 (of 108)."
- # Contents: src/attrib.c sys/share/lev_lex.c
- # Wrapped by billr@saab on Wed Jan 27 16:09:06 1993
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'src/attrib.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'src/attrib.c'\"
- else
- echo shar: Extracting \"'src/attrib.c'\" \(17826 characters\)
- sed "s/^X//" >'src/attrib.c' <<'END_OF_FILE'
- X/* SCCS Id: @(#)attrib.c 3.1 92/10/26 */
- X/* Copyright 1988, 1989, 1990, 1992, M. Stephenson */
- X/* NetHack may be freely redistributed. See license for details. */
- X
- X/* attribute modification routines. */
- X
- X#include "hack.h"
- X#include "artifact.h"
- X
- X/* #define DEBUG /* uncomment for debugging info */
- X
- X#ifdef OVLB
- X
- X /* part of the output on gain or loss of attribute */
- Xstatic
- Xconst char *plusattr[] = {
- X "strong", "smart", "wise", "agile", "tough", "charismatic"
- X},
- X *minusattr[] = {
- X "weak", "stupid", "foolish", "clumsy", "vulnerable", "ugly"
- X};
- X
- X /* maximum and minimum values for the attributes */
- Xstruct attribs attrmax = {
- X 118, 18, 18, 18, 18, 18
- X},
- X attrmin = {
- X 3, 3, 3, 3, 3, 3
- X};
- X
- Xstatic
- Xconst struct innate {
- X schar ulevel;
- X long *ability;
- X const char *gainstr, *losestr;
- X} a_abil[] = { { 1, &(Stealth), "", "" },
- X { 1, &(Fast), "", "" },
- X { 10, &(Searching), "perceptive", "" },
- X { 0, 0, 0, 0 } },
- X
- X b_abil[] = { { 1, &(HPoison_resistance), "", "" },
- X { 7, &(Fast), "quick", "slow" },
- X { 15, &(Stealth), "stealthy", "" },
- X { 0, 0, 0, 0 } },
- X
- X c_abil[] = { { 7, &(Fast), "quick", "slow" },
- X { 15, &(Warning), "sensitive", "" },
- X { 0, 0, 0, 0 } },
- X
- X e_abil[] = { { 1, &(Fast), "", "" },
- X { 1, &(HSee_invisible), "", "" },
- X { 1, &(Searching), "", "" },
- X { 1, &(HSleep_resistance), "", "" },
- X { 0, 0, 0, 0 } },
- X
- X h_abil[] = { { 1, &(HPoison_resistance), "", "" },
- X { 15, &(Warning), "sensitive", "" },
- X { 0, 0, 0, 0 } },
- X
- X k_abil[] = { { 7, &(Fast), "quick", "slow" },
- X { 0, 0, 0, 0 } },
- X
- X p_abil[] = { { 15, &(Warning), "sensitive", "" },
- X { 20, &(HFire_resistance), "cool", "warmer" },
- X { 0, 0, 0, 0 } },
- X
- X r_abil[] = { { 1, &(Stealth), "", "" },
- X { 10, &(Searching), "perceptive", "" },
- X { 0, 0, 0, 0 } },
- X
- X s_abil[] = { { 1, &(Fast), "", "" },
- X { 15, &(Stealth), "stealthy", "" },
- X { 0, 0, 0, 0 } },
- X
- X t_abil[] = { { 10, &(Searching), "perceptive", "" },
- X { 20, &(HPoison_resistance), "hardy", "" },
- X { 0, 0, 0, 0 } },
- X
- X v_abil[] = { { 1, &(HCold_resistance), "", "" },
- X { 1, &(Stealth), "", "" },
- X { 7, &(Fast), "quick", "slow" },
- X { 0, 0, 0, 0 } },
- X
- X w_abil[] = { { 15, &(Warning), "sensitive", "" },
- X { 17, &(HTeleport_control), "controlled","uncontrolled" },
- X { 0, 0, 0, 0 } };
- X
- Xstatic
- Xconst struct clattr {
- X struct attribs base, cldist;
- X align align;
- X schar shp, hd, xlev, ndx;
- X/* According to AD&D, HD for some classes (ex. Wizard) should be smaller
- X * (4-sided for wizards). But this is not AD&D, and using the AD&D
- X * rule here produces an unplayable character. This I have used a minimum
- X * of an 10-sided hit die for everything. Another AD&D change: wizards get
- X * a minimum strength of 6 since without one you can't teleport or cast
- X * spells. --KAA
- X */
- X const struct innate *abil;
- X} a_attr = { { 7, 10, 10, 7, 7, 7 }, /* Archeologist */
- X { 20, 20, 20, 10, 20, 10 },
- X { A_LAWFUL, 10 }, 13, 10, 14, 2, a_abil },
- X
- X b_attr = { { 16, 7, 7, 15, 16, 6 }, /* Barbarian */
- X { 30, 6, 7, 20, 30, 7 },
- X { A_NEUTRAL, 10 }, 16, 12, 10, 3, b_abil },
- X
- X c_attr = { { 10, 7, 7, 7, 8, 6 }, /* Caveman (fighter) */
- X { 30, 6, 7, 20, 30, 7 },
- X { A_LAWFUL, 0 }, 16, 10, 10, 3, c_abil },
- X
- X/*
- X e_attr = { { 13, 13, 14, 6, 14, 6 },
- X */
- X e_attr = { { 13, 13, 13, 9, 13, 7 }, /* Elf (ranger) */
- X { 30, 10, 10, 20, 20, 10 },
- X { A_CHAOTIC, 10 }, 15, 10, 11, 2, e_abil },
- X
- X h_attr = { { 7, 7, 13, 7, 11, 16 }, /* Healer (druid) */
- X { 15, 20, 20, 15, 25, 10 },
- X { A_NEUTRAL, 10 }, 13, 10, 20, 2, h_abil },
- X
- X k_attr = { { 13, 7, 14, 8, 10, 17 }, /* Knight (paladin) */
- X { 20, 15, 15, 10, 20, 10 },
- X { A_LAWFUL, 10 }, 16, 10, 10, 3, k_abil },
- X
- X p_attr = { { 7, 7, 10, 7, 7, 7 }, /* Priest (cleric) */
- X { 15, 10, 30, 15, 20, 10 },
- X { A_NEUTRAL, 0 }, 14, 10, 10, 2, p_abil },
- X
- X r_attr = { { 7, 7, 7, 10, 7, 6 }, /* Rogue (thief) */
- X { 20, 10, 10, 30, 20, 10 },
- X { A_CHAOTIC, 10 }, 12, 10, 11, 2, r_abil },
- X
- X s_attr = { { 10, 8, 7, 10, 17, 6 }, /* Samurai (fighter/thief) */
- X { 30, 10, 10, 30, 14, 10 },
- X { A_LAWFUL, 10 }, 15, 10, 11, 2, s_abil },
- X
- X#ifdef TOURIST
- X t_attr = { { 7, 10, 6, 7, 7, 10 }, /* Tourist */
- X { 15, 10, 10, 15, 30, 20 },
- X { A_NEUTRAL, 0 }, 10, 10, 14, 1, t_abil },
- X#endif
- X
- X v_attr = { { 10, 7, 7, 7, 10, 7 }, /* Valkyrie (fighter) */
- X { 30, 6, 7, 20, 30, 7 },
- X { A_NEUTRAL, 0 }, 16, 10, 10, 3, v_abil },
- X
- X w_attr = { { 7, 10, 7, 7, 7, 7 }, /* Wizard (magic-user) */
- X { 10, 30, 10, 20, 20, 10 },
- X { A_NEUTRAL, 0 }, 12, 10, 12, 1, w_abil },
- X
- X X_attr = { { 3, 3, 3, 3, 3, 3 },
- X { 20, 15, 15, 15, 20, 15 },
- X { A_NEUTRAL, 0 }, 12, 10, 14, 1, 0 };
- X
- Xstatic long next_check = 600L; /* arbitrary first setting */
- Xstatic const struct clattr NEARDATA *NDECL(clx);
- Xstatic void NDECL(init_align);
- Xstatic void NDECL(exerper);
- X
- X/* adjust an attribute; return TRUE if change is made, FALSE otherwise */
- Xboolean
- Xadjattrib(ndx, incr, msgflg)
- X int ndx, incr;
- X int msgflg; /* positive => no message, zero => message, and */
- X{ /* negative => conditional (msg if change made) */
- X if (!incr) return FALSE;
- X
- X if (incr > 0) {
- X if ((AMAX(ndx) >= ATTRMAX(ndx)) && (ACURR(ndx) >= AMAX(ndx))) {
- X if (msgflg == 0 && flags.verbose)
- X pline("You're already as %s as you can get.",
- X plusattr[ndx]);
- X ABASE(ndx) = AMAX(ndx) = ATTRMAX(ndx); /* just in case */
- X return FALSE;
- X }
- X
- X ABASE(ndx) += incr;
- X if(ABASE(ndx) > AMAX(ndx)) {
- X incr = ABASE(ndx) - AMAX(ndx);
- X AMAX(ndx) += incr;
- X if(AMAX(ndx) > ATTRMAX(ndx))
- X AMAX(ndx) = ATTRMAX(ndx);
- X ABASE(ndx) = AMAX(ndx);
- X }
- X } else {
- X if (ABASE(ndx) <= ATTRMIN(ndx)) {
- X if (msgflg == 0 && flags.verbose)
- X pline("You're already as %s as you can get.",
- X minusattr[ndx]);
- X ABASE(ndx) = ATTRMIN(ndx); /* just in case */
- X return FALSE;
- X }
- X
- X ABASE(ndx) += incr;
- X if(ABASE(ndx) < ATTRMIN(ndx)) {
- X incr = ABASE(ndx) - ATTRMIN(ndx);
- X ABASE(ndx) = ATTRMIN(ndx);
- X AMAX(ndx) += incr;
- X if(AMAX(ndx) < ATTRMIN(ndx))
- X AMAX(ndx) = ATTRMIN(ndx);
- X }
- X }
- X if (msgflg <= 0)
- X You("feel %s%s!",
- X (incr > 1 || incr < -1) ? "very ": "",
- X (incr > 0) ? plusattr[ndx] : minusattr[ndx]);
- X flags.botl = 1;
- X return TRUE;
- X}
- X
- Xvoid
- Xgainstr(otmp, incr)
- X register struct obj *otmp;
- X register int incr;
- X{
- X int num = 1;
- X
- X if(incr) num = incr;
- X else {
- X if(ABASE(A_STR) < 18) num = (rn2(4) ? 1 : rnd(6) );
- X else if (ABASE(A_STR) < 103) num = rnd(10);
- X }
- X (void) adjattrib(A_STR, (otmp && otmp->cursed) ? -num : num, TRUE);
- X}
- X
- Xvoid
- Xlosestr(num) /* may kill you; cause may be poison or monster like 'a' */
- X register int num;
- X{
- X int ustr = ABASE(A_STR) - num;
- X
- X while(ustr < 3) {
- X ustr++;
- X num--;
- X u.uhp -= 6;
- X u.uhpmax -= 6;
- X }
- X (void) adjattrib(A_STR, -num, TRUE);
- X}
- X
- Xvoid
- Xchange_luck(n)
- X register schar n;
- X{
- X u.uluck += n;
- X if (u.uluck < 0 && u.uluck < LUCKMIN) u.uluck = LUCKMIN;
- X if (u.uluck > 0 && u.uluck > LUCKMAX) u.uluck = LUCKMAX;
- X}
- X
- Xint
- Xstone_luck(parameter)
- Xboolean parameter; /* So I can't think up of a good name. So sue me. --KAA */
- X{
- X register struct obj *otmp;
- X register long bonchance = 0;
- X
- X for(otmp = invent; otmp; otmp=otmp->nobj)
- X if (otmp->otyp == LUCKSTONE
- X || (otmp->oartifact && spec_ability(otmp, SPFX_LUCK))) {
- X if (otmp->cursed) bonchance -= otmp->quan;
- X else if (otmp->blessed) bonchance += otmp->quan;
- X else if (parameter) bonchance += otmp->quan;
- X }
- X
- X return sgn((int)bonchance);
- X}
- X
- X#endif /* OVLB */
- X#ifdef OVL1
- X
- Xvoid
- Xrestore_attrib() {
- X
- X int i;
- X
- X for(i = 0; i < A_MAX; i++) { /* all temporary losses/gains */
- X
- X if(ATEMP(i) && ATIME(i)) {
- X if(!(--(ATIME(i)))) { /* countdown for change */
- X ATEMP(i) += ATEMP(i) > 0 ? -1 : 1;
- X
- X if(ATEMP(i)) /* reset timer */
- X ATIME(i) = 100 / ACURR(A_CON);
- X }
- X }
- X }
- X}
- X
- X#endif /* OVL1 */
- X#ifdef OVLB
- X
- X#define AVAL 50 /* tune value for exercise gains */
- X
- Xvoid
- Xexercise(i, inc_or_dec)
- Xint i;
- Xboolean inc_or_dec;
- X{
- X#ifdef DEBUG
- X pline("Exercise:");
- X#endif
- X if (i == A_INT || i == A_CHA) return; /* can't exercise these */
- X
- X#ifdef POLYSELF
- X /* no physical exercise while polymorphed; the body's temporary */
- X if (u.umonnum >= 0 && i != A_WIS) return;
- X#endif
- X if(abs(AEXE(i)) < AVAL) {
- X /*
- X * Law of diminishing returns (Part I):
- X *
- X * Gain is harder at higher attribute values.
- X * 79% at "3" --> 0% at "18"
- X * Loss is even at all levels (50%).
- X *
- X * Note: *YES* ACURR is the right one to use.
- X */
- X AEXE(i) += (inc_or_dec) ? (rn2(19) > ACURR(i)) : -rn2(2);
- X#ifdef DEBUG
- X pline("%s, %s AEXE = %d",
- X (i == A_STR) ? "Str" : (i == A_WIS) ? "Wis" :
- X (i == A_DEX) ? "Dex" : "Con",
- X (inc_or_dec) ? "inc" : "dec", AEXE(i));
- X#endif
- X }
- X}
- X
- X/* hunger values - from eat.c */
- X#define SATIATED 0
- X#define NOT_HUNGRY 1
- X#define HUNGRY 2
- X#define WEAK 3
- X#define FAINTING 4
- X#define FAINTED 5
- X#define STARVED 6
- X
- Xstatic void
- Xexerper()
- X{
- X if(!(moves % 10)) {
- X /* Hunger Checks */
- X
- X int hs = (u.uhunger > 1000) ? SATIATED :
- X (u.uhunger > 150) ? NOT_HUNGRY :
- X (u.uhunger > 50) ? HUNGRY :
- X (u.uhunger > 0) ? WEAK : FAINTING;
- X
- X#ifdef DEBUG
- X pline("exerper: Hunger checks");
- X#endif
- X switch (hs) {
- X case SATIATED: exercise(A_DEX, FALSE); break;
- X case NOT_HUNGRY: exercise(A_CON, TRUE); break;
- X case WEAK: exercise(A_STR, FALSE); break;
- X case FAINTING:
- X case FAINTED: exercise(A_CON, FALSE); break;
- X }
- X
- X /* Encumberance Checks */
- X#ifdef DEBUG
- X pline("exerper: Encumber checks");
- X#endif
- X switch (near_capacity()) {
- X case MOD_ENCUMBER: exercise(A_STR, TRUE); break;
- X case HVY_ENCUMBER: exercise(A_STR, TRUE);
- X exercise(A_DEX, FALSE); break;
- X case EXT_ENCUMBER: exercise(A_DEX, FALSE);
- X exercise(A_CON, FALSE); break;
- X }
- X
- X }
- X
- X /* status checks */
- X if(!(moves % 5)) {
- X#ifdef DEBUG
- X pline("exerper: Status checks");
- X#endif
- X if(Clairvoyant) exercise(A_WIS, TRUE);
- X if(HRegeneration) exercise(A_STR, TRUE);
- X
- X if(Sick || Vomiting) exercise(A_CON, FALSE);
- X if(Confusion || Hallucination) exercise(A_WIS, FALSE);
- X if(Wounded_legs || Fumbling || HStun) exercise(A_DEX, FALSE);
- X }
- X}
- X
- Xvoid
- Xexerchk()
- X{
- X int i, mod_val;
- X
- X /* Check out the periodic accumulations */
- X exerper();
- X
- X#ifdef DEBUG
- X if(moves >= next_check)
- X pline("exerchk: ready to test. multi = %d.", multi);
- X#endif
- X /* Are we ready for a test? */
- X if(moves >= next_check && !multi) {
- X#ifdef DEBUG
- X pline("exerchk: testing.");
- X#endif
- X /*
- X * Law of diminishing returns (Part II):
- X *
- X * The effects of "exercise" and "abuse" wear
- X * off over time. Even if you *don't* get an
- X * increase/decrease, you lose some of the
- X * accumulated effects.
- X */
- X for(i = 0; i < A_MAX; AEXE(i++) /= 2) {
- X
- X if(ABASE(i) >= 18 || !AEXE(i)) continue;
- X if(i == A_INT || i == A_CHA) continue;/* can't exercise these */
- X
- X#ifdef DEBUG
- X pline("exerchk: testing %s (%d).",
- X (i == A_STR) ? "Str" : (i == A_WIS) ? "Wis" :
- X (i == A_DEX) ? "Dex" : "Con", AEXE(i));
- X#endif
- X /*
- X * Law of diminishing returns (Part III):
- X *
- X * You don't *always* gain by exercising.
- X * [MRS 92/10/28 - Treat Wisdom specially for balance.]
- X */
- X if(rn2(AVAL) > ((i != A_WIS) ? abs(AEXE(i)*2/3) : abs(AEXE(i))))
- X continue;
- X mod_val = sgn(AEXE(i));
- X
- X#ifdef DEBUG
- X pline("exerchk: changing %d.", i);
- X#endif
- X if(adjattrib(i, mod_val, -1)) {
- X#ifdef DEBUG
- X pline("exerchk: changed %d.", i);
- X#endif
- X /* if you actually changed an attrib - zero accumulation */
- X AEXE(i) = 0;
- X /* then print an explanation */
- X switch(i) {
- X case A_STR: You((mod_val >0) ?
- X "must have been exercising." :
- X "must have been abusing your body.");
- X break;
- X case A_WIS: You((mod_val >0) ?
- X "must have been very observant." :
- X "must not have been paying attention.");
- X break;
- X case A_DEX: You((mod_val >0) ?
- X "must have been working on your reflexes." :
- X "haven't been working on reflexes lately.");
- X break;
- X case A_CON: You((mod_val >0) ?
- X "must be leading a healthy life-style." :
- X "must not have been watching your health.");
- X break;
- X }
- X }
- X }
- X next_check += rn1(200,800);
- X#ifdef DEBUG
- X pline("exerchk: next check at %ld.", next_check);
- X#endif
- X }
- X}
- X
- Xstatic const struct clattr *
- Xclx() {
- X
- X register const struct clattr *attr;
- X
- X switch (pl_character[0]) {
- X
- X case 'A': attr = &a_attr;
- X break;
- X case 'B': attr = &b_attr;
- X break;
- X case 'C': attr = &c_attr;
- X break;
- X case 'E': attr = &e_attr;
- X break;
- X case 'H': attr = &h_attr;
- X break;
- X case 'K': attr = &k_attr;
- X break;
- X case 'P': attr = &p_attr;
- X break;
- X case 'R': attr = &r_attr;
- X break;
- X case 'S': attr = &s_attr;
- X break;
- X#ifdef TOURIST
- X case 'T': attr = &t_attr;
- X break;
- X#endif
- X case 'V': attr = &v_attr;
- X break;
- X case 'W': attr = &w_attr;
- X break;
- X default: /* unknown type */
- X attr = &X_attr;
- X break;
- X }
- X return(attr);
- X}
- X
- Xstatic void
- Xinit_align() { /* called from newhp if u.ulevel is 0 */
- X
- X register const struct clattr *attr = clx();
- X
- X u.ualign = attr->align;
- X /* there should be priests of every stripe */
- X if(pl_character[0] == 'P')
- X u.ualign.type = (rn2(2)) ? attr->align.type : (rn2(2)) ? 1 : -1;
- X else u.ualign.type = attr->align.type;
- X}
- X
- Xvoid
- Xinit_attr(np)
- X register int np;
- X{
- X register int i, x, tryct;
- X register const struct clattr *attr = clx();
- X
- X for(i = 0; i < A_MAX; i++) {
- X
- X ABASE(i) = AMAX(i) = attr->base.a[i];
- X ATEMP(i) = ATIME(i) = 0;
- X np -= attr->base.a[i];
- X }
- X
- X tryct = 0;
- X while(np > 0 && tryct < 100) {
- X
- X x = rn2(100);
- X for (i = 0; (i < A_MAX) && ((x -= attr->cldist.a[i]) > 0); i++) ;
- X if(i >= A_MAX) continue; /* impossible */
- X
- X if(ABASE(i) >= ATTRMAX(i)) {
- X
- X tryct++;
- X continue;
- X }
- X tryct = 0;
- X ABASE(i)++;
- X AMAX(i)++;
- X np--;
- X }
- X
- X tryct = 0;
- X while(np < 0 && tryct < 100) { /* for redistribution */
- X
- X x = rn2(100);
- X for (i = 0; (i < A_MAX) && ((x -= attr->cldist.a[i]) > 0); i++) ;
- X if(i >= A_MAX) continue; /* impossible */
- X
- X if(ABASE(i) <= ATTRMIN(i)) {
- X
- X tryct++;
- X continue;
- X }
- X tryct = 0;
- X ABASE(i)--;
- X AMAX(i)--;
- X np++;
- X }
- X}
- X
- Xvoid
- Xredist_attr() {
- X
- X register int i, tmp;
- X
- X for(i = 0; i < A_MAX; i++) {
- X if (i==A_INT || i==A_WIS) continue;
- X /* Polymorphing doesn't change your mind */
- X tmp = AMAX(i);
- X AMAX(i) += (rn2(5)-2);
- X if (AMAX(i) > ATTRMAX(i)) AMAX(i) = ATTRMAX(i);
- X if (AMAX(i) < ATTRMIN(i)) AMAX(i) = ATTRMIN(i);
- X ABASE(i) = ABASE(i) * AMAX(i) / tmp;
- X /* ABASE(i) > ATTRMAX(i) is impossible */
- X if (ABASE(i) < ATTRMIN(i)) ABASE(i) = ATTRMIN(i);
- X }
- X}
- X
- Xvoid
- Xadjabil(oldlevel,newlevel)
- Xint oldlevel, newlevel;
- X{
- X register const struct clattr *attr = clx();
- X#ifdef GCC_WARN
- X /* this is the "right" definition */
- X register const struct innate *abil = attr->abil;
- X#else
- X /* this one satisfies more compilers */
- X register struct innate *abil = (struct innate *)attr->abil;
- X#endif
- X
- X if(abil) {
- X for(; abil->ability; abil++) {
- X if(oldlevel < abil->ulevel && newlevel >= abil->ulevel) {
- X /* Abilities gained at level 1 can never be lost
- X * via level loss, only via means that remove _any_
- X * sort of ability. A "gain" of such an ability from
- X * an outside source is devoid of meaning, so we set
- X * FROMOUTSIDE to avoid such gains.
- X */
- X if (abil->ulevel == 1)
- X *(abil->ability) |= (FROMEXPER|FROMOUTSIDE);
- X else
- X *(abil->ability) |= FROMEXPER;
- X if(!(*(abil->ability) & FROMOUTSIDE)) {
- X if(*(abil->gainstr))
- X You("feel %s!", abil->gainstr);
- X }
- X } else if (oldlevel >= abil->ulevel && newlevel < abil->ulevel) {
- X *(abil->ability) &= ~FROMEXPER;
- X if((*(abil->ability) & INTRINSIC)) {
- X if(*(abil->losestr))
- X You("feel %s!", abil->losestr);
- X else if(*(abil->gainstr))
- X You("feel less %s!", abil->gainstr);
- X }
- X }
- X }
- X }
- X}
- X
- Xint
- Xnewhp() {
- X register const struct clattr *attr = clx();
- X int hp, conplus;
- X
- X if(u.ulevel == 0) {
- X
- X hp = attr->shp;
- X init_align(); /* initialize alignment stuff */
- X return hp;
- X } else {
- X
- X if(u.ulevel < attr->xlev)
- X hp = rnd(attr->hd);
- X else
- X hp = attr->ndx;
- X }
- X
- X switch(ACURR(A_CON)) {
- X case 3: conplus = -2; break;
- X case 4:
- X case 5:
- X case 6: conplus = -1; break;
- X case 15:
- X case 16: conplus = 1; break;
- X case 17: conplus = 2; break;
- X case 18: conplus = 3; break;
- X default: conplus = 0;
- X }
- X hp += conplus;
- X return((hp <= 0) ? 1 : hp);
- X}
- X
- X#endif /* OVLB */
- X#ifdef OVL0
- X
- Xschar
- Xacurr(x)
- Xint x;
- X{
- X register int tmp = (u.abon.a[x] + u.atemp.a[x] + u.acurr.a[x]);
- X
- X if (x == A_STR) {
- X if (uarmg && uarmg->otyp == GAUNTLETS_OF_POWER) return(125);
- X else return((tmp >= 125) ? 125 : (tmp <= 3) ? 3 : tmp);
- X }
- X#ifdef POLYSELF
- X else if(x == A_CHA) {
- X if (tmp < 18 && (u.usym == S_NYMPH ||
- X u.umonnum==PM_SUCCUBUS || u.umonnum == PM_INCUBUS))
- X return 18;
- X }
- X#endif
- X return((tmp >= 25) ? 25 : (tmp <= 3) ? 3 : tmp);
- X}
- X
- Xschar
- Xacurrstr()
- X/* condense clumsy ACURR(A_STR) value into value that fits into game formulas
- X */
- X{
- X register int str = ACURR(A_STR);
- X
- X if (str <= 18) return str;
- X if (str <= 121) return (19 + str / 50); /* map to 19-21 */
- X else return str - 100;
- X}
- X
- X#endif /* OVL0 */
- X#ifdef OVL2
- X
- X/* avoid possible problems with alignment overflow, and provide a centralized
- X * location for any future alignment limits
- X */
- Xvoid
- Xadjalign(n)
- Xregister int n;
- X{
- X register int newalign = u.ualign.record + n;
- X
- X if(n < 0) {
- X if(newalign < u.ualign.record)
- X u.ualign.record = newalign;
- X } else
- X if(newalign > u.ualign.record) {
- X u.ualign.record = newalign;
- X if(u.ualign.record > ALIGNLIM)
- X u.ualign.record = ALIGNLIM;
- X }
- X}
- X
- X#endif /* OVL2 */
- X
- X/*attrib.c*/
- END_OF_FILE
- if test 17826 -ne `wc -c <'src/attrib.c'`; then
- echo shar: \"'src/attrib.c'\" unpacked with wrong size!
- fi
- # end of 'src/attrib.c'
- fi
- if test -f 'sys/share/lev_lex.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'sys/share/lev_lex.c'\"
- else
- echo shar: Extracting \"'sys/share/lev_lex.c'\" \(35705 characters\)
- sed "s/^X//" >'sys/share/lev_lex.c' <<'END_OF_FILE'
- X# include "stdio.h"
- X# define U(x) x
- X# define NLSTATE yyprevious=YYNEWLINE
- X# define BEGIN yybgin = yysvec + 1 +
- X# define INITIAL 0
- X# define YYLERR yysvec
- X# define YYSTATE (yyestate-yysvec-1)
- X# define YYOPTIM 1
- X# define YYLMAX BUFSIZ
- X# define output(c) putc(c,yyout)
- X# define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar)
- X# define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;}
- X# define yymore() (yymorfg=1)
- X# define ECHO fprintf(yyout, "%s",yytext)
- X# define REJECT { nstr = yyreject(); goto yyfussy;}
- Xint yyleng; extern char yytext[];
- Xint yymorfg;
- Xextern char *yysptr, yysbuf[];
- Xint yytchar;
- XFILE *yyin = {stdin}, *yyout = {stdout};
- Xextern int yylineno;
- Xstruct yysvf {
- X struct yywork *yystoff;
- X struct yysvf *yyother;
- X int *yystops;};
- Xstruct yysvf *yyestate;
- Xextern struct yysvf yysvec[], *yybgin;
- X/* SCCS Id: @(#)lev_lex.c 3.1 92/07/12 */
- X/* Copyright (c) 1989 by Jean-Christophe Collet */
- X/* NetHack may be freely redistributed. See license for details. */
- X
- X#define LEV_LEX_C
- X
- X#include "hack.h"
- X#include "lev_comp.h"
- X#include "sp_lev.h"
- X
- X/* Most of these don't exist in flex, yywrap is macro and
- X * yyunput is properly declared in flex.skel.
- X */
- X#ifndef FLEX_SCANNER
- Xint FDECL (yyback, (int *, int));
- Xint NDECL (yylook);
- Xint NDECL (yyinput);
- Xint NDECL (yywrap);
- Xint NDECL (yylex);
- X /* Traditional lexes let yyunput() and yyoutput() default to int;
- X * newer ones may declare them as void since they don't return
- X * values. For even more fun, the lex supplied as part of the
- X * newer unbundled compiler for SunOS 4.x adds the void declarations
- X * (under __STDC__ or _cplusplus ifdefs -- otherwise they remain
- X * int) while the bundled lex and the one with the older unbundled
- X * compiler do not. To detect this, we need help from outside --
- X * sys/unix/Makefile.utl.
- X */
- X# if defined(NeXT) || defined(SVR4)
- X# define VOIDYYPUT
- X# endif
- X# if !defined(VOIDYYPUT)
- X# if defined(POSIX_TYPES) && !defined(BOS) && !defined(HISX)
- X# define VOIDYYPUT
- X# endif
- X# endif
- X# if !defined(VOIDYYPUT) && defined(WEIRD_LEX)
- X# if defined(SUNOS4) && defined(__STDC__) && (WEIRD_LEX != 0)
- X# define VOIDYYPUT
- X# endif
- X# endif
- X# ifdef VOIDYYPUT
- Xvoid FDECL (yyunput, (int));
- Xvoid FDECL (yyoutput, (int));
- X# else
- Xint FDECL (yyunput, (int));
- Xint FDECL (yyoutput, (int));
- X# endif
- X#endif /* FLEX_SCANNER */
- X
- Xvoid FDECL (init_yyin, (FILE *));
- Xvoid FDECL (init_yyout, (FILE *));
- X
- X#ifdef MICRO
- X#undef exit
- Xextern void FDECL(exit, (int));
- X#endif
- X
- X/* this doesn't always get put in lev_comp.h
- X * (esp. when using older versions of bison)
- X */
- X
- Xextern YYSTYPE yylval;
- X
- Xint line_number = 1, colon_line_number = 1;
- X
- X/* This is *** UGLY *** but I can't think a better way to do it
- X * I really need a huge buffer to scan maps...
- X */
- X
- X#undef YYLMAX
- X#define YYLMAX 2048
- X
- X/*
- X * This is a hack required by Michael Hamel to get things
- X * working on the Mac.
- X */
- X#if defined(applec) && !defined(FLEX_SCANNER)
- X#undef input
- X#undef unput
- X#define unput(c) { yytchar = (c); if (yytchar == 10) yylineno--; *yysptr++ = yytchar; }
- X# ifndef YYNEWLINE
- X# define YYNEWLINE 10
- X# endif
- X
- Xchar
- Xinput() { /* Under MPW \n is chr(13)! Compensate for this. */
- X
- X if (yysptr > yysbuf) return(*--yysptr);
- X else {
- X yytchar = getc(yyin);
- X if (yytchar == '\n') {
- X yylineno++;
- X return(YYNEWLINE);
- X }
- X if (yytchar == EOF) return(0);
- X else return(yytchar);
- X }
- X}
- X#endif /* applec && !FLEX_SCANNER */
- X
- X# define MAPC 2
- X# define YYNEWLINE 10
- Xyylex(){
- Xint nstr; extern int yyprevious;
- Xwhile((nstr = yylook()) >= 0)
- Xyyfussy: switch(nstr){
- Xcase 0:
- Xif(yywrap()) return(0); break;
- Xcase 1:
- X{
- X#ifdef FLEX_SCANNER
- X /*
- X * There is a bug in Flex 2.3 patch level < 6
- X * (absent in previous versions)
- X * that results in the following behaviour :
- X * Once you enter an yymore(), you never exit from it.
- X * This should do the trick!
- X */
- X extern int yy_more_len;
- X
- X yy_more_len = 0;
- X#endif
- X BEGIN(INITIAL);
- X yylval.map = (char *) alloc(yyleng-5);
- X strncpy(yylval.map, yytext,yyleng-6);
- X yylval.map[yyleng-6] = 0;
- X return MAP_ID;
- X }
- Xbreak;
- Xcase 2:
- X{ line_number++; yymore(); }
- Xbreak;
- Xcase 3:
- X { line_number++; }
- Xbreak;
- Xcase 4:
- X { colon_line_number = line_number; return ':'; }
- Xbreak;
- Xcase 5:
- X return MESSAGE_ID;
- Xbreak;
- Xcase 6:
- X return MAZE_ID;
- Xbreak;
- Xcase 7:
- X return NOMAP_ID;
- Xbreak;
- Xcase 8:
- X return LEVEL_ID;
- Xbreak;
- Xcase 9:
- Xreturn LEV_INIT_ID;
- Xbreak;
- Xcase 10:
- X return FLAGS_ID;
- Xbreak;
- Xcase 11:
- Xreturn GEOMETRY_ID;
- Xbreak;
- Xcase 12:
- X { BEGIN(MAPC); line_number++; }
- Xbreak;
- Xcase 13:
- X return OBJECT_ID;
- Xbreak;
- Xcase 14:
- X return MONSTER_ID;
- Xbreak;
- Xcase 15:
- X return TRAP_ID;
- Xbreak;
- Xcase 16:
- X return DOOR_ID;
- Xbreak;
- Xcase 17:
- Xreturn DRAWBRIDGE_ID;
- Xbreak;
- Xcase 18:
- Xreturn MAZEWALK_ID;
- Xbreak;
- Xcase 19:
- X return WALLIFY_ID;
- Xbreak;
- Xcase 20:
- X return REGION_ID;
- Xbreak;
- Xcase 21:
- Xreturn RANDOM_OBJECTS_ID;
- Xbreak;
- Xcase 22:
- Xreturn RANDOM_MONSTERS_ID;
- Xbreak;
- Xcase 23:
- Xreturn RANDOM_PLACES_ID;
- Xbreak;
- Xcase 24:
- X return ALTAR_ID;
- Xbreak;
- Xcase 25:
- X return LADDER_ID;
- Xbreak;
- Xcase 26:
- X return STAIR_ID;
- Xbreak;
- Xcase 27:
- X return PORTAL_ID;
- Xbreak;
- Xcase 28:
- Xreturn TELEPRT_ID;
- Xbreak;
- Xcase 29:
- X return BRANCH_ID;
- Xbreak;
- Xcase 30:
- Xreturn FOUNTAIN_ID;
- Xbreak;
- Xcase 31:
- X return SINK_ID;
- Xbreak;
- Xcase 32:
- X return POOL_ID;
- Xbreak;
- Xcase 33:
- Xreturn NON_DIGGABLE_ID;
- Xbreak;
- Xcase 34:
- X return ROOM_ID;
- Xbreak;
- Xcase 35:
- X return SUBROOM_ID;
- Xbreak;
- Xcase 36:
- Xreturn RAND_CORRIDOR_ID;
- Xbreak;
- Xcase 37:
- Xreturn CORRIDOR_ID;
- Xbreak;
- Xcase 38:
- X return GOLD_ID;
- Xbreak;
- Xcase 39:
- Xreturn ENGRAVING_ID;
- Xbreak;
- Xcase 40:
- X return NAME_ID;
- Xbreak;
- Xcase 41:
- X return CHANCE_ID;
- Xbreak;
- Xcase 42:
- Xreturn LEV;
- Xbreak;
- Xcase 43:
- X { yylval.i=D_ISOPEN; return DOOR_STATE; }
- Xbreak;
- Xcase 44:
- X { yylval.i=D_CLOSED; return DOOR_STATE; }
- Xbreak;
- Xcase 45:
- X { yylval.i=D_LOCKED; return DOOR_STATE; }
- Xbreak;
- Xcase 46:
- X { yylval.i=D_NODOOR; return DOOR_STATE; }
- Xbreak;
- Xcase 47:
- X { yylval.i=D_BROKEN; return DOOR_STATE; }
- Xbreak;
- Xcase 48:
- X { yylval.i=W_NORTH; return DIRECTION; }
- Xbreak;
- Xcase 49:
- X { yylval.i=W_EAST; return DIRECTION; }
- Xbreak;
- Xcase 50:
- X { yylval.i=W_SOUTH; return DIRECTION; }
- Xbreak;
- Xcase 51:
- X { yylval.i=W_WEST; return DIRECTION; }
- Xbreak;
- Xcase 52:
- X { yylval.i = -1; return RANDOM_TYPE; }
- Xbreak;
- Xcase 53:
- X { yylval.i = -2; return NONE; }
- Xbreak;
- Xcase 54:
- X return O_REGISTER;
- Xbreak;
- Xcase 55:
- X return M_REGISTER;
- Xbreak;
- Xcase 56:
- X return P_REGISTER;
- Xbreak;
- Xcase 57:
- X return A_REGISTER;
- Xbreak;
- Xcase 58:
- X { yylval.i=1; return LEFT_OR_RIGHT; }
- Xbreak;
- Xcase 59:
- X{ yylval.i=2; return LEFT_OR_RIGHT; }
- Xbreak;
- Xcase 60:
- X { yylval.i=3; return CENTER; }
- Xbreak;
- Xcase 61:
- X{ yylval.i=4; return LEFT_OR_RIGHT; }
- Xbreak;
- Xcase 62:
- X { yylval.i=5; return LEFT_OR_RIGHT; }
- Xbreak;
- Xcase 63:
- X { yylval.i=1; return TOP_OR_BOT; }
- Xbreak;
- Xcase 64:
- X { yylval.i=5; return TOP_OR_BOT; }
- Xbreak;
- Xcase 65:
- X { yylval.i=1; return LIGHT_STATE; }
- Xbreak;
- Xcase 66:
- X { yylval.i=0; return LIGHT_STATE; }
- Xbreak;
- Xcase 67:
- X { yylval.i=0; return FILLING; }
- Xbreak;
- Xcase 68:
- X{ yylval.i=1; return FILLING; }
- Xbreak;
- Xcase 69:
- X { yylval.i= AM_NONE; return ALIGNMENT; }
- Xbreak;
- Xcase 70:
- X { yylval.i= AM_LAWFUL; return ALIGNMENT; }
- Xbreak;
- Xcase 71:
- X { yylval.i= AM_NEUTRAL; return ALIGNMENT; }
- Xbreak;
- Xcase 72:
- X { yylval.i= AM_CHAOTIC; return ALIGNMENT; }
- Xbreak;
- Xcase 73:
- X{ yylval.i=1; return MON_ATTITUDE; }
- Xbreak;
- Xcase 74:
- X { yylval.i=0; return MON_ATTITUDE; }
- Xbreak;
- Xcase 75:
- X { yylval.i=1; return MON_ALERTNESS; }
- Xbreak;
- Xcase 76:
- X { yylval.i=0; return MON_ALERTNESS; }
- Xbreak;
- Xcase 77:
- X{ yylval.i= M_AP_FURNITURE; return MON_APPEARANCE; }
- Xbreak;
- Xcase 78:
- X{ yylval.i= M_AP_MONSTER; return MON_APPEARANCE; }
- Xbreak;
- Xcase 79:
- X{ yylval.i= M_AP_OBJECT; return MON_APPEARANCE; }
- Xbreak;
- Xcase 80:
- X { yylval.i=2; return ALTAR_TYPE; }
- Xbreak;
- Xcase 81:
- X { yylval.i=1; return ALTAR_TYPE; }
- Xbreak;
- Xcase 82:
- X { yylval.i=0; return ALTAR_TYPE; }
- Xbreak;
- Xcase 83:
- X { yylval.i=1; return UP_OR_DOWN; }
- Xbreak;
- Xcase 84:
- X { yylval.i=0; return UP_OR_DOWN; }
- Xbreak;
- Xcase 85:
- X { yylval.i=0; return BOOLEAN; }
- Xbreak;
- Xcase 86:
- X { yylval.i=1; return BOOLEAN; }
- Xbreak;
- Xcase 87:
- X { yylval.i=DUST; return ENGRAVING_TYPE; }
- Xbreak;
- Xcase 88:
- X { yylval.i=ENGRAVE; return ENGRAVING_TYPE; }
- Xbreak;
- Xcase 89:
- X { yylval.i=BURN; return ENGRAVING_TYPE; }
- Xbreak;
- Xcase 90:
- X { yylval.i=MARK; return ENGRAVING_TYPE; }
- Xbreak;
- Xcase 91:
- X { yylval.i=1; return CURSE_TYPE; }
- Xbreak;
- Xcase 92:
- X{ yylval.i=2; return CURSE_TYPE; }
- Xbreak;
- Xcase 93:
- X { yylval.i=3; return CURSE_TYPE; }
- Xbreak;
- Xcase 94:
- X{ yylval.i=NOTELEPORT; return FLAG_TYPE; }
- Xbreak;
- Xcase 95:
- X{ yylval.i=HARDFLOOR; return FLAG_TYPE; }
- Xbreak;
- Xcase 96:
- X { yylval.i=NOMMAP; return FLAG_TYPE; }
- Xbreak;
- Xcase 97:
- X{ yylval.i=SHORTSIGHTED; return FLAG_TYPE; }
- Xbreak;
- Xcase 98:
- X{ yylval.i=atoi(yytext); return INTEGER; }
- Xbreak;
- Xcase 99:
- X{ yytext[yyleng-1] = 0; /* Discard the trailing \" */
- X yylval.map = (char *) alloc(strlen(yytext+1)+1);
- X strcpy(yylval.map, yytext+1); /* Discard the first \" */
- X return STRING; }
- Xbreak;
- Xcase 100:
- X { line_number++; }
- Xbreak;
- Xcase 101:
- X ;
- Xbreak;
- Xcase 102:
- X { yylval.i = yytext[1]; return CHAR; }
- Xbreak;
- Xcase 103:
- X { return yytext[0]; }
- Xbreak;
- Xcase -1:
- Xbreak;
- Xdefault:
- Xfprintf(yyout,"bad switch yylook %d",nstr);
- X} return(0); }
- X/* end of yylex */
- X#ifdef AMIGA
- Xlong *alloc(n)
- X unsigned n;
- X{
- X return ((long *)malloc (n));
- X}
- X#endif
- X
- X/* routine to switch to another input file; needed for flex */
- Xvoid init_yyin( input_f )
- XFILE *input_f;
- X{
- X#ifdef FLEX_SCANNER
- X if (yyin)
- X yyrestart(input_f);
- X else
- X#endif
- X yyin = input_f;
- X}
- X/* analogous routine (for completeness) */
- Xvoid init_yyout( output_f )
- XFILE *output_f;
- X{
- X yyout = output_f;
- X}
- X
- Xint yyvstop[] = {
- X0,
- X
- X103,
- X0,
- X
- X101,
- X103,
- X0,
- X
- X100,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X98,
- X103,
- X0,
- X
- X4,
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X2,
- X100,
- X0,
- X
- X101,
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X103,
- X0,
- X
- X101,
- X0,
- X
- X99,
- X0,
- X
- X98,
- X0,
- X
- X83,
- X0,
- X
- X3,
- X0,
- X
- X2,
- X0,
- X
- X101,
- X0,
- X
- X2,
- X3,
- X0,
- X
- X102,
- X0,
- X
- X70,
- X0,
- X
- X65,
- X0,
- X
- X63,
- X0,
- X
- X16,
- X0,
- X
- X38,
- X0,
- X
- X6,
- X0,
- X
- X40,
- X0,
- X
- X32,
- X0,
- X
- X34,
- X0,
- X
- X31,
- X0,
- X
- X15,
- X0,
- X
- X89,
- X0,
- X
- X84,
- X0,
- X
- X87,
- X0,
- X
- X49,
- X0,
- X
- X58,
- X0,
- X
- X90,
- X0,
- X
- X53,
- X0,
- X
- X43,
- X0,
- X
- X86,
- X0,
- X
- X51,
- X0,
- X
- X12,
- X0,
- X
- X24,
- X0,
- X
- X10,
- X0,
- X
- X8,
- X0,
- X
- X7,
- X0,
- X
- X26,
- X0,
- X
- X57,
- X0,
- X
- X82,
- X0,
- X
- X76,
- X0,
- X
- X72,
- X0,
- X
- X85,
- X0,
- X
- X48,
- X0,
- X
- X56,
- X0,
- X
- X62,
- X0,
- X
- X50,
- X0,
- X
- X66,
- X0,
- X
- X29,
- X0,
- X
- X41,
- X0,
- X
- X25,
- X0,
- X
- X13,
- X0,
- X
- X27,
- X0,
- X
- X20,
- X0,
- X
- X75,
- X0,
- X
- X64,
- X0,
- X
- X47,
- X0,
- X
- X60,
- X0,
- X
- X44,
- X0,
- X
- X93,
- X0,
- X
- X67,
- X0,
- X
- X45,
- X0,
- X
- X46,
- X0,
- X
- X96,
- X0,
- X
- X54,
- X0,
- X
- X52,
- X0,
- X
- X81,
- X0,
- X
- X1,
- X0,
- X
- X5,
- X0,
- X
- X14,
- X0,
- X
- X35,
- X0,
- X
- X19,
- X0,
- X
- X91,
- X0,
- X
- X88,
- X0,
- X
- X74,
- X0,
- X
- X55,
- X0,
- X
- X71,
- X0,
- X
- X69,
- X0,
- X
- X80,
- X0,
- X
- X37,
- X0,
- X
- X30,
- X0,
- X
- X11,
- X0,
- X
- X9,
- X0,
- X
- X18,
- X0,
- X
- X79,
- X0,
- X
- X73,
- X0,
- X
- X92,
- X0,
- X
- X68,
- X0,
- X
- X39,
- X0,
- X
- X59,
- X0,
- X
- X95,
- X0,
- X
- X42,
- X0,
- X
- X77,
- X0,
- X
- X78,
- X0,
- X
- X17,
- X0,
- X
- X61,
- X0,
- X
- X94,
- X0,
- X
- X33,
- X0,
- X
- X97,
- X0,
- X
- X23,
- X0,
- X
- X21,
- X0,
- X
- X22,
- X0,
- X
- X28,
- X0,
- X
- X36,
- X0,
- X0};
- X# define YYTYPE int
- Xstruct yywork { YYTYPE verify, advance; } yycrank[] = {
- X0,0, 0,0, 1,5, 0,0,
- X0,0, 0,0, 0,0, 0,0,
- X8,64, 0,0, 1,6, 1,7,
- X0,0, 0,0, 6,63, 0,0,
- X8,64, 8,64, 0,0, 0,0,
- X0,0, 0,0, 0,0, 0,0,
- X0,0, 0,0, 0,0, 0,0,
- X0,0, 0,0, 0,0, 0,0,
- X0,0, 1,6, 0,0, 1,8,
- X1,5, 6,63, 0,0, 8,64,
- X1,9, 8,65, 8,64, 0,0,
- X1,10, 0,0, 0,0, 0,0,
- X0,0, 1,11, 8,64, 0,0,
- X0,0, 0,0, 0,0, 8,64,
- X0,0, 0,0, 0,0, 1,12,
- X0,0, 0,0, 0,0, 0,0,
- X0,0, 0,0, 1,13, 1,14,
- X1,15, 1,16, 1,17, 1,18,
- X1,19, 24,87, 1,20, 29,97,
- X0,0, 1,21, 1,22, 1,23,
- X1,24, 1,25, 13,68, 1,26,
- X1,27, 1,28, 14,69, 15,70,
- X1,29, 16,72, 17,74, 20,79,
- X16,73, 18,75, 15,71, 25,88,
- X18,76, 19,77, 1,30, 1,31,
- X1,32, 1,33, 1,34, 1,35,
- X21,80, 1,36, 48,142, 19,78,
- X21,81, 1,37, 1,38, 1,39,
- X1,40, 1,41, 23,85, 1,42,
- X1,43, 1,44, 1,45, 2,47,
- X1,46, 33,109, 41,128, 2,9,
- X45,137, 46,139, 45,138, 33,110,
- X23,86, 41,129, 2,5, 10,67,
- X10,67, 10,67, 10,67, 10,67,
- X10,67, 10,67, 10,67, 10,67,
- X10,67, 53,146, 2,12, 28,95,
- X22,82, 54,69, 56,147, 57,79,
- X22,83, 2,13, 2,14, 2,15,
- X2,16, 2,17, 2,18, 2,19,
- X28,96, 2,20, 22,84, 2,5,
- X2,21, 2,48, 2,23, 2,24,
- X2,25, 26,89, 2,26, 2,27,
- X2,28, 26,90, 35,113, 2,29,
- X44,135, 59,88, 61,150, 44,136,
- X2,5, 34,111, 35,114, 26,91,
- X30,98, 2,30, 2,31, 2,32,
- X2,33, 2,34, 2,35, 30,99,
- X2,36, 3,49, 34,112, 30,100,
- X2,37, 2,38, 2,39, 2,40,
- X2,41, 66,153, 2,42, 2,43,
- X2,44, 2,45, 39,124, 2,46,
- X27,92, 36,115, 55,70, 2,5,
- X2,5, 2,5, 68,154, 3,50,
- X39,125, 55,71, 3,51, 27,93,
- X27,94, 31,101, 3,9, 36,116,
- X31,102, 37,117, 3,52, 31,103,
- X32,105, 37,118, 31,104, 32,106,
- X40,126, 37,119, 42,130, 32,107,
- X58,148, 69,155, 70,156, 37,120,
- X58,81, 3,12, 42,131, 71,157,
- X32,108, 72,158, 40,127, 73,159,
- X3,53, 3,54, 3,55, 3,16,
- X3,56, 3,18, 3,19, 38,121,
- X3,57, 38,122, 74,160, 3,58,
- X3,22, 3,23, 3,24, 3,59,
- X60,149, 3,26, 3,60, 3,28,
- X75,161, 76,162, 3,61, 38,123,
- X43,132, 77,163, 78,164, 60,93,
- X60,94, 79,165, 80,166, 43,133,
- X3,30, 3,31, 3,32, 3,33,
- X3,34, 3,35, 43,134, 3,36,
- X81,167, 82,168, 83,169, 3,37,
- X3,38, 3,39, 3,40, 3,41,
- X4,5, 3,42, 3,43, 3,44,
- X3,45, 84,170, 3,46, 62,151,
- X4,6, 4,49, 52,67, 52,67,
- X52,67, 52,67, 52,67, 52,67,
- X52,67, 52,67, 52,67, 52,67,
- X85,171, 86,172, 86,173, 87,174,
- X88,175, 89,177, 90,178, 88,176,
- X91,179, 62,152, 92,180, 4,50,
- X62,152, 4,8, 4,62, 93,181,
- X94,182, 95,183, 4,9, 96,184,
- X62,152, 97,185, 4,52, 98,186,
- X99,188, 4,51, 100,189, 4,11,
- X101,190, 102,191, 103,192, 104,193,
- X105,194, 106,195, 98,187, 107,196,
- X108,197, 4,12, 109,198, 110,199,
- X111,200, 112,201, 113,202, 114,203,
- X4,53, 4,54, 4,55, 4,16,
- X4,56, 4,18, 4,19, 116,206,
- X4,57, 117,207, 4,51, 4,58,
- X4,48, 4,23, 4,24, 4,59,
- X119,210, 4,26, 4,60, 4,28,
- X115,204, 120,211, 4,61, 122,215,
- X118,208, 123,216, 115,205, 4,51,
- X124,217, 126,224, 127,225, 128,226,
- X4,30, 4,31, 4,32, 4,33,
- X4,34, 4,35, 129,227, 4,36,
- X118,209, 130,228, 131,229, 4,37,
- X4,38, 4,39, 4,40, 4,41,
- X9,66, 4,42, 4,43, 4,44,
- X4,45, 132,230, 4,46, 47,140,
- X9,66, 9,0, 4,51, 4,51,
- X4,51, 134,233, 135,234, 47,140,
- X47,141, 121,212, 133,231, 136,235,
- X139,239, 133,232, 50,63, 50,143,
- X121,213, 142,240, 121,214, 137,236,
- X146,154, 147,241, 137,237, 9,66,
- X147,160, 9,66, 9,66, 142,168,
- X137,238, 148,166, 47,140, 149,180,
- X47,140, 47,140, 9,66, 150,242,
- X154,243, 50,144, 155,244, 9,66,
- X50,145, 47,140, 152,151, 156,245,
- X125,218, 157,246, 47,140, 125,219,
- X50,145, 158,247, 50,145, 50,145,
- X159,248, 160,249, 51,143, 161,250,
- X125,220, 125,221, 162,251, 163,252,
- X164,253, 125,222, 165,254, 125,223,
- X152,152, 166,255, 167,256, 152,152,
- X168,257, 169,258, 50,145, 50,145,
- X50,145, 170,259, 171,260, 152,152,
- X51,145, 172,261, 50,145, 51,145,
- X50,145, 50,145, 173,262, 174,263,
- X175,264, 50,145, 176,265, 51,145,
- X50,145, 51,145, 51,145, 177,266,
- X50,145, 178,267, 179,268, 180,269,
- X181,270, 50,145, 182,271, 183,272,
- X184,273, 185,274, 186,275, 187,276,
- X188,277, 189,278, 190,279, 191,280,
- X192,281, 51,145, 51,145, 51,145,
- X193,282, 194,283, 195,284, 196,285,
- X197,286, 51,145, 198,287, 51,145,
- X51,145, 199,288, 200,289, 201,290,
- X51,145, 202,291, 203,292, 51,145,
- X50,145, 50,145, 50,145, 51,145,
- X204,293, 205,294, 206,295, 208,296,
- X51,145, 209,297, 211,298, 212,299,
- X213,300, 214,301, 215,302, 216,303,
- X217,304, 218,305, 219,306, 220,307,
- X221,308, 222,309, 223,310, 224,311,
- X225,312, 226,313, 227,314, 228,315,
- X229,316, 230,317, 231,318, 232,319,
- X233,320, 235,321, 236,322, 237,323,
- X238,324, 239,325, 240,326, 51,145,
- X51,145, 51,145, 241,327, 242,328,
- X243,329, 244,330, 245,331, 246,332,
- X248,333, 249,334, 250,335, 251,336,
- X252,337, 254,338, 255,339, 256,340,
- X257,341, 258,342, 259,343, 261,344,
- X262,345, 263,346, 265,347, 266,348,
- X267,349, 270,350, 271,351, 272,352,
- X274,353, 275,354, 276,355, 277,356,
- X278,357, 279,358, 280,359, 281,360,
- X283,361, 284,362, 285,363, 286,364,
- X290,365, 291,366, 292,367, 293,368,
- X294,369, 295,370, 297,371, 298,372,
- X299,373, 300,374, 301,375, 303,376,
- X304,377, 305,378, 306,379, 307,380,
- X309,381, 310,382, 311,383, 313,384,
- X314,385, 315,386, 316,387, 317,388,
- X318,389, 319,390, 320,391, 322,392,
- X323,393, 324,394, 327,395, 328,396,
- X330,397, 331,398, 332,399, 333,400,
- X334,401, 336,402, 337,403, 338,404,
- X339,405, 341,406, 342,407, 343,408,
- X345,409, 346,410, 347,411, 348,412,
- X349,413, 351,414, 352,415, 353,416,
- X356,417, 358,418, 359,419, 360,420,
- X361,421, 363,422, 364,423, 365,424,
- X367,425, 368,426, 369,428, 370,429,
- X371,430, 372,431, 373,432, 368,427,
- X374,433, 375,434, 376,435, 377,436,
- X378,437, 379,438, 380,439, 382,440,
- X383,441, 384,442, 386,443, 388,444,
- X389,445, 390,446, 392,447, 393,448,
- X395,449, 396,416, 399,450, 400,451,
- X401,452, 402,453, 403,454, 404,455,
- X406,456, 407,457, 408,458, 409,459,
- X412,460, 414,461, 415,462, 416,463,
- X418,464, 424,465, 426,466, 427,467,
- X428,468, 429,469, 430,470, 432,471,
- X433,472, 434,473, 435,474, 436,475,
- X437,476, 440,477, 442,478, 444,479,
- X445,480, 447,481, 448,482, 450,483,
- X451,484, 452,485, 453,486, 454,487,
- X455,488, 456,489, 459,490, 460,491,
- X462,495, 466,496, 467,497, 468,498,
- X470,499, 471,500, 472,501, 473,502,
- X477,503, 460,492, 478,504, 460,493,
- X460,494, 480,505, 481,506, 482,507,
- X484,508, 485,509, 490,510, 491,511,
- X492,512, 493,513, 494,514, 495,515,
- X496,516, 497,517, 498,518, 499,519,
- X500,520, 501,521, 503,522, 505,523,
- X508,524, 510,525, 511,526, 512,527,
- X513,528, 514,529, 515,530, 517,531,
- X522,532, 523,533, 525,534, 526,535,
- X527,536, 528,537, 529,538, 530,539,
- X533,540, 534,541, 535,542, 536,543,
- X537,544, 538,545, 539,546, 540,547,
- X542,548, 543,549, 544,550, 545,551,
- X546,552, 548,553, 549,554, 550,555,
- X552,556, 553,557, 554,558, 556,559,
- X557,560, 0,0, 0,0, 0,0,
- X0,0};
- Xstruct yysvf yysvec[] = {
- X0, 0, 0,
- Xyycrank+-1, 0, 0,
- Xyycrank+-84, yysvec+1, 0,
- Xyycrank+-179, yysvec+1, 0,
- Xyycrank+-291, 0, 0,
- Xyycrank+0, 0, yyvstop+1,
- Xyycrank+5, 0, yyvstop+3,
- Xyycrank+0, 0, yyvstop+6,
- Xyycrank+-7, 0, yyvstop+8,
- Xyycrank+-403, 0, yyvstop+10,
- Xyycrank+83, 0, yyvstop+12,
- Xyycrank+0, yysvec+10, yyvstop+14,
- Xyycrank+0, 0, yyvstop+17,
- Xyycrank+6, 0, yyvstop+20,
- Xyycrank+4, 0, yyvstop+22,
- Xyycrank+15, 0, yyvstop+24,
- Xyycrank+10, 0, yyvstop+26,
- Xyycrank+12, 0, yyvstop+28,
- Xyycrank+17, 0, yyvstop+30,
- Xyycrank+28, 0, yyvstop+32,
- Xyycrank+13, 0, yyvstop+34,
- Xyycrank+39, 0, yyvstop+36,
- Xyycrank+79, 0, yyvstop+38,
- Xyycrank+49, 0, yyvstop+40,
- Xyycrank+7, 0, yyvstop+42,
- Xyycrank+16, 0, yyvstop+44,
- Xyycrank+100, 0, yyvstop+46,
- Xyycrank+131, 0, yyvstop+48,
- Xyycrank+74, 0, yyvstop+50,
- Xyycrank+10, 0, yyvstop+52,
- Xyycrank+72, 0, yyvstop+54,
- Xyycrank+109, 0, yyvstop+56,
- Xyycrank+123, 0, yyvstop+58,
- Xyycrank+10, 0, yyvstop+60,
- Xyycrank+80, 0, yyvstop+62,
- Xyycrank+73, 0, yyvstop+64,
- Xyycrank+108, 0, yyvstop+66,
- Xyycrank+124, 0, yyvstop+68,
- Xyycrank+156, 0, yyvstop+70,
- Xyycrank+101, 0, yyvstop+72,
- Xyycrank+130, 0, yyvstop+74,
- Xyycrank+21, 0, yyvstop+76,
- Xyycrank+133, 0, yyvstop+78,
- Xyycrank+171, 0, yyvstop+80,
- Xyycrank+61, 0, yyvstop+82,
- Xyycrank+14, 0, yyvstop+84,
- Xyycrank+24, 0, yyvstop+86,
- Xyycrank+-410, 0, yyvstop+88,
- Xyycrank+41, yysvec+22, yyvstop+90,
- Xyycrank+0, 0, yyvstop+92,
- Xyycrank+417, 0, yyvstop+95,
- Xyycrank+456, 0, yyvstop+98,
- Xyycrank+254, yysvec+51, yyvstop+100,
- Xyycrank+65, yysvec+51, yyvstop+102,
- Xyycrank+63, yysvec+51, yyvstop+104,
- Xyycrank+134, yysvec+51, yyvstop+106,
- Xyycrank+68, 0, yyvstop+108,
- Xyycrank+69, yysvec+51, yyvstop+110,
- Xyycrank+167, yysvec+51, yyvstop+112,
- Xyycrank+94, yysvec+51, yyvstop+114,
- Xyycrank+187, yysvec+51, yyvstop+116,
- Xyycrank+109, yysvec+51, yyvstop+118,
- Xyycrank+-289, yysvec+47, yyvstop+120,
- Xyycrank+0, yysvec+6, yyvstop+122,
- Xyycrank+0, yysvec+8, 0,
- Xyycrank+0, 0, yyvstop+124,
- Xyycrank+158, 0, 0,
- Xyycrank+0, yysvec+10, yyvstop+126,
- Xyycrank+126, 0, 0,
- Xyycrank+168, 0, 0,
- Xyycrank+169, 0, 0,
- Xyycrank+157, 0, 0,
- Xyycrank+162, 0, 0,
- Xyycrank+178, 0, 0,
- Xyycrank+183, 0, 0,
- Xyycrank+199, 0, 0,
- Xyycrank+180, 0, 0,
- Xyycrank+190, 0, 0,
- Xyycrank+194, 0, 0,
- Xyycrank+200, 0, 0,
- Xyycrank+206, 0, 0,
- Xyycrank+198, 0, 0,
- Xyycrank+195, 0, 0,
- Xyycrank+203, 0, 0,
- Xyycrank+219, 0, 0,
- Xyycrank+235, 0, 0,
- Xyycrank+236, 0, 0,
- Xyycrank+241, 0, 0,
- Xyycrank+237, 0, 0,
- Xyycrank+239, 0, 0,
- Xyycrank+247, 0, 0,
- Xyycrank+241, 0, 0,
- Xyycrank+244, 0, 0,
- Xyycrank+262, 0, 0,
- Xyycrank+262, 0, 0,
- Xyycrank+253, 0, 0,
- Xyycrank+266, 0, 0,
- Xyycrank+257, 0, 0,
- Xyycrank+230, 0, 0,
- Xyycrank+228, 0, 0,
- Xyycrank+241, 0, 0,
- Xyycrank+239, 0, 0,
- Xyycrank+225, 0, 0,
- Xyycrank+231, 0, 0,
- Xyycrank+229, 0, 0,
- Xyycrank+234, 0, 0,
- Xyycrank+248, 0, 0,
- Xyycrank+236, 0, 0,
- Xyycrank+234, 0, 0,
- Xyycrank+231, 0, 0,
- Xyycrank+236, 0, 0,
- Xyycrank+237, 0, 0,
- Xyycrank+250, 0, 0,
- Xyycrank+246, 0, 0,
- Xyycrank+247, 0, 0,
- Xyycrank+268, 0, 0,
- Xyycrank+248, 0, 0,
- Xyycrank+246, 0, 0,
- Xyycrank+278, 0, 0,
- Xyycrank+256, 0, 0,
- Xyycrank+278, 0, 0,
- Xyycrank+319, 0, 0,
- Xyycrank+265, 0, 0,
- Xyycrank+271, 0, 0,
- Xyycrank+267, 0, 0,
- Xyycrank+359, 0, 0,
- Xyycrank+279, 0, 0,
- Xyycrank+285, 0, 0,
- Xyycrank+290, 0, 0,
- Xyycrank+297, 0, 0,
- Xyycrank+287, 0, 0,
- Xyycrank+295, 0, 0,
- Xyycrank+299, 0, 0,
- Xyycrank+311, 0, 0,
- Xyycrank+300, 0, 0,
- Xyycrank+306, 0, 0,
- Xyycrank+306, 0, 0,
- Xyycrank+332, 0, 0,
- Xyycrank+0, 0, yyvstop+128,
- Xyycrank+309, 0, 0,
- Xyycrank+0, yysvec+47, 0,
- Xyycrank+0, 0, yyvstop+130,
- Xyycrank+349, 0, 0,
- Xyycrank+0, 0, yyvstop+132,
- Xyycrank+0, yysvec+50, yyvstop+134,
- Xyycrank+0, yysvec+51, 0,
- Xyycrank+348, yysvec+51, 0,
- Xyycrank+365, 0, 0,
- Xyycrank+373, yysvec+51, 0,
- Xyycrank+365, yysvec+51, 0,
- Xyycrank+371, yysvec+51, 0,
- Xyycrank+0, 0, yyvstop+136,
- Xyycrank+-444, yysvec+47, 0,
- Xyycrank+0, 0, yyvstop+139,
- Xyycrank+383, 0, 0,
- Xyycrank+372, 0, 0,
- Xyycrank+377, 0, 0,
- Xyycrank+375, 0, 0,
- Xyycrank+379, 0, 0,
- Xyycrank+377, 0, 0,
- Xyycrank+383, 0, 0,
- Xyycrank+396, 0, 0,
- Xyycrank+392, 0, 0,
- Xyycrank+394, 0, 0,
- Xyycrank+404, 0, 0,
- Xyycrank+390, 0, 0,
- Xyycrank+409, 0, 0,
- Xyycrank+409, 0, 0,
- Xyycrank+411, 0, 0,
- Xyycrank+398, 0, 0,
- Xyycrank+402, 0, 0,
- Xyycrank+417, 0, 0,
- Xyycrank+424, 0, 0,
- Xyycrank+399, 0, 0,
- Xyycrank+426, 0, 0,
- Xyycrank+420, 0, 0,
- Xyycrank+414, 0, 0,
- Xyycrank+435, 0, 0,
- Xyycrank+432, 0, 0,
- Xyycrank+429, 0, 0,
- Xyycrank+432, 0, 0,
- Xyycrank+435, 0, 0,
- Xyycrank+428, 0, 0,
- Xyycrank+442, 0, 0,
- Xyycrank+432, 0, 0,
- Xyycrank+437, 0, 0,
- Xyycrank+411, 0, 0,
- Xyycrank+418, 0, 0,
- Xyycrank+415, 0, 0,
- Xyycrank+410, 0, 0,
- Xyycrank+403, 0, 0,
- Xyycrank+403, 0, 0,
- Xyycrank+413, 0, 0,
- Xyycrank+414, 0, 0,
- Xyycrank+409, 0, 0,
- Xyycrank+415, 0, 0,
- Xyycrank+412, 0, 0,
- Xyycrank+413, 0, 0,
- Xyycrank+420, 0, 0,
- Xyycrank+417, 0, 0,
- Xyycrank+418, 0, 0,
- Xyycrank+421, 0, 0,
- Xyycrank+422, 0, 0,
- Xyycrank+430, 0, 0,
- Xyycrank+442, 0, 0,
- Xyycrank+445, 0, 0,
- Xyycrank+430, 0, 0,
- Xyycrank+0, 0, yyvstop+141,
- Xyycrank+431, 0, 0,
- Xyycrank+435, 0, 0,
- Xyycrank+0, 0, yyvstop+143,
- Xyycrank+443, 0, 0,
- Xyycrank+450, 0, 0,
- Xyycrank+441, 0, 0,
- Xyycrank+455, 0, 0,
- Xyycrank+447, 0, 0,
- Xyycrank+440, 0, 0,
- Xyycrank+440, 0, 0,
- Xyycrank+449, 0, 0,
- Xyycrank+447, 0, 0,
- Xyycrank+450, 0, 0,
- Xyycrank+459, 0, 0,
- Xyycrank+445, 0, 0,
- Xyycrank+461, 0, 0,
- Xyycrank+462, 0, 0,
- Xyycrank+454, 0, 0,
- Xyycrank+466, 0, 0,
- Xyycrank+467, 0, 0,
- Xyycrank+467, 0, 0,
- Xyycrank+464, 0, 0,
- Xyycrank+470, 0, 0,
- Xyycrank+456, 0, 0,
- Xyycrank+466, 0, 0,
- Xyycrank+456, 0, 0,
- Xyycrank+0, 0, yyvstop+145,
- Xyycrank+472, 0, 0,
- Xyycrank+457, 0, 0,
- Xyycrank+470, 0, 0,
- Xyycrank+471, 0, 0,
- Xyycrank+461, 0, 0,
- Xyycrank+568, 0, 0,
- Xyycrank+505, 0, 0,
- Xyycrank+507, yysvec+51, 0,
- Xyycrank+502, 0, 0,
- Xyycrank+518, 0, 0,
- Xyycrank+519, 0, 0,
- Xyycrank+514, 0, 0,
- Xyycrank+0, 0, yyvstop+147,
- Xyycrank+522, 0, 0,
- Xyycrank+524, 0, 0,
- Xyycrank+507, 0, 0,
- Xyycrank+507, 0, 0,
- Xyycrank+523, 0, 0,
- Xyycrank+0, 0, yyvstop+149,
- Xyycrank+498, 0, 0,
- Xyycrank+525, 0, 0,
- Xyycrank+519, 0, 0,
- Xyycrank+509, 0, yyvstop+151,
- Xyycrank+532, 0, 0,
- Xyycrank+514, 0, 0,
- Xyycrank+0, 0, yyvstop+153,
- Xyycrank+519, 0, 0,
- Xyycrank+532, 0, 0,
- Xyycrank+534, 0, 0,
- Xyycrank+0, 0, yyvstop+155,
- Xyycrank+537, 0, 0,
- Xyycrank+524, 0, 0,
- Xyycrank+525, 0, 0,
- Xyycrank+0, 0, yyvstop+157,
- Xyycrank+0, 0, yyvstop+159,
- Xyycrank+523, 0, 0,
- Xyycrank+527, 0, 0,
- Xyycrank+527, 0, 0,
- Xyycrank+0, 0, yyvstop+161,
- Xyycrank+535, 0, 0,
- Xyycrank+499, 0, 0,
- Xyycrank+496, 0, 0,
- Xyycrank+510, 0, 0,
- Xyycrank+511, 0, 0,
- Xyycrank+498, 0, 0,
- Xyycrank+503, 0, 0,
- Xyycrank+514, 0, 0,
- Xyycrank+0, 0, yyvstop+163,
- Xyycrank+515, 0, 0,
- Xyycrank+502, 0, 0,
- Xyycrank+517, 0, 0,
- Xyycrank+518, 0, 0,
- Xyycrank+0, 0, yyvstop+165,
- Xyycrank+0, 0, yyvstop+167,
- Xyycrank+0, 0, yyvstop+169,
- Xyycrank+523, 0, 0,
- Xyycrank+520, 0, 0,
- Xyycrank+521, 0, 0,
- Xyycrank+578, 0, 0,
- Xyycrank+522, 0, 0,
- Xyycrank+520, 0, 0,
- Xyycrank+0, 0, yyvstop+171,
- Xyycrank+525, 0, 0,
- Xyycrank+526, 0, 0,
- Xyycrank+531, 0, 0,
- Xyycrank+519, 0, 0,
- Xyycrank+524, 0, 0,
- Xyycrank+0, 0, yyvstop+173,
- Xyycrank+515, 0, 0,
- Xyycrank+518, 0, 0,
- Xyycrank+528, 0, 0,
- Xyycrank+523, 0, 0,
- Xyycrank+538, 0, 0,
- Xyycrank+0, 0, yyvstop+175,
- Xyycrank+532, 0, 0,
- Xyycrank+529, 0, 0,
- Xyycrank+539, 0, 0,
- Xyycrank+0, 0, yyvstop+177,
- Xyycrank+538, 0, 0,
- Xyycrank+539, 0, 0,
- Xyycrank+530, 0, 0,
- Xyycrank+526, 0, 0,
- Xyycrank+527, 0, 0,
- Xyycrank+528, 0, 0,
- Xyycrank+535, 0, 0,
- Xyycrank+542, 0, 0,
- Xyycrank+0, 0, yyvstop+179,
- Xyycrank+533, 0, 0,
- Xyycrank+540, 0, 0,
- Xyycrank+533, 0, 0,
- Xyycrank+0, 0, yyvstop+181,
- Xyycrank+0, 0, yyvstop+183,
- Xyycrank+585, 0, 0,
- Xyycrank+578, yysvec+51, 0,
- Xyycrank+0, 0, yyvstop+185,
- Xyycrank+580, 0, 0,
- Xyycrank+584, 0, 0,
- Xyycrank+586, 0, 0,
- Xyycrank+573, 0, 0,
- Xyycrank+570, 0, 0,
- Xyycrank+0, 0, yyvstop+187,
- Xyycrank+592, 0, 0,
- Xyycrank+574, 0, 0,
- Xyycrank+582, 0, 0,
- Xyycrank+578, 0, 0,
- Xyycrank+0, 0, yyvstop+189,
- Xyycrank+596, 0, 0,
- Xyycrank+591, 0, 0,
- Xyycrank+594, 0, 0,
- Xyycrank+0, 0, yyvstop+191,
- Xyycrank+591, 0, 0,
- Xyycrank+581, 0, 0,
- Xyycrank+590, 0, 0,
- Xyycrank+590, 0, 0,
- Xyycrank+590, 0, 0,
- Xyycrank+0, 0, yyvstop+193,
- Xyycrank+590, 0, 0,
- Xyycrank+591, 0, 0,
- Xyycrank+601, 0, 0,
- Xyycrank+0, 0, yyvstop+195,
- Xyycrank+0, 0, yyvstop+197,
- Xyycrank+560, 0, 0,
- Xyycrank+0, 0, yyvstop+199,
- Xyycrank+572, 0, 0,
- Xyycrank+565, 0, 0,
- Xyycrank+565, 0, 0,
- Xyycrank+562, 0, 0,
- Xyycrank+0, 0, yyvstop+201,
- Xyycrank+577, 0, 0,
- Xyycrank+578, 0, 0,
- Xyycrank+561, 0, 0,
- Xyycrank+0, 0, yyvstop+203,
- Xyycrank+580, 0, 0,
- Xyycrank+573, 0, 0,
- Xyycrank+574, 0, 0,
- Xyycrank+575, 0, 0,
- Xyycrank+581, 0, 0,
- Xyycrank+585, 0, 0,
- Xyycrank+570, 0, 0,
- Xyycrank+573, 0, 0,
- Xyycrank+588, 0, 0,
- Xyycrank+589, 0, 0,
- Xyycrank+594, 0, 0,
- Xyycrank+589, 0, 0,
- Xyycrank+579, 0, 0,
- Xyycrank+582, 0, 0,
- Xyycrank+0, 0, yyvstop+205,
- Xyycrank+594, 0, 0,
- Xyycrank+580, 0, 0,
- Xyycrank+595, 0, 0,
- Xyycrank+0, 0, yyvstop+207,
- Xyycrank+589, 0, 0,
- Xyycrank+0, 0, yyvstop+209,
- Xyycrank+582, 0, 0,
- Xyycrank+585, 0, 0,
- Xyycrank+600, 0, 0,
- Xyycrank+0, 0, yyvstop+211,
- Xyycrank+587, 0, 0,
- Xyycrank+595, 0, 0,
- Xyycrank+0, 0, yyvstop+213,
- Xyycrank+624, 0, 0,
- Xyycrank+635, yysvec+51, 0,
- Xyycrank+0, 0, yyvstop+215,
- Xyycrank+0, 0, yyvstop+217,
- Xyycrank+627, 0, 0,
- Xyycrank+634, 0, 0,
- Xyycrank+635, 0, 0,
- Xyycrank+636, 0, 0,
- Xyycrank+628, 0, 0,
- Xyycrank+646, 0, 0,
- Xyycrank+0, 0, yyvstop+219,
- Xyycrank+636, 0, 0,
- Xyycrank+644, 0, 0,
- Xyycrank+632, 0, 0,
- Xyycrank+644, 0, 0,
- Xyycrank+0, 0, yyvstop+221,
- Xyycrank+0, 0, yyvstop+223,
- Xyycrank+621, 0, 0,
- Xyycrank+0, 0, yyvstop+225,
- Xyycrank+640, 0, 0,
- Xyycrank+636, 0, 0,
- Xyycrank+630, 0, 0,
- Xyycrank+0, 0, yyvstop+227,
- Xyycrank+620, 0, 0,
- Xyycrank+0, 0, yyvstop+229,
- Xyycrank+0, 0, yyvstop+231,
- Xyycrank+0, 0, yyvstop+233,
- Xyycrank+0, 0, yyvstop+235,
- Xyycrank+0, 0, yyvstop+237,
- Xyycrank+620, 0, 0,
- Xyycrank+0, 0, yyvstop+239,
- Xyycrank+621, 0, 0,
- Xyycrank+618, 0, 0,
- Xyycrank+613, 0, 0,
- Xyycrank+624, 0, 0,
- Xyycrank+621, 0, 0,
- Xyycrank+0, 0, yyvstop+241,
- Xyycrank+610, 0, 0,
- Xyycrank+612, 0, 0,
- Xyycrank+630, 0, 0,
- Xyycrank+616, 0, 0,
- Xyycrank+623, 0, 0,
- Xyycrank+622, 0, 0,
- Xyycrank+0, 0, yyvstop+243,
- Xyycrank+0, 0, yyvstop+245,
- Xyycrank+621, 0, 0,
- Xyycrank+0, 0, yyvstop+247,
- Xyycrank+617, 0, 0,
- Xyycrank+0, 0, yyvstop+249,
- Xyycrank+626, 0, 0,
- Xyycrank+631, 0, 0,
- Xyycrank+0, 0, yyvstop+251,
- Xyycrank+636, 0, 0,
- Xyycrank+637, 0, 0,
- Xyycrank+0, 0, yyvstop+253,
- Xyycrank+657, 0, 0,
- Xyycrank+672, 0, 0,
- Xyycrank+663, 0, 0,
- Xyycrank+664, 0, 0,
- Xyycrank+654, 0, 0,
- Xyycrank+664, 0, 0,
- Xyycrank+670, 0, 0,
- Xyycrank+0, 0, yyvstop+255,
- Xyycrank+0, 0, yyvstop+257,
- Xyycrank+675, 0, 0,
- Xyycrank+680, 0, 0,
- Xyycrank+0, 0, yyvstop+259,
- Xyycrank+664, 0, 0,
- Xyycrank+0, 0, yyvstop+261,
- Xyycrank+0, 0, yyvstop+263,
- Xyycrank+0, 0, yyvstop+265,
- Xyycrank+647, 0, 0,
- Xyycrank+647, 0, 0,
- Xyycrank+640, 0, 0,
- Xyycrank+0, 0, yyvstop+267,
- Xyycrank+641, 0, 0,
- Xyycrank+639, 0, 0,
- Xyycrank+653, 0, 0,
- Xyycrank+639, 0, 0,
- Xyycrank+0, 0, yyvstop+269,
- Xyycrank+0, 0, yyvstop+271,
- Xyycrank+0, 0, yyvstop+273,
- Xyycrank+645, 0, 0,
- Xyycrank+650, 0, 0,
- Xyycrank+0, 0, yyvstop+275,
- Xyycrank+658, 0, 0,
- Xyycrank+662, 0, 0,
- Xyycrank+663, 0, 0,
- Xyycrank+0, 0, yyvstop+277,
- Xyycrank+693, 0, 0,
- Xyycrank+694, 0, 0,
- Xyycrank+0, 0, yyvstop+279,
- Xyycrank+0, 0, yyvstop+281,
- Xyycrank+0, 0, yyvstop+283,
- Xyycrank+0, 0, yyvstop+285,
- Xyycrank+701, 0, 0,
- Xyycrank+688, 0, 0,
- Xyycrank+689, 0, 0,
- Xyycrank+703, 0, 0,
- Xyycrank+694, 0, 0,
- Xyycrank+676, 0, 0,
- Xyycrank+656, 0, 0,
- Xyycrank+669, 0, 0,
- Xyycrank+660, 0, 0,
- Xyycrank+665, 0, 0,
- Xyycrank+675, 0, 0,
- Xyycrank+663, 0, 0,
- Xyycrank+0, 0, yyvstop+287,
- Xyycrank+664, 0, 0,
- Xyycrank+0, 0, yyvstop+289,
- Xyycrank+675, 0, 0,
- Xyycrank+0, 0, yyvstop+291,
- Xyycrank+0, 0, yyvstop+293,
- Xyycrank+711, 0, 0,
- Xyycrank+0, 0, yyvstop+295,
- Xyycrank+715, 0, 0,
- Xyycrank+700, 0, 0,
- Xyycrank+705, 0, 0,
- Xyycrank+710, 0, 0,
- Xyycrank+720, 0, 0,
- Xyycrank+704, 0, 0,
- Xyycrank+0, 0, yyvstop+297,
- Xyycrank+671, 0, 0,
- Xyycrank+0, 0, yyvstop+299,
- Xyycrank+0, 0, yyvstop+301,
- Xyycrank+0, 0, yyvstop+303,
- Xyycrank+0, 0, yyvstop+305,
- Xyycrank+672, 0, 0,
- Xyycrank+673, 0, 0,
- Xyycrank+0, 0, yyvstop+307,
- Xyycrank+714, 0, 0,
- Xyycrank+709, 0, 0,
- Xyycrank+709, 0, 0,
- Xyycrank+724, 0, 0,
- Xyycrank+727, 0, 0,
- Xyycrank+726, 0, 0,
- Xyycrank+0, 0, yyvstop+309,
- Xyycrank+0, 0, yyvstop+311,
- Xyycrank+695, 0, 0,
- Xyycrank+728, 0, 0,
- Xyycrank+725, 0, 0,
- Xyycrank+715, 0, 0,
- Xyycrank+733, 0, 0,
- Xyycrank+732, 0, 0,
- Xyycrank+731, 0, 0,
- Xyycrank+703, 0, 0,
- Xyycrank+0, 0, yyvstop+313,
- Xyycrank+736, 0, 0,
- Xyycrank+736, 0, 0,
- Xyycrank+722, 0, 0,
- Xyycrank+724, 0, 0,
- Xyycrank+735, 0, 0,
- Xyycrank+0, 0, yyvstop+315,
- Xyycrank+730, 0, 0,
- Xyycrank+728, 0, 0,
- Xyycrank+728, 0, 0,
- Xyycrank+0, 0, yyvstop+317,
- Xyycrank+733, 0, 0,
- Xyycrank+731, 0, 0,
- Xyycrank+731, 0, 0,
- Xyycrank+0, 0, yyvstop+319,
- Xyycrank+737, 0, 0,
- Xyycrank+733, 0, 0,
- Xyycrank+0, 0, yyvstop+321,
- Xyycrank+0, 0, yyvstop+323,
- Xyycrank+0, 0, yyvstop+325,
- X0, 0, 0};
- Xstruct yywork *yytop = yycrank+816;
- Xstruct yysvf *yybgin = yysvec+1;
- Xchar yymatch[] = {
- X00 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
- X01 ,011 ,012 ,01 ,01 ,01 ,01 ,01 ,
- X01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
- X01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
- X040 ,01 ,'"' ,'#' ,01 ,01 ,01 ,01 ,
- X01 ,01 ,01 ,'+' ,01 ,'+' ,'#' ,01 ,
- X'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,'0' ,
- X'0' ,'0' ,01 ,01 ,01 ,01 ,01 ,01 ,
- X01 ,'#' ,'#' ,'#' ,01 ,01 ,01 ,01 ,
- X01 ,'#' ,01 ,'#' ,'#' ,01 ,01 ,01 ,
- X'#' ,01 ,01 ,'#' ,01 ,01 ,01 ,'#' ,
- X01 ,01 ,01 ,01 ,'#' ,01 ,01 ,01 ,
- X01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
- X01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
- X01 ,01 ,01 ,01 ,01 ,01 ,01 ,01 ,
- X01 ,01 ,01 ,'#' ,'#' ,'#' ,01 ,01 ,
- X0};
- Xchar yyextra[] = {
- X0,0,0,0,0,0,0,0,
- X0,0,0,0,0,0,0,0,
- X0,0,0,0,0,0,0,0,
- X0,0,0,0,0,0,0,0,
- X0,0,0,0,0,0,0,0,
- X0,0,0,0,0,0,0,0,
- X0,0,0,0,0,0,0,0,
- X0,0,0,0,0,0,0,0,
- X0,0,0,0,0,0,0,0,
- X0,0,0,0,0,0,0,0,
- X0,0,0,0,0,0,0,0,
- X0,0,0,0,0,0,0,0,
- X0,0,0,0,0,0,0,0,
- X0};
- X#ifndef lint
- Xstatic char ncform_sccsid[] = "@(#)ncform 1.6 88/02/08 SMI"; /* from S5R2 1.2 */
- X#endif
- X
- Xint yylineno =1;
- X# define YYU(x) x
- X# define NLSTATE yyprevious=YYNEWLINE
- Xchar yytext[YYLMAX];
- Xstruct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp;
- Xchar yysbuf[YYLMAX];
- Xchar *yysptr = yysbuf;
- Xint *yyfnd;
- Xextern struct yysvf *yyestate;
- Xint yyprevious = YYNEWLINE;
- Xyylook(){
- X register struct yysvf *yystate, **lsp;
- X register struct yywork *yyt;
- X struct yysvf *yyz;
- X int yych, yyfirst;
- X struct yywork *yyr;
- X# ifdef LEXDEBUG
- X int debug;
- X# endif
- X char *yylastch;
- X /* start off machines */
- X# ifdef LEXDEBUG
- X debug = 0;
- X# endif
- X yyfirst=1;
- X if (!yymorfg)
- X yylastch = yytext;
- X else {
- X yymorfg=0;
- X yylastch = yytext+yyleng;
- X }
- X for(;;){
- X lsp = yylstate;
- X yyestate = yystate = yybgin;
- X if (yyprevious==YYNEWLINE) yystate++;
- X for (;;){
- X# ifdef LEXDEBUG
- X if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1);
- X# endif
- X yyt = yystate->yystoff;
- X if(yyt == yycrank && !yyfirst){ /* may not be any transitions */
- X yyz = yystate->yyother;
- X if(yyz == 0)break;
- X if(yyz->yystoff == yycrank)break;
- X }
- X *yylastch++ = yych = input();
- X yyfirst=0;
- X tryagain:
- X# ifdef LEXDEBUG
- X if(debug){
- X fprintf(yyout,"char ");
- X allprint(yych);
- X putchar('\n');
- X }
- X# endif
- X yyr = yyt;
- X if ( (int)yyt > (int)yycrank){
- X yyt = yyr + yych;
- X if (yyt <= yytop && yyt->verify+yysvec == yystate){
- X if(yyt->advance+yysvec == YYLERR) /* error transitions */
- X {unput(*--yylastch);break;}
- X *lsp++ = yystate = yyt->advance+yysvec;
- X goto contin;
- X }
- X }
- X# ifdef YYOPTIM
- X else if((int)yyt < (int)yycrank) { /* r < yycrank */
- X yyt = yyr = yycrank+(yycrank-yyt);
- X# ifdef LEXDEBUG
- X if(debug)fprintf(yyout,"compressed state\n");
- X# endif
- X yyt = yyt + yych;
- X if(yyt <= yytop && yyt->verify+yysvec == yystate){
- X if(yyt->advance+yysvec == YYLERR) /* error transitions */
- X {unput(*--yylastch);break;}
- X *lsp++ = yystate = yyt->advance+yysvec;
- X goto contin;
- X }
- X yyt = yyr + YYU(yymatch[yych]);
- X# ifdef LEXDEBUG
- X if(debug){
- X fprintf(yyout,"try fall back character ");
- X allprint(YYU(yymatch[yych]));
- X putchar('\n');
- X }
- X# endif
- X if(yyt <= yytop && yyt->verify+yysvec == yystate){
- X if(yyt->advance+yysvec == YYLERR) /* error transition */
- X {unput(*--yylastch);break;}
- X *lsp++ = yystate = yyt->advance+yysvec;
- X goto contin;
- X }
- X }
- X if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){
- X# ifdef LEXDEBUG
- X if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1);
- X# endif
- X goto tryagain;
- X }
- X# endif
- X else
- X {unput(*--yylastch);break;}
- X contin:
- X# ifdef LEXDEBUG
- X if(debug){
- X fprintf(yyout,"state %d char ",yystate-yysvec-1);
- X allprint(yych);
- X putchar('\n');
- X }
- X# endif
- X ;
- X }
- X# ifdef LEXDEBUG
- X if(debug){
- X fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1);
- X allprint(yych);
- X putchar('\n');
- X }
- X# endif
- X while (lsp-- > yylstate){
- X *yylastch-- = 0;
- X if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){
- X yyolsp = lsp;
- X if(yyextra[*yyfnd]){ /* must backup */
- X while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){
- X lsp--;
- X unput(*yylastch--);
- X }
- X }
- X yyprevious = YYU(*yylastch);
- X yylsp = lsp;
- X yyleng = yylastch-yytext+1;
- X yytext[yyleng] = 0;
- X# ifdef LEXDEBUG
- X if(debug){
- X fprintf(yyout,"\nmatch ");
- X sprint(yytext);
- X fprintf(yyout," action %d\n",*yyfnd);
- X }
- X# endif
- X return(*yyfnd++);
- X }
- X unput(*yylastch);
- X }
- X if (yytext[0] == 0 /* && feof(yyin) */)
- X {
- X yysptr=yysbuf;
- X return(0);
- X }
- X yyprevious = yytext[0] = input();
- X if (yyprevious>0)
- X output(yyprevious);
- X yylastch=yytext;
- X# ifdef LEXDEBUG
- X if(debug)putchar('\n');
- X# endif
- X }
- X }
- Xyyback(p, m)
- X int *p;
- X{
- Xif (p==0) return(0);
- Xwhile (*p)
- X {
- X if (*p++ == m)
- X return(1);
- X }
- Xreturn(0);
- X}
- X /* the following are only used in the lex library */
- Xyyinput(){
- X return(input());
- X }
- Xyyoutput(c)
- X int c; {
- X output(c);
- X }
- Xyyunput(c)
- X int c; {
- X unput(c);
- X }
- END_OF_FILE
- if test 35705 -ne `wc -c <'sys/share/lev_lex.c'`; then
- echo shar: \"'sys/share/lev_lex.c'\" unpacked with wrong size!
- fi
- # end of 'sys/share/lev_lex.c'
- fi
- echo shar: End of archive 51 \(of 108\).
- cp /dev/null ark51isdone
- 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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 \
- 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 \
- 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 \
- 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 \
- 101 102 103 104 105 106 107 108 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 108 archives.
- echo "Now execute 'rebuild.sh'"
- rm -f ark10[0-8]isdone 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
-