OOO330
[LibreOffice.git] / soltools / mkdepend / ifparser.h
blobd832bfbcb6d7f0138ecf17ba013ebd028f0b986d
1 /*
2 * $XConsortium: ifparser.h,v 1.1 92/08/22 13:05:39 rws Exp $
4 * Copyright 1992 Network Computing Devices, Inc.
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.
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.
24 * Author: Jim Fulton
25 * Network Computing Devices, Inc.
27 * Simple if statement processor
29 * This module can be used to evaluate string representations of C language
30 * if constructs. It accepts the following grammar:
32 * EXPRESSION := VALUE
33 * | VALUE BINOP EXPRESSION
35 * VALUE := '(' EXPRESSION ')'
36 * | '!' VALUE
37 * | '-' VALUE
38 * | 'defined' '(' variable ')'
39 * | variable
40 * | number
42 * BINOP := '*' | '/' | '%'
43 * | '+' | '-'
44 * | '<<' | '>>'
45 * | '<' | '>' | '<=' | '>='
46 * | '==' | '!='
47 * | '&' | '|'
48 * | '&&' | '||'
50 * The normal C order of precidence is supported.
53 * External Entry Points:
55 * ParseIfExpression parse a string for #if
58 #include <stdio.h>
60 typedef int Bool;
61 #define False 0
62 #define True 1
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;
74 const char *ParseIfExpression (/* IfParser *, const char *, int * */);