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