xref: /csrg-svn/usr.bin/pascal/src/yyoptions.c (revision 62225)
148116Sbostic /*-
2*62225Sbostic  * Copyright (c) 1980, 1993
3*62225Sbostic  *	The Regents of the University of California.  All rights reserved.
448116Sbostic  *
548116Sbostic  * %sccs.include.redist.c%
622209Sdist  */
7789Speter 
814748Sthien #ifndef lint
9*62225Sbostic static char sccsid[] = "@(#)yyoptions.c	8.1 (Berkeley) 06/06/93";
1048116Sbostic #endif /* not lint */
11789Speter 
12789Speter #include "whoami.h"
13789Speter #include "0.h"
1414748Sthien #include "tree_ty.h"	/* must be included for yy.h */
15789Speter #include "yy.h"
16789Speter 
17789Speter /*
18789Speter  * Options processes the option
19789Speter  * strings which can appear in
20789Speter  * comments and returns the next character.
21789Speter  */
options()22789Speter options()
23789Speter {
2414748Sthien 	register c;
2514748Sthien #ifdef PI0
2614748Sthien 	register ch;
2714748Sthien #endif
28789Speter 	register char *optp;
29789Speter 
30789Speter 	c = readch();
31789Speter 	if (c != '$')
32789Speter 		return (c);
33789Speter 	do {
3414748Sthien 		c = readch();
3514748Sthien #		ifdef PI0
3614748Sthien 		ch = c;
3714748Sthien #		endif
38789Speter 		switch (c) {
39789Speter 			case 'b':
40789Speter 				optp = &opt( 'b' );
41789Speter 				c = readch();
42789Speter 				if (!digit(c))
43789Speter 					return (c);
44789Speter 				*optp = c - '0';
45789Speter 				c = readch();
46789Speter 				break;
47789Speter #		    ifdef PC
48789Speter 			case 'C':
49789Speter 				    /*
50789Speter 				     *	C is a replacement for t, fake it.
51789Speter 				     */
52789Speter 				c = 't';
53789Speter 				/* and fall through */
54789Speter 			case 'g':
55789Speter #		    endif PC
56789Speter 			case 'k':
57789Speter 			case 'l':
58789Speter 			case 'n':
59789Speter 			case 'p':
60789Speter 			case 's':
61789Speter 			case 't':
62789Speter 			case 'u':
63789Speter 			case 'w':
64789Speter 			case 'z':
65789Speter 				optp = &opt( c );
66789Speter 				c = readch();
67789Speter 				if (c == '+') {
68789Speter 					*optp = 1;
69789Speter 					c = readch();
70789Speter 				} else if (c == '-') {
71789Speter 					*optp = 0;
72789Speter 					c = readch();
73789Speter 				} else {
74789Speter 					return (c);
75789Speter 				}
76789Speter 				break;
77789Speter 			default:
78789Speter 				    return (c);
79789Speter 			}
80789Speter #ifdef PI0
81789Speter 		send(ROSET, ch, *optp);
82789Speter #endif
83789Speter 	} while (c == ',');
84789Speter 	if ( opt( 'u' ) )
85789Speter 		setuflg();
86789Speter 	return (c);
87789Speter }
88