xref: /csrg-svn/usr.bin/pascal/src/yyoptions.c (revision 14748)
1789Speter /* Copyright (c) 1979 Regents of the University of California */
2789Speter 
3*14748Sthien #ifndef lint
4*14748Sthien static	char sccsid[] = "@(#)yyoptions.c 1.2 08/19/83";
5*14748Sthien #endif
6789Speter 
7789Speter #include "whoami.h"
8789Speter #include "0.h"
9*14748Sthien #include "tree_ty.h"	/* must be included for yy.h */
10789Speter #include "yy.h"
11789Speter 
12789Speter /*
13789Speter  * Options processes the option
14789Speter  * strings which can appear in
15789Speter  * comments and returns the next character.
16789Speter  */
17789Speter options()
18789Speter {
19*14748Sthien 	register c;
20*14748Sthien #ifdef PI0
21*14748Sthien 	register ch;
22*14748Sthien #endif
23789Speter 	register char *optp;
24789Speter 
25789Speter 	c = readch();
26789Speter 	if (c != '$')
27789Speter 		return (c);
28789Speter 	do {
29*14748Sthien 		c = readch();
30*14748Sthien #		ifdef PI0
31*14748Sthien 		ch = c;
32*14748Sthien #		endif
33789Speter 		switch (c) {
34789Speter 			case 'b':
35789Speter 				optp = &opt( 'b' );
36789Speter 				c = readch();
37789Speter 				if (!digit(c))
38789Speter 					return (c);
39789Speter 				*optp = c - '0';
40789Speter 				c = readch();
41789Speter 				break;
42789Speter #		    ifdef PC
43789Speter 			case 'C':
44789Speter 				    /*
45789Speter 				     *	C is a replacement for t, fake it.
46789Speter 				     */
47789Speter 				c = 't';
48789Speter 				/* and fall through */
49789Speter 			case 'g':
50789Speter #		    endif PC
51789Speter 			case 'k':
52789Speter 			case 'l':
53789Speter 			case 'n':
54789Speter 			case 'p':
55789Speter 			case 's':
56789Speter 			case 't':
57789Speter 			case 'u':
58789Speter 			case 'w':
59789Speter 			case 'z':
60789Speter 				optp = &opt( c );
61789Speter 				c = readch();
62789Speter 				if (c == '+') {
63789Speter 					*optp = 1;
64789Speter 					c = readch();
65789Speter 				} else if (c == '-') {
66789Speter 					*optp = 0;
67789Speter 					c = readch();
68789Speter 				} else {
69789Speter 					return (c);
70789Speter 				}
71789Speter 				break;
72789Speter 			default:
73789Speter 				    return (c);
74789Speter 			}
75789Speter #ifdef PI0
76789Speter 		send(ROSET, ch, *optp);
77789Speter #endif
78789Speter 	} while (c == ',');
79789Speter 	if ( opt( 'u' ) )
80789Speter 		setuflg();
81789Speter 	return (c);
82789Speter }
83