Edit

IABSD.fr/xenocara/util/makedepend/ifparser.h

Branch :

  • Show log

    Commit

  • Author : matthieu
    Date : 2024-04-28 13:25:04
    Hash : 44e1b996
    Message : Update to makedepend 1.0.9

  • util/makedepend/ifparser.h
  • /*
     *
     * Copyright 1992 Network Computing Devices, Inc.
     *
     * Permission to use, copy, modify, and distribute this software and its
     * documentation for any purpose and without fee is hereby granted, provided
     * that the above copyright notice appear in all copies and that both that
     * copyright notice and this permission notice appear in supporting
     * documentation, and that the name of Network Computing Devices may not be
     * used in advertising or publicity pertaining to distribution of the software
     * without specific, written prior permission.  Network Computing Devices makes
     * no representations about the suitability of this software for any purpose.
     * It is provided ``as is'' without express or implied warranty.
     *
     * NETWORK COMPUTING DEVICES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
     * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
     * IN NO EVENT SHALL NETWORK COMPUTING DEVICES BE LIABLE FOR ANY SPECIAL,
     * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
     * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
     * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
     * PERFORMANCE OF THIS SOFTWARE.
     *
     * Author:  Jim Fulton
     *          Network Computing Devices, Inc.
     *
     * Simple if statement processor
     *
     * This module can be used to evaluate string representations of C language
     * if constructs.  It accepts the following grammar:
     *
     *     EXPRESSION	:=	VALUE
     * 			 |	VALUE  BINOP	EXPRESSION
     *			 |	VALUE	'?'	EXPRESSION ':'	EXPRESSION
     *
     *     VALUE		:=	'('  EXPRESSION  ')'
     * 			 |	'!'  VALUE
     * 			 |	'-'  VALUE
     *			 |	'~'  VALUE
     * 			 |	'defined'  '('  variable  ')'
     * 			 |	variable
     * 			 |	number
     *
     *     BINOP		:=	'*'	|  '/'	|  '%'
     * 			 |	'+'	|  '-'
     * 			 |	'<<'	|  '>>'
     * 			 |	'<'	|  '>'	|  '<='  |  '>='
     * 			 |	'=='	|  '!='
     * 			 |	'&'	|  '^'  |  '|'
     * 			 |	'&&'	|  '||'
     *
     * The normal C order of precedence is supported.
     *
     *
     * External Entry Points:
     *
     *     ParseIfExpression		parse a string for #if
     */
    
    #include <stdio.h>
    
    typedef int Bool;
    
    #define False 0
    #define True 1
    
    typedef struct _if_parser {
        struct {                    /* functions */
            const char *(*handle_error)(struct _if_parser *, const char *,
                                        const char *);
            long (*eval_variable)(struct _if_parser *, const char *, int);
            int (*eval_defined)(struct _if_parser *, const char *, int);
        } funcs;
        struct _parse_data *data;
    } IfParser;
    
    const char *ParseIfExpression(IfParser *, const char *, long *);