Annotation of 42BSD/ucb/dbx/commands.y, revision 1.1

1.1     ! root        1: %{
        !             2: 
        !             3: /* Copyright (c) 1982 Regents of the University of California */
        !             4: 
        !             5: static char sccsid[] = "@(#)commands.y 1.9 8/17/83";
        !             6: 
        !             7: /*
        !             8:  * Yacc grammar for debugger commands.
        !             9:  */
        !            10: 
        !            11: #include "defs.h"
        !            12: #include "symbols.h"
        !            13: #include "operators.h"
        !            14: #include "tree.h"
        !            15: #include "process.h"
        !            16: #include "source.h"
        !            17: #include "scanner.h"
        !            18: #include "names.h"
        !            19: #include "lists.h"
        !            20: 
        !            21: private String curformat = "X";
        !            22: 
        !            23: %}
        !            24: 
        !            25: %term
        !            26:     ALIAS AND ASSIGN AT CALL CATCH CONT DEBUG DELETE DIV DUMP
        !            27:     EDIT FILE FUNC GRIPE HELP IF IGNORE IN LIST MOD NEXT NEXTI NIL NOT OR
        !            28:     PRINT PSYM QUIT RUN SH SKIP SOURCE STATUS STEP STEPI
        !            29:     STOP STOPI TRACE TRACEI
        !            30:     USE WHATIS WHEN WHERE WHEREIS WHICH
        !            31: 
        !            32: %term INT REAL NAME STRING
        !            33: %term LFORMER RFORMER ABSTRACTION ARROW
        !            34: 
        !            35: %right INT
        !            36: %binary REDIRECT
        !            37: %binary '<' '=' '>' '!' IN
        !            38: %left '+' '-' OR
        !            39: %left UNARYSIGN
        !            40: %left '*' '/' DIV MOD AND
        !            41: %left NOT '(' '[' '.' '^' ARROW
        !            42: %left '\\'
        !            43: 
        !            44: %union {
        !            45:     Name y_name;
        !            46:     Symbol y_sym;
        !            47:     Node y_node;
        !            48:     Integer y_int;
        !            49:     Operator y_op;
        !            50:     long y_long;
        !            51:     double y_real;
        !            52:     String y_string;
        !            53:     Boolean y_bool;
        !            54:     Cmdlist y_cmdlist;
        !            55:     List y_list;
        !            56: };
        !            57: 
        !            58: %type <y_op>       trace stop
        !            59: %type <y_long>     INT count
        !            60: %type <y_real>     REAL
        !            61: %type <y_string>    STRING redirectout filename opt_filename mode
        !            62: %type <y_name>     ALIAS AND ASSIGN AT CALL CATCH CONT DEBUG DELETE DIV DUMP
        !            63: %type <y_name>     EDIT FILE FUNC GRIPE HELP IF IGNORE IN LIST MOD
        !            64: %type <y_name>     NEXT NEXTI NIL NOT OR
        !            65: %type <y_name>     PRINT PSYM QUIT RUN SH SKIP SOURCE STATUS STEP STEPI
        !            66: %type <y_name>     STOP STOPI TRACE TRACEI
        !            67: %type <y_name>     USE WHATIS WHEN WHERE WHEREIS WHICH
        !            68: %type <y_name>     name NAME keyword
        !            69: %type <y_node>      symbol
        !            70: %type <y_node>     command rcommand cmd step what where examine
        !            71: %type <y_node>     event opt_exp_list opt_cond
        !            72: %type <y_node>     exp_list exp term boolean_exp constant address
        !            73: %type <y_node>     alias_command list_command line_number
        !            74: %type <y_cmdlist>   actions
        !            75: %type <y_list>      sourcepath
        !            76: 
        !            77: %%
        !            78: 
        !            79: input:
        !            80:     input command_nl
        !            81: |
        !            82:     /* empty */
        !            83: ;
        !            84: command_nl:
        !            85:     command_line '\n'
        !            86: |
        !            87:     command_line ';'
        !            88: |
        !            89:     '\n'
        !            90: ;
        !            91: 
        !            92: command_line:
        !            93:     command
        !            94: {
        !            95:        if ($1 != nil) {
        !            96:             if(debug_flag[2]) {dumptree(stderr,$1); fflush (stderr);}
        !            97:            eval($1);
        !            98:        }
        !            99: }
        !           100: |
        !           101:     rcommand redirectout
        !           102: {
        !           103:        if ($1 != nil) {
        !           104:            if ($2 != nil) {
        !           105:                setout($2);
        !           106:                 if(debug_flag[2]) {dumptree(stderr,$1); fflush (stderr);}
        !           107:                eval($1);
        !           108:                unsetout();
        !           109:            } else {
        !           110:                 if(debug_flag[2]) {dumptree(stderr,$1); fflush (stderr);}
        !           111:                eval($1);
        !           112:            }
        !           113:        }
        !           114: }
        !           115: ;
        !           116: redirectout:
        !           117:     '>' shellmode NAME
        !           118: {
        !           119:        $$ = ident($3);
        !           120: }
        !           121: |
        !           122:     /* empty */
        !           123: {
        !           124:        $$ = nil;
        !           125: }
        !           126: ;
        !           127: 
        !           128: /*
        !           129:  * Non-redirectable commands.
        !           130:  */
        !           131: command:
        !           132:     alias_command
        !           133: {
        !           134:        $$ = $1;
        !           135: }
        !           136: |
        !           137:     ASSIGN term '=' exp
        !           138: {
        !           139:        $$ = build(O_ASSIGN, $2, $4);
        !           140: }
        !           141: |
        !           142:     CATCH INT
        !           143: {
        !           144:        $$ = build(O_CATCH, $2);
        !           145: }
        !           146: |
        !           147:     CONT
        !           148: {
        !           149:        $$ = build(O_CONT, (long) DEFSIG);
        !           150: }
        !           151: |
        !           152:     CONT INT
        !           153: {
        !           154:        $$ = build(O_CONT, $2);
        !           155: }
        !           156: |
        !           157:     DELETE INT
        !           158: {
        !           159:        $$ = build(O_DELETE, $2);
        !           160: }
        !           161: |
        !           162:     EDIT shellmode opt_filename
        !           163: {
        !           164:        $$ = build(O_EDIT, $3);
        !           165: }
        !           166: |
        !           167:     FILE shellmode opt_filename
        !           168: {
        !           169:        $$ = build(O_CHFILE, $3);
        !           170: }
        !           171: |
        !           172:     FUNC
        !           173: {
        !           174:        $$ = build(O_FUNC, nil);
        !           175: }
        !           176: |
        !           177:     FUNC symbol
        !           178: {
        !           179:        $$ = build(O_FUNC, $2);
        !           180: }
        !           181: |
        !           182:     GRIPE
        !           183: {
        !           184:        $$ = build(O_GRIPE);
        !           185: }
        !           186: |
        !           187:     HELP
        !           188: {
        !           189:        $$ = build(O_HELP);
        !           190: }
        !           191: |
        !           192:     IGNORE INT
        !           193: {
        !           194:        $$ = build(O_IGNORE, $2);
        !           195: }
        !           196: |
        !           197:     list_command
        !           198: {
        !           199:        $$ = $1;
        !           200: }
        !           201: |
        !           202:     PSYM term
        !           203: {
        !           204:        $$ = build(O_PSYM, $2);
        !           205: }
        !           206: |
        !           207:     QUIT
        !           208: {
        !           209:        if (not popinput()) {
        !           210:            quit(0);
        !           211:        } else {
        !           212:            $$ = nil;
        !           213:        }
        !           214: }
        !           215: |
        !           216:     runcommand
        !           217: {
        !           218:        run();
        !           219:        /* NOTREACHED */
        !           220: }
        !           221: |
        !           222:     SH
        !           223: {
        !           224:        shellline();
        !           225:        $$ = nil;
        !           226: }
        !           227: |
        !           228:     SOURCE shellmode filename
        !           229: {
        !           230:        $$ = build(O_SOURCE, $3);
        !           231: }
        !           232: |
        !           233:     step
        !           234: {
        !           235:        $$ = $1;
        !           236: }
        !           237: |
        !           238:     stop where opt_cond
        !           239: {
        !           240:        $$ = build($1, nil, $2, $3);
        !           241: }
        !           242: |
        !           243:     stop what opt_cond
        !           244: {
        !           245:        $$ = build($1, $2, nil, $3);
        !           246: }
        !           247: |
        !           248:     stop IF boolean_exp
        !           249: {
        !           250:        $$ = build($1, nil, nil, $3);
        !           251: }
        !           252: |
        !           253:     trace what where opt_cond
        !           254: {
        !           255:        $$ = build($1, $2, $3, $4);
        !           256: }
        !           257: |
        !           258:     trace where opt_cond
        !           259: {
        !           260:        $$ = build($1, nil, $2, $3);
        !           261: }
        !           262: |
        !           263:     trace what opt_cond
        !           264: {
        !           265:        $$ = build($1, $2, nil, $3);
        !           266: }
        !           267: |
        !           268:     trace opt_cond
        !           269: {
        !           270:        $$ = build($1, nil, nil, $2);
        !           271: }
        !           272: |
        !           273:     WHATIS term
        !           274: {
        !           275:        $$ = build(O_WHATIS, $2);
        !           276: }
        !           277: |
        !           278:     WHEN event '{' actions '}'
        !           279: {
        !           280:        $$ = build(O_ADDEVENT, $2, $4);
        !           281: }
        !           282: |
        !           283:     WHEREIS symbol
        !           284: {
        !           285:        $$ = build(O_WHEREIS, $2);
        !           286: }
        !           287: |
        !           288:     WHICH symbol
        !           289: {
        !           290:        $$ = build(O_WHICH, $2);
        !           291: }
        !           292: |
        !           293:     USE shellmode sourcepath
        !           294: {
        !           295:        String dir;
        !           296: 
        !           297:        $$ = nil;
        !           298:        if (list_size($3) == 0) {
        !           299:            foreach (String, dir, sourcepath)
        !           300:                printf("%s ", dir);
        !           301:            endfor
        !           302:            printf("\n");
        !           303:        } else {
        !           304:            foreach (String, dir, sourcepath)
        !           305:                list_delete(list_curitem(sourcepath), sourcepath);
        !           306:            endfor
        !           307:            sourcepath = $3;
        !           308:        }
        !           309: }
        !           310: ;
        !           311: runcommand:
        !           312:     run { arginit(); } arglist
        !           313: |
        !           314:     run
        !           315: ;
        !           316: run:
        !           317:     RUN shellmode
        !           318: {
        !           319:        fflush(stdout);
        !           320: }
        !           321: ;
        !           322: arglist:
        !           323:     arglist arg
        !           324: |
        !           325:     arg
        !           326: ;
        !           327: arg:
        !           328:     NAME
        !           329: {
        !           330:        newarg(ident($1));
        !           331: }
        !           332: |
        !           333:     '<' NAME
        !           334: {
        !           335:        inarg(ident($2));
        !           336: }
        !           337: |
        !           338:     '>' NAME
        !           339: {
        !           340:        outarg(ident($2));
        !           341: }
        !           342: ;
        !           343: step:
        !           344:     STEP
        !           345: {
        !           346:        $$ = build(O_STEP, true, false);
        !           347: }
        !           348: |
        !           349:     STEPI
        !           350: {
        !           351:        $$ = build(O_STEP, false, false);
        !           352: }
        !           353: |
        !           354:     NEXT
        !           355: {
        !           356:        $$ = build(O_STEP, true, true);
        !           357: }
        !           358: |
        !           359:     NEXTI
        !           360: {
        !           361:        $$ = build(O_STEP, false, true);
        !           362: }
        !           363: ;
        !           364: shellmode:
        !           365:     /* empty */
        !           366: {
        !           367:        beginshellmode();
        !           368: }
        !           369: ;
        !           370: sourcepath:
        !           371:     sourcepath NAME
        !           372: {
        !           373:        $$ = $1;
        !           374:        list_append(list_item(ident($2)), nil, $$);
        !           375: }
        !           376: |
        !           377:     /* empty */
        !           378: {
        !           379:        $$ = list_alloc();
        !           380: }
        !           381: ;
        !           382: event:
        !           383:     where
        !           384: |
        !           385:     exp
        !           386: ;
        !           387: actions:
        !           388:     actions cmd ';'
        !           389: {
        !           390:        $$ = $1;
        !           391:        cmdlist_append($2, $$);
        !           392: }
        !           393: |
        !           394:     cmd ';'
        !           395: {
        !           396:        $$ = list_alloc();
        !           397:        cmdlist_append($1, $$);
        !           398: }
        !           399: ;
        !           400: cmd:
        !           401:     command
        !           402: |
        !           403:     rcommand
        !           404: ;
        !           405: 
        !           406: /*
        !           407:  * Redirectable commands.
        !           408:  */
        !           409: rcommand:
        !           410:     PRINT exp_list
        !           411: {
        !           412:        $$ = build(O_PRINT, $2);
        !           413: }
        !           414: |
        !           415:     WHERE
        !           416: {
        !           417:        $$ = build(O_WHERE);
        !           418: }
        !           419: |
        !           420:     examine
        !           421: {
        !           422:        $$ = $1;
        !           423: }
        !           424: |
        !           425:     CALL term
        !           426: {
        !           427:        $$ = $2;
        !           428: }
        !           429: |
        !           430:     DEBUG INT
        !           431: {
        !           432:        $$ = build(O_DEBUG, $2);
        !           433: }
        !           434: |
        !           435:     DUMP
        !           436: {
        !           437:        $$ = build(O_DUMP);
        !           438: }
        !           439: |
        !           440:     STATUS
        !           441: {
        !           442:        $$ = build(O_STATUS);
        !           443: }
        !           444: ;
        !           445: alias_command:
        !           446:     ALIAS name name
        !           447: {
        !           448:        $$ = build(O_ALIAS, build(O_NAME, $2), build(O_NAME, $3));
        !           449: }
        !           450: |
        !           451:     ALIAS name
        !           452: {
        !           453:        $$ = build(O_ALIAS, build(O_NAME, $2), nil);
        !           454: }
        !           455: |
        !           456:     ALIAS
        !           457: {
        !           458:        $$ = build(O_ALIAS, nil, nil);
        !           459: }
        !           460: ;
        !           461: trace:
        !           462:     TRACE
        !           463: {
        !           464:        $$ = O_TRACE;
        !           465: }
        !           466: |
        !           467:     TRACEI
        !           468: {
        !           469:        $$ = O_TRACEI;
        !           470: }
        !           471: ;
        !           472: stop:
        !           473:     STOP
        !           474: {
        !           475:        $$ = O_STOP;
        !           476: }
        !           477: |
        !           478:     STOPI
        !           479: {
        !           480:        $$ = O_STOPI;
        !           481: }
        !           482: ;
        !           483: what:
        !           484:     exp
        !           485: {
        !           486:        $$ = $1;
        !           487: }
        !           488: |
        !           489:     STRING ':' line_number
        !           490: {
        !           491:        $$ = build(O_QLINE, build(O_SCON, $1), $3);
        !           492: }
        !           493: ;
        !           494: where:
        !           495:     IN term
        !           496: {
        !           497:        $$ = $2;
        !           498: }
        !           499: |
        !           500:     AT line_number
        !           501: {
        !           502:        $$ = build(O_QLINE, build(O_SCON, cursource), $2);
        !           503: }
        !           504: |
        !           505:     AT STRING ':' line_number
        !           506: {
        !           507:        $$ = build(O_QLINE, build(O_SCON, $2), $4);
        !           508: }
        !           509: ;
        !           510: filename:
        !           511:     NAME
        !           512: {
        !           513:        $$ = ident($1);
        !           514: }
        !           515: ;
        !           516: opt_filename:
        !           517:     /* empty */
        !           518: {
        !           519:        $$ = nil;
        !           520: }
        !           521: |
        !           522:     filename
        !           523: {
        !           524:        $$ = $1;
        !           525: }
        !           526: ;
        !           527: opt_exp_list:
        !           528:     exp_list
        !           529: {
        !           530:        $$ = $1;
        !           531: }
        !           532: |
        !           533:     /* empty */
        !           534: {
        !           535:        $$ = nil;
        !           536: }
        !           537: ;
        !           538: list_command:
        !           539:     LIST
        !           540: {
        !           541:        $$ = build(O_LIST,
        !           542:            build(O_LCON, (long) cursrcline),
        !           543:            build(O_LCON, (long) cursrcline + 9)
        !           544:        );
        !           545: }
        !           546: |
        !           547:     LIST line_number
        !           548: {
        !           549:        $$ = build(O_LIST, $2, $2);
        !           550: }
        !           551: |
        !           552:     LIST line_number ',' line_number
        !           553: {
        !           554:        $$ = build(O_LIST, $2, $4);
        !           555: }
        !           556: |
        !           557:     LIST symbol
        !           558: {
        !           559:        $$ = build(O_LIST, $2);
        !           560: }
        !           561: ;
        !           562: line_number:
        !           563:     INT
        !           564: {
        !           565:        $$ = build(O_LCON, $1);
        !           566: }
        !           567: |
        !           568:     '$'
        !           569: {
        !           570:        $$ = build(O_LCON, (long) LASTLINE);
        !           571: }
        !           572: ;
        !           573: examine:
        !           574:     address '/' count mode
        !           575: {
        !           576:        $$ = build(O_EXAMINE, $4, $1, nil, $3);
        !           577: }
        !           578: |
        !           579:     address ',' address '/' mode
        !           580: {
        !           581:        $$ = build(O_EXAMINE, $5, $1, $3, 0);
        !           582: }
        !           583: |
        !           584:     '/' count mode
        !           585: {
        !           586:        $$ = build(O_EXAMINE, $3, build(O_LCON, (long) prtaddr), nil, $2);
        !           587: }
        !           588: |
        !           589:     address '=' mode
        !           590: {
        !           591:        $$ = build(O_EXAMINE, $3, $1, nil, 0);
        !           592: }
        !           593: ;
        !           594: address:
        !           595:     INT
        !           596: {
        !           597:        $$ = build(O_LCON, $1);
        !           598: }
        !           599: |
        !           600:     '&' term
        !           601: {
        !           602:        $$ = amper($2);
        !           603: }
        !           604: |
        !           605:     address '+' address
        !           606: {
        !           607:        $$ = build(O_ADD, $1, $3);
        !           608: }
        !           609: |
        !           610:     address '-' address
        !           611: {
        !           612:        $$ = build(O_SUB, $1, $3);
        !           613: }
        !           614: |
        !           615:     address '*' address
        !           616: {
        !           617:        $$ = build(O_MUL, $1, $3);
        !           618: }
        !           619: |
        !           620:     '*' address %prec UNARYSIGN
        !           621: {
        !           622:        $$ = build(O_INDIR, $2);
        !           623: }
        !           624: |
        !           625:     '(' exp ')'
        !           626: {
        !           627:        $$ = $2;
        !           628: }
        !           629: ;
        !           630: count:
        !           631:     /* empty */
        !           632: {
        !           633:        $$ = 1;
        !           634: }
        !           635: |
        !           636:     INT
        !           637: {
        !           638:        $$ = $1;
        !           639: }
        !           640: ;
        !           641: mode:
        !           642:     name
        !           643: {
        !           644:        $$ = ident($1);
        !           645:        curformat = $$;
        !           646: }
        !           647: |
        !           648:     /* empty */
        !           649: {
        !           650:        $$ = curformat;
        !           651: }
        !           652: ;
        !           653: opt_cond:
        !           654:     /* empty */
        !           655: {
        !           656:        $$ = nil;
        !           657: }
        !           658: |
        !           659:     IF boolean_exp
        !           660: {
        !           661:        $$ = $2;
        !           662: }
        !           663: ;
        !           664: exp_list:
        !           665:     exp
        !           666: {
        !           667:        $$ = build(O_COMMA, $1, nil);
        !           668: }
        !           669: |
        !           670:     exp ',' exp_list
        !           671: {
        !           672:        $$ = build(O_COMMA, $1, $3);
        !           673: }
        !           674: ;
        !           675: exp:
        !           676:     term
        !           677: {
        !           678:        $$ = build(O_RVAL, $1);
        !           679: }
        !           680: |
        !           681:     constant
        !           682: {
        !           683:        $$ = $1;
        !           684: }
        !           685: |
        !           686:     exp '\\' symbol
        !           687: {
        !           688:        $$ = build(O_TYPERENAME, $1, $3);
        !           689: }
        !           690: |
        !           691:     '+' exp %prec UNARYSIGN
        !           692: {
        !           693:        $$ = $2;
        !           694: }
        !           695: |
        !           696:     '-' exp %prec UNARYSIGN
        !           697: {
        !           698:        $$ = build(O_NEG, $2);
        !           699: }
        !           700: |
        !           701:     '&' exp %prec UNARYSIGN
        !           702: {
        !           703:        $$ = amper($2);
        !           704: }
        !           705: |
        !           706:     exp '+' exp
        !           707: {
        !           708:        $$ = build(O_ADD, $1, $3);
        !           709: }
        !           710: |
        !           711:     exp '-' exp
        !           712: {
        !           713:        $$ = build(O_SUB, $1, $3);
        !           714: }
        !           715: |
        !           716:     exp '*' exp
        !           717: {
        !           718:        $$ = build(O_MUL, $1, $3);
        !           719: }
        !           720: |
        !           721:     exp '/' exp
        !           722: {
        !           723:        $$ = build(O_DIVF, $1, $3);
        !           724: }
        !           725: |
        !           726:     exp DIV exp
        !           727: {
        !           728:        $$ = build(O_DIV, $1, $3);
        !           729: }
        !           730: |
        !           731:     exp MOD exp
        !           732: {
        !           733:        $$ = build(O_MOD, $1, $3);
        !           734: }
        !           735: |
        !           736:     exp AND exp
        !           737: {
        !           738:        $$ = build(O_AND, $1, $3);
        !           739: }
        !           740: |
        !           741:     exp OR exp
        !           742: {
        !           743:        $$ = build(O_OR, $1, $3);
        !           744: }
        !           745: |
        !           746:     exp '<' exp
        !           747: {
        !           748:        $$ = build(O_LT, $1, $3);
        !           749: }
        !           750: |
        !           751:     exp '<' '=' exp
        !           752: {
        !           753:        $$ = build(O_LE, $1, $4);
        !           754: }
        !           755: |
        !           756:     exp '>' exp
        !           757: {
        !           758:        $$ = build(O_GT, $1, $3);
        !           759: }
        !           760: |
        !           761:     exp '>' '=' exp
        !           762: {
        !           763:        $$ = build(O_GE, $1, $4);
        !           764: }
        !           765: |
        !           766:     exp '=' exp
        !           767: {
        !           768:        $$ = build(O_EQ, $1, $3);
        !           769: }
        !           770: |
        !           771:     exp '=' '=' exp
        !           772: {
        !           773:        $$ = build(O_EQ, $1, $4);
        !           774: }
        !           775: |
        !           776:     exp '<' '>' exp
        !           777: {
        !           778:        $$ = build(O_NE, $1, $4);
        !           779: }
        !           780: |
        !           781:     exp '!' '=' exp
        !           782: {
        !           783:        $$ = build(O_NE, $1, $4);
        !           784: }
        !           785: |
        !           786:     '(' exp ')'
        !           787: {
        !           788:        $$ = $2;
        !           789: }
        !           790: ;
        !           791: term:
        !           792:     symbol
        !           793: {
        !           794:        $$ = $1;
        !           795: }
        !           796: |
        !           797:     term '[' exp_list ']'
        !           798: {
        !           799:        $$ = subscript($1, $3);
        !           800: }
        !           801: |
        !           802:     term '.' name
        !           803: {
        !           804:        $$ = dot($1, $3);
        !           805: }
        !           806: |
        !           807:     term ARROW name
        !           808: {
        !           809:        $$ = dot($1, $3);
        !           810: }
        !           811: |
        !           812:     '*' term %prec UNARYSIGN
        !           813: {
        !           814:        $$ = build(O_INDIR, $2);
        !           815: }
        !           816: |
        !           817:     '*' '(' exp ')' %prec UNARYSIGN
        !           818: {
        !           819:        $$ = build(O_INDIR, $3);
        !           820: }
        !           821: |
        !           822:     term '^' %prec UNARYSIGN
        !           823: {
        !           824:        $$ = build(O_INDIR, $1);
        !           825: }
        !           826: |
        !           827:     '#' term %prec UNARYSIGN
        !           828: {
        !           829:        $$ = concrete($2);
        !           830: }
        !           831: |
        !           832:     term '(' opt_exp_list ')'
        !           833: {
        !           834:        $$ = build(O_CALL, $1, $3);
        !           835: }
        !           836: ;
        !           837: boolean_exp:
        !           838:     exp
        !           839: {
        !           840:        chkboolean($1);
        !           841:        $$ = $1;
        !           842: }
        !           843: ;
        !           844: constant:
        !           845:     INT
        !           846: {
        !           847:        $$ = build(O_LCON, $1);
        !           848: }
        !           849: |
        !           850:     REAL
        !           851: {
        !           852:        $$ = build(O_FCON, $1);
        !           853: }
        !           854: |
        !           855:     STRING
        !           856: {
        !           857:        $$ = build(O_SCON, $1);
        !           858: }
        !           859: ;
        !           860: symbol:
        !           861:     name
        !           862: {
        !           863:        $$ = build(O_SYM, which($1));
        !           864: }
        !           865: ;
        !           866: name:
        !           867:     NAME
        !           868: {
        !           869:        $$ = $1;
        !           870: }
        !           871: |
        !           872:     keyword
        !           873: {
        !           874:        $$ = $1;
        !           875: }
        !           876: keyword:
        !           877:     ALIAS | AND | ASSIGN | AT | CALL | CATCH | CONT | DEBUG | DELETE | DIV | 
        !           878:     DUMP | EDIT | FILE | FUNC | GRIPE | HELP | IGNORE | IN | LIST | MOD |
        !           879:     NEXT | NEXTI | NIL | NOT | OR | PRINT | PSYM | QUIT | RUN |
        !           880:     SH | SKIP | SOURCE | STATUS | STEP | STEPI |
        !           881:     STOP | STOPI | TRACE | TRACEI |
        !           882:     USE | WHATIS | WHEN | WHERE | WHEREIS | WHICH
        !           883: ;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.