correct comment
[unix-history] / usr / src / old / dbx / commands.y
CommitLineData
4514e9cd 1%{
4514e9cd
ML
2/* Copyright (c) 1982 Regents of the University of California */
3
50edb230 4static char sccsid[] = "@(#)commands.y 1.13 (Berkeley) %G%";
4514e9cd
ML
5
6/*
7 * Yacc grammar for debugger commands.
8 */
9
10#include "defs.h"
11#include "symbols.h"
12#include "operators.h"
13#include "tree.h"
14#include "process.h"
15#include "source.h"
16#include "scanner.h"
17#include "names.h"
2a007f57 18#include "lists.h"
f7adfe8e 19#include <signal.h>
4514e9cd
ML
20
21private String curformat = "X";
22
23%}
24
25%term
2fd0f574 26 ALIAS AND ASSIGN AT CALL CATCH CONT DEBUG DELETE DIV DOWN DUMP
4514e9cd 27 EDIT FILE FUNC GRIPE HELP IF IGNORE IN LIST MOD NEXT NEXTI NIL NOT OR
2fd0f574
SL
28 PRINT PSYM QUIT RERUN RETURN RUN SH SKIP SOURCE STATUS STEP STEPI
29 STOP STOPI TRACE TRACEI UP
4514e9cd
ML
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
3f80f200 42%left '\\'
4514e9cd
ML
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;
2a007f57 55 List y_list;
4514e9cd
ML
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
2fd0f574
SL
62%type <y_name> ALIAS AND ASSIGN AT CALL CATCH CONT
63%type <y_name> DEBUG DELETE DIV DOWN DUMP
4514e9cd
ML
64%type <y_name> EDIT FILE FUNC GRIPE HELP IF IGNORE IN LIST MOD
65%type <y_name> NEXT NEXTI NIL NOT OR
2fd0f574
SL
66%type <y_name> PRINT PSYM QUIT RERUN RETURN RUN SH SKIP SOURCE STATUS
67%type <y_name> STEP STEPI STOP STOPI TRACE TRACEI
68%type <y_name> UP USE WHATIS WHEN WHERE WHEREIS WHICH
4514e9cd 69%type <y_name> name NAME keyword
2fd0f574 70%type <y_node> opt_qual_symbol symbol
4514e9cd 71%type <y_node> command rcommand cmd step what where examine
f11c3b2b 72%type <y_node> event opt_exp_list opt_cond
4514e9cd 73%type <y_node> exp_list exp term boolean_exp constant address
50edb230 74%type <y_node> integer_list alias_command list_command line_number
f7adfe8e
SL
75%type <y_node> something search_command pattern
76%type <y_node> signal_list signal
4514e9cd 77%type <y_cmdlist> actions
2a007f57 78%type <y_list> sourcepath
4514e9cd
ML
79
80%%
81
82input:
83 input command_nl
f7adfe8e
SL
84{
85 endshellmode();
86 startaliasing();
87}
4514e9cd
ML
88|
89 /* empty */
90;
f7adfe8e 91
4514e9cd
ML
92command_nl:
93 command_line '\n'
f7adfe8e
SL
94{
95 if (istty()) {
96 printf("(%s) ", cmdname);
97 fflush(stdout);
98 }
99}
4514e9cd
ML
100|
101 command_line ';'
102|
103 '\n'
f7adfe8e
SL
104{
105 if (istty()) {
106 printf("(%s) ", cmdname);
107 fflush(stdout);
108 }
109}
4514e9cd
ML
110;
111
112command_line:
113 command
114{
115 if ($1 != nil) {
ceac4b29 116 if(debug_flag[2]) {dumptree(stderr,$1); fflush (stderr);}
4514e9cd
ML
117 eval($1);
118 }
f7adfe8e 119 startaliasing();
4514e9cd
ML
120}
121|
122 rcommand redirectout
123{
124 if ($1 != nil) {
125 if ($2 != nil) {
126 setout($2);
ceac4b29 127 if(debug_flag[2]) {dumptree(stderr,$1); fflush (stderr);}
4514e9cd
ML
128 eval($1);
129 unsetout();
130 } else {
ceac4b29 131 if(debug_flag[2]) {dumptree(stderr,$1); fflush (stderr);}
4514e9cd
ML
132 eval($1);
133 }
134 }
f7adfe8e 135 startaliasing();
4514e9cd
ML
136}
137;
138redirectout:
139 '>' shellmode NAME
140{
141 $$ = ident($3);
142}
143|
144 /* empty */
145{
146 $$ = nil;
147}
148;
149
150/*
151 * Non-redirectable commands.
152 */
153command:
154 alias_command
155{
156 $$ = $1;
157}
158|
f7adfe8e 159 ASSIGN stopaliasing term '=' exp
4514e9cd 160{
f7adfe8e 161 $$ = build(O_ASSIGN, $3, $5);
4514e9cd
ML
162}
163|
f7adfe8e 164 CATCH
4514e9cd 165{
f7adfe8e
SL
166 $$ = build(O_CATCH, nil);
167}
168|
169 CATCH stopaliasing signal_list
170{
171 $$ = build(O_CATCH, $3);
4514e9cd
ML
172}
173|
174 CONT
175{
2a007f57 176 $$ = build(O_CONT, (long) DEFSIG);
7215192d
ML
177}
178|
179 CONT INT
180{
181 $$ = build(O_CONT, $2);
4514e9cd
ML
182}
183|
50edb230 184 DELETE integer_list
4514e9cd
ML
185{
186 $$ = build(O_DELETE, $2);
187}
2fd0f574
SL
188|
189 DOWN
190{
191 $$ = build(O_DOWN, build(O_LCON, (long) 1));
192}
193|
194 DOWN INT
195{
196 $$ = build(O_DOWN, build(O_LCON, (long) $2));
197}
4514e9cd
ML
198|
199 EDIT shellmode opt_filename
200{
201 $$ = build(O_EDIT, $3);
202}
203|
204 FILE shellmode opt_filename
205{
206 $$ = build(O_CHFILE, $3);
207}
208|
209 FUNC
210{
211 $$ = build(O_FUNC, nil);
212}
213|
f7adfe8e 214 FUNC stopaliasing symbol
4514e9cd 215{
f7adfe8e 216 $$ = build(O_FUNC, $3);
4514e9cd
ML
217}
218|
219 GRIPE
220{
221 $$ = build(O_GRIPE);
222}
223|
224 HELP
225{
226 $$ = build(O_HELP);
227}
228|
f7adfe8e
SL
229 IGNORE
230{
231 $$ = build(O_IGNORE, nil);
232}
233|
234 IGNORE stopaliasing signal_list
4514e9cd 235{
f7adfe8e 236 $$ = build(O_IGNORE, $3);
4514e9cd
ML
237}
238|
239 list_command
240{
241 $$ = $1;
242}
243|
f7adfe8e 244 PSYM stopaliasing term
4514e9cd 245{
f7adfe8e 246 $$ = build(O_PSYM, $3);
4514e9cd
ML
247}
248|
249 QUIT
250{
251 if (not popinput()) {
252 quit(0);
253 } else {
254 $$ = nil;
255 }
256}
2fd0f574
SL
257|
258 RETURN
259{
260 $$ = build(O_RETURN, nil);
261}
262|
f7adfe8e 263 RETURN stopaliasing opt_qual_symbol
2fd0f574 264{
f7adfe8e 265 $$ = build(O_RETURN, $3);
2fd0f574 266}
4514e9cd
ML
267|
268 runcommand
269{
270 run();
271 /* NOTREACHED */
272}
273|
274 SH
275{
276 shellline();
277 $$ = nil;
278}
279|
280 SOURCE shellmode filename
281{
282 $$ = build(O_SOURCE, $3);
283}
284|
285 step
286{
287 $$ = $1;
288}
289|
290 stop where opt_cond
291{
292 $$ = build($1, nil, $2, $3);
293}
294|
295 stop what opt_cond
296{
297 $$ = build($1, $2, nil, $3);
298}
299|
300 stop IF boolean_exp
301{
302 $$ = build($1, nil, nil, $3);
303}
304|
305 trace what where opt_cond
306{
307 $$ = build($1, $2, $3, $4);
308}
309|
310 trace where opt_cond
311{
312 $$ = build($1, nil, $2, $3);
313}
314|
315 trace what opt_cond
316{
317 $$ = build($1, $2, nil, $3);
318}
319|
320 trace opt_cond
321{
322 $$ = build($1, nil, nil, $2);
323}
324|
2fd0f574 325 UP
4514e9cd 326{
2fd0f574 327 $$ = build(O_UP, build(O_LCON, (long) 1));
4514e9cd
ML
328}
329|
2fd0f574 330 UP INT
4514e9cd 331{
2fd0f574 332 $$ = build(O_UP, build(O_LCON, (long) $2));
4514e9cd
ML
333}
334|
335 USE shellmode sourcepath
336{
2a007f57
ML
337 String dir;
338
4514e9cd 339 $$ = nil;
2a007f57
ML
340 if (list_size($3) == 0) {
341 foreach (String, dir, sourcepath)
342 printf("%s ", dir);
343 endfor
344 printf("\n");
345 } else {
346 foreach (String, dir, sourcepath)
347 list_delete(list_curitem(sourcepath), sourcepath);
348 endfor
349 sourcepath = $3;
4514e9cd
ML
350 }
351}
2fd0f574 352|
50edb230 353 WHATIS stopaliasing term
2fd0f574 354{
50edb230 355 $$ = build(O_WHATIS, $3);
2fd0f574
SL
356}
357|
50edb230 358 WHEN stopaliasing event '{' actions '}'
2fd0f574 359{
50edb230 360 $$ = build(O_ADDEVENT, $3, $5);
2fd0f574
SL
361}
362|
50edb230 363 WHEREIS stopaliasing symbol
2fd0f574 364{
50edb230 365 $$ = build(O_WHEREIS, $3);
2fd0f574
SL
366}
367|
50edb230 368 WHICH stopaliasing symbol
2fd0f574 369{
50edb230 370 $$ = build(O_WHICH, $3);
2fd0f574 371}
2b8f421b
SL
372|
373 search_command
374{
375 $$ = $1;
376}
4514e9cd 377;
2b8f421b
SL
378
379
380search_command:
381 '/' pattern
382{
383 $$ = build(O_SEARCH, build(O_LCON, 1), $2);
384}
385|
386 '?' pattern
387{
388 $$ = build(O_SEARCH, build(O_LCON, 0), $2);
389}
390;
391
392pattern:
393 STRING
394{
395 $$ = build(O_SCON, $1);
396}
397;
398
50edb230 399integer_list:
f7adfe8e
SL
400 INT
401{
50edb230 402 $$ = build(O_LCON, $1);
f7adfe8e
SL
403}
404|
50edb230 405 INT integer_list
f7adfe8e
SL
406{
407 $$ = build(O_COMMA, build(O_LCON, $1), $2);
408}
409;
410
411signal_list:
412 signal
413{
414 $$ = build(O_COMMA, $1, nil);
415}
416|
417 signal signal_list
418{
419 $$ = build(O_COMMA, $1, $2);
420}
421;
422
423signal:
424 INT
425{
426 if ($1 < 1 || $1 > NSIG)
427 error("Invalid signal %d.", $1);
428 $$ = build(O_LCON, $1);
429}
430|
431 NAME
432{
433 $$ = build(O_LCON, signalname(ident($1)));
434}
435;
436
4514e9cd 437runcommand:
2fd0f574 438 run arglist
f11c3b2b 439|
160ffb02 440 run
4514e9cd 441;
f7adfe8e 442
4514e9cd 443run:
160ffb02 444 RUN shellmode
2fd0f574
SL
445{
446 arginit();
447 fflush(stdout);
448}
449|
450 RERUN shellmode
4514e9cd
ML
451{
452 fflush(stdout);
4514e9cd
ML
453}
454;
455arglist:
456 arglist arg
457|
f11c3b2b 458 arg
4514e9cd
ML
459;
460arg:
f7adfe8e 461 NAME
4514e9cd
ML
462{
463 newarg(ident($1));
464}
2fd0f574 465|
f7adfe8e 466 STRING
2fd0f574
SL
467{
468 newarg($1);
469}
4514e9cd
ML
470|
471 '<' NAME
472{
473 inarg(ident($2));
474}
475|
476 '>' NAME
477{
478 outarg(ident($2));
479}
480;
481step:
f7adfe8e 482 STEP stopaliasing
4514e9cd
ML
483{
484 $$ = build(O_STEP, true, false);
485}
486|
f7adfe8e 487 STEPI stopaliasing
4514e9cd
ML
488{
489 $$ = build(O_STEP, false, false);
490}
491|
f7adfe8e 492 NEXT stopaliasing
4514e9cd
ML
493{
494 $$ = build(O_STEP, true, true);
495}
496|
f7adfe8e 497 NEXTI stopaliasing
4514e9cd
ML
498{
499 $$ = build(O_STEP, false, true);
500}
501;
502shellmode:
503 /* empty */
504{
505 beginshellmode();
50edb230 506 stopaliasing();
4514e9cd
ML
507}
508;
509sourcepath:
510 sourcepath NAME
511{
2a007f57
ML
512 $$ = $1;
513 list_append(list_item(ident($2)), nil, $$);
4514e9cd
ML
514}
515|
516 /* empty */
517{
2a007f57 518 $$ = list_alloc();
4514e9cd
ML
519}
520;
521event:
522 where
523|
524 exp
525;
526actions:
527 actions cmd ';'
528{
529 $$ = $1;
530 cmdlist_append($2, $$);
531}
532|
533 cmd ';'
534{
535 $$ = list_alloc();
536 cmdlist_append($1, $$);
537}
538;
539cmd:
540 command
541|
542 rcommand
543;
544
545/*
546 * Redirectable commands.
547 */
548rcommand:
f7adfe8e 549 PRINT stopaliasing exp_list
4514e9cd 550{
f7adfe8e 551 $$ = build(O_PRINT, $3);
4514e9cd
ML
552}
553|
554 WHERE
555{
556 $$ = build(O_WHERE);
557}
558|
559 examine
560{
561 $$ = $1;
562}
563|
f7adfe8e 564 CALL stopaliasing term '(' opt_exp_list ')'
4514e9cd 565{
f7adfe8e 566 $$ = build(O_CALL, $3, $5);
4514e9cd 567}
ceac4b29
AF
568|
569 DEBUG INT
570{
571 $$ = build(O_DEBUG, $2);
572}
4514e9cd
ML
573|
574 DUMP
575{
576 $$ = build(O_DUMP);
577}
578|
579 STATUS
580{
581 $$ = build(O_STATUS);
582}
583;
584alias_command:
f7adfe8e 585 alias name something
4514e9cd 586{
f7adfe8e 587 $$ = build(O_ALIAS, build(O_NAME, $2), $3);
4514e9cd
ML
588}
589|
f7adfe8e 590 alias name
4514e9cd
ML
591{
592 $$ = build(O_ALIAS, build(O_NAME, $2), nil);
593}
594|
f7adfe8e 595 alias
4514e9cd
ML
596{
597 $$ = build(O_ALIAS, nil, nil);
598}
599;
f7adfe8e
SL
600
601alias:
602 ALIAS stopaliasing
603;
604
605stopaliasing:
606 /* empty */
607{
608 stopaliasing();
609}
610;
611
4514e9cd 612trace:
f7adfe8e 613 TRACE stopaliasing
4514e9cd
ML
614{
615 $$ = O_TRACE;
616}
617|
f7adfe8e 618 TRACEI stopaliasing
4514e9cd
ML
619{
620 $$ = O_TRACEI;
621}
622;
623stop:
f7adfe8e 624 STOP stopaliasing
4514e9cd
ML
625{
626 $$ = O_STOP;
627}
628|
f7adfe8e 629 STOPI stopaliasing
4514e9cd
ML
630{
631 $$ = O_STOPI;
632}
633;
634what:
635 exp
636{
637 $$ = $1;
638}
639|
640 STRING ':' line_number
641{
642 $$ = build(O_QLINE, build(O_SCON, $1), $3);
643}
644;
645where:
646 IN term
647{
648 $$ = $2;
649}
650|
651 AT line_number
652{
653 $$ = build(O_QLINE, build(O_SCON, cursource), $2);
654}
655|
656 AT STRING ':' line_number
657{
658 $$ = build(O_QLINE, build(O_SCON, $2), $4);
659}
660;
661filename:
662 NAME
663{
664 $$ = ident($1);
665}
666;
667opt_filename:
668 /* empty */
669{
670 $$ = nil;
671}
672|
673 filename
674{
675 $$ = $1;
676}
677;
f11c3b2b
ML
678opt_exp_list:
679 exp_list
4514e9cd 680{
f11c3b2b 681 $$ = $1;
4514e9cd
ML
682}
683|
f11c3b2b 684 /* empty */
4514e9cd 685{
f11c3b2b 686 $$ = nil;
4514e9cd
ML
687}
688;
689list_command:
f7adfe8e 690 list
4514e9cd
ML
691{
692 $$ = build(O_LIST,
693 build(O_LCON, (long) cursrcline),
694 build(O_LCON, (long) cursrcline + 9)
695 );
696}
697|
f7adfe8e 698 list line_number
4514e9cd
ML
699{
700 $$ = build(O_LIST, $2, $2);
701}
702|
f7adfe8e 703 list line_number ',' line_number
4514e9cd
ML
704{
705 $$ = build(O_LIST, $2, $4);
706}
707|
f7adfe8e 708 list symbol
4514e9cd 709{
f7adfe8e 710 $$ = build(O_LIST, $2, nil);
4514e9cd
ML
711}
712;
f7adfe8e
SL
713
714list:
715 LIST stopaliasing
2fd0f574 716;
f7adfe8e 717
4514e9cd
ML
718line_number:
719 INT
720{
721 $$ = build(O_LCON, $1);
722}
723|
724 '$'
725{
726 $$ = build(O_LCON, (long) LASTLINE);
727}
728;
729examine:
730 address '/' count mode
731{
732 $$ = build(O_EXAMINE, $4, $1, nil, $3);
733}
734|
735 address ',' address '/' mode
736{
737 $$ = build(O_EXAMINE, $5, $1, $3, 0);
738}
739|
50edb230 740 '/' stopaliasing count mode
4514e9cd 741{
50edb230 742 $$ = build(O_EXAMINE, $4, build(O_LCON, (long) prtaddr), nil, $3);
4514e9cd 743}
3f80f200
ML
744|
745 address '=' mode
746{
747 $$ = build(O_EXAMINE, $3, $1, nil, 0);
748}
4514e9cd
ML
749;
750address:
50edb230 751 INT stopaliasing
4514e9cd
ML
752{
753 $$ = build(O_LCON, $1);
754}
755|
50edb230 756 '&' stopaliasing term
4514e9cd 757{
50edb230 758 $$ = amper($3);
4514e9cd
ML
759}
760|
761 address '+' address
762{
763 $$ = build(O_ADD, $1, $3);
764}
765|
766 address '-' address
767{
768 $$ = build(O_SUB, $1, $3);
769}
770|
771 address '*' address
772{
773 $$ = build(O_MUL, $1, $3);
774}
775|
50edb230 776 '*' stopaliasing address %prec UNARYSIGN
4514e9cd 777{
50edb230 778 $$ = build(O_INDIR, $3);
4514e9cd
ML
779}
780|
50edb230 781 '(' stopaliasing exp ')'
4514e9cd 782{
50edb230 783 $$ = $3;
4514e9cd
ML
784}
785;
786count:
787 /* empty */
788{
789 $$ = 1;
790}
791|
792 INT
793{
794 $$ = $1;
795}
796;
797mode:
798 name
799{
800 $$ = ident($1);
801 curformat = $$;
802}
803|
804 /* empty */
805{
806 $$ = curformat;
807}
808;
809opt_cond:
810 /* empty */
811{
812 $$ = nil;
813}
814|
815 IF boolean_exp
816{
817 $$ = $2;
818}
819;
820exp_list:
821 exp
822{
823 $$ = build(O_COMMA, $1, nil);
824}
825|
826 exp ',' exp_list
827{
828 $$ = build(O_COMMA, $1, $3);
829}
830;
831exp:
832 term
833{
834 $$ = build(O_RVAL, $1);
835}
836|
837 constant
838{
839 $$ = $1;
840}
3f80f200 841|
2fd0f574 842 exp '\\' opt_qual_symbol
3f80f200
ML
843{
844 $$ = build(O_TYPERENAME, $1, $3);
845}
4514e9cd
ML
846|
847 '+' exp %prec UNARYSIGN
848{
849 $$ = $2;
850}
851|
852 '-' exp %prec UNARYSIGN
853{
854 $$ = build(O_NEG, $2);
855}
856|
857 '&' exp %prec UNARYSIGN
858{
859 $$ = amper($2);
860}
861|
862 exp '+' exp
863{
864 $$ = build(O_ADD, $1, $3);
865}
866|
867 exp '-' exp
868{
869 $$ = build(O_SUB, $1, $3);
870}
871|
872 exp '*' exp
873{
874 $$ = build(O_MUL, $1, $3);
875}
876|
877 exp '/' exp
878{
879 $$ = build(O_DIVF, $1, $3);
880}
881|
882 exp DIV exp
883{
884 $$ = build(O_DIV, $1, $3);
885}
886|
887 exp MOD exp
888{
889 $$ = build(O_MOD, $1, $3);
890}
891|
892 exp AND exp
893{
894 $$ = build(O_AND, $1, $3);
895}
896|
897 exp OR exp
898{
899 $$ = build(O_OR, $1, $3);
900}
901|
902 exp '<' exp
903{
904 $$ = build(O_LT, $1, $3);
905}
906|
907 exp '<' '=' exp
908{
909 $$ = build(O_LE, $1, $4);
910}
911|
912 exp '>' exp
913{
914 $$ = build(O_GT, $1, $3);
915}
916|
917 exp '>' '=' exp
918{
919 $$ = build(O_GE, $1, $4);
920}
921|
922 exp '=' exp
923{
924 $$ = build(O_EQ, $1, $3);
925}
926|
927 exp '=' '=' exp
928{
929 $$ = build(O_EQ, $1, $4);
930}
931|
932 exp '<' '>' exp
933{
934 $$ = build(O_NE, $1, $4);
935}
936|
937 exp '!' '=' exp
938{
939 $$ = build(O_NE, $1, $4);
940}
941|
942 '(' exp ')'
943{
944 $$ = $2;
945}
946;
947term:
948 symbol
949{
950 $$ = $1;
951}
952|
953 term '[' exp_list ']'
954{
955 $$ = subscript($1, $3);
956}
957|
958 term '.' name
959{
960 $$ = dot($1, $3);
961}
962|
963 term ARROW name
964{
965 $$ = dot($1, $3);
966}
967|
968 '*' term %prec UNARYSIGN
969{
970 $$ = build(O_INDIR, $2);
971}
972|
973 '*' '(' exp ')' %prec UNARYSIGN
974{
975 $$ = build(O_INDIR, $3);
976}
977|
978 term '^' %prec UNARYSIGN
979{
980 $$ = build(O_INDIR, $1);
981}
982|
983 '#' term %prec UNARYSIGN
984{
985 $$ = concrete($2);
986}
2fd0f574
SL
987|
988 '#' '(' exp ')' %prec UNARYSIGN
989{
990 $$ = concrete($3);
991}
4514e9cd 992|
f11c3b2b 993 term '(' opt_exp_list ')'
4514e9cd
ML
994{
995 $$ = build(O_CALL, $1, $3);
996}
997;
998boolean_exp:
999 exp
1000{
1001 chkboolean($1);
1002 $$ = $1;
1003}
1004;
1005constant:
1006 INT
1007{
1008 $$ = build(O_LCON, $1);
1009}
1010|
1011 REAL
1012{
1013 $$ = build(O_FCON, $1);
1014}
1015|
1016 STRING
1017{
1018 $$ = build(O_SCON, $1);
1019}
1020;
2fd0f574
SL
1021opt_qual_symbol:
1022 symbol
1023{
1024 $$ = $1;
1025}
1026|
1027 opt_qual_symbol '.' name
1028{
1029 $$ = dot($1, $3);
1030}
1031;
4514e9cd
ML
1032symbol:
1033 name
1034{
1035 $$ = build(O_SYM, which($1));
1036}
2fd0f574
SL
1037|
1038 '.' name
1039{
1040 $$ = dot(build(O_SYM, program), $2);
1041}
4514e9cd
ML
1042;
1043name:
1044 NAME
1045{
1046 $$ = $1;
1047}
1048|
1049 keyword
1050{
1051 $$ = $1;
1052}
1053keyword:
ceac4b29 1054 ALIAS | AND | ASSIGN | AT | CALL | CATCH | CONT | DEBUG | DELETE | DIV |
2fd0f574
SL
1055 DOWN | DUMP | EDIT | FILE | FUNC | GRIPE | HELP | IGNORE | IN | LIST |
1056 MOD | NEXT | NEXTI | NIL | NOT | OR | PRINT | PSYM | QUIT |
1057 RERUN | RETURN | RUN | SH | SKIP | SOURCE | STATUS | STEP | STEPI |
1058 STOP | STOPI | TRACE | TRACEI | UP |
229b6aca 1059 USE | WHATIS | WHEN | WHERE | WHEREIS | WHICH
4514e9cd 1060;
f7adfe8e
SL
1061
1062something:
1063 NAME
1064{
1065 $$ = build(O_NAME, $1);
1066}
1067|
1068 keyword
1069{
1070 $$ = build(O_NAME, $1);
1071}
1072|
1073 STRING
1074{
1075 $$ = build(O_SCON, $1);
1076}
1077;