xref: /aoo42x/main/soltools/mkdepend/ifparser.h (revision cdf0e10c)
1 /*
2  * $XConsortium: ifparser.h,v 1.1 92/08/22 13:05:39 rws Exp $
3  *
4  * Copyright 1992 Network Computing Devices, Inc.
5  *
6  * Permission to use, copy, modify, and distribute this software and its
7  * documentation for any purpose and without fee is hereby granted, provided
8  * that the above copyright notice appear in all copies and that both that
9  * copyright notice and this permission notice appear in supporting
10  * documentation, and that the name of Network Computing Devices may not be
11  * used in advertising or publicity pertaining to distribution of the software
12  * without specific, written prior permission.  Network Computing Devices makes
13  * no representations about the suitability of this software for any purpose.
14  * It is provided ``as is'' without express or implied warranty.
15  *
16  * NETWORK COMPUTING DEVICES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
17  * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
18  * IN NO EVENT SHALL NETWORK COMPUTING DEVICES BE LIABLE FOR ANY SPECIAL,
19  * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
20  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
21  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
22  * PERFORMANCE OF THIS SOFTWARE.
23  *
24  * Author:  Jim Fulton
25  *          Network Computing Devices, Inc.
26  *
27  * Simple if statement processor
28  *
29  * This module can be used to evaluate string representations of C language
30  * if constructs.  It accepts the following grammar:
31  *
32  *     EXPRESSION	:=	VALUE
33  * 			 |	VALUE  BINOP	EXPRESSION
34  *
35  *     VALUE		:=	'('  EXPRESSION  ')'
36  * 			 |	'!'  VALUE
37  * 			 |	'-'  VALUE
38  * 			 |	'defined'  '('  variable  ')'
39  * 			 |	variable
40  * 			 |	number
41  *
42  *     BINOP		:=	'*'	|  '/'	|  '%'
43  * 			 |	'+'	|  '-'
44  * 			 |	'<<'	|  '>>'
45  * 			 |	'<'	|  '>'	|  '<='  |  '>='
46  * 			 |	'=='	|  '!='
47  * 			 |	'&'	|  '|'
48  * 			 |	'&&'	|  '||'
49  *
50  * The normal C order of precidence is supported.
51  *
52  *
53  * External Entry Points:
54  *
55  *     ParseIfExpression		parse a string for #if
56  */
57 
58 #include <stdio.h>
59 
60 typedef int Bool;
61 #define False 0
62 #define True 1
63 
64 typedef struct _if_parser {
65     struct {				/* functions */
66 	const char *(*handle_error) (/* struct _if_parser *, const char *,
67 				 const char * */);
68 	int (*eval_variable) (/* struct _if_parser *, const char *, int */);
69 	int (*eval_defined) (/* struct _if_parser *, const char *, int */);
70     } funcs;
71     char *data;
72 } IfParser;
73 
74 const char *ParseIfExpression (/* IfParser *, const char *, int * */);
75 
76