home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mdepsrc.zip / ifparser.h < prev    next >
C/C++ Source or Header  |  1996-12-10  |  3KB  |  77 lines

  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. #define const /**/
  61. typedef int Bool;
  62. #define False 0
  63. #define True 1
  64.  
  65. typedef struct _if_parser {
  66.     struct {                /* functions */
  67.     char *(*handle_error) (/* struct _if_parser *, const char *,
  68.                  const char * */);
  69.     int (*eval_variable) (/* struct _if_parser *, const char *, int */);
  70.     int (*eval_defined) (/* struct _if_parser *, const char *, int */);
  71.     } funcs;
  72.     char *data;
  73. } IfParser;
  74.  
  75. char *ParseIfExpression (/* IfParser *, const char *, int * */);
  76.  
  77.