1*2e8d1edaSArun Thomas /* $NetBSD: expr.c,v 1.19 2009/10/26 21:11:28 christos Exp $ */
2*2e8d1edaSArun Thomas /* $OpenBSD: expr.c,v 1.17 2006/01/20 23:10:19 espie Exp $ */
3*2e8d1edaSArun Thomas /*
4*2e8d1edaSArun Thomas * Copyright (c) 2004 Marc Espie <espie@cvs.openbsd.org>
5*2e8d1edaSArun Thomas *
6*2e8d1edaSArun Thomas * Permission to use, copy, modify, and distribute this software for any
7*2e8d1edaSArun Thomas * purpose with or without fee is hereby granted, provided that the above
8*2e8d1edaSArun Thomas * copyright notice and this permission notice appear in all copies.
9*2e8d1edaSArun Thomas *
10*2e8d1edaSArun Thomas * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11*2e8d1edaSArun Thomas * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12*2e8d1edaSArun Thomas * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13*2e8d1edaSArun Thomas * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14*2e8d1edaSArun Thomas * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15*2e8d1edaSArun Thomas * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16*2e8d1edaSArun Thomas * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17*2e8d1edaSArun Thomas */
18*2e8d1edaSArun Thomas #if HAVE_NBTOOL_CONFIG_H
19*2e8d1edaSArun Thomas #include "nbtool_config.h"
20*2e8d1edaSArun Thomas #endif
21*2e8d1edaSArun Thomas #include <sys/cdefs.h>
22*2e8d1edaSArun Thomas __RCSID("$NetBSD: expr.c,v 1.19 2009/10/26 21:11:28 christos Exp $");
23*2e8d1edaSArun Thomas #include <stdint.h>
24*2e8d1edaSArun Thomas #include <stdio.h>
25*2e8d1edaSArun Thomas #include <stddef.h>
26*2e8d1edaSArun Thomas #include "mdef.h"
27*2e8d1edaSArun Thomas #include "extern.h"
28*2e8d1edaSArun Thomas
29*2e8d1edaSArun Thomas int32_t end_result;
30*2e8d1edaSArun Thomas const char *copy_toeval;
31*2e8d1edaSArun Thomas
32*2e8d1edaSArun Thomas extern void yy_scan_string(const char *);
33*2e8d1edaSArun Thomas extern int yyparse(void);
34*2e8d1edaSArun Thomas extern int yyerror(const char *);
35*2e8d1edaSArun Thomas
36*2e8d1edaSArun Thomas int
yyerror(const char * msg)37*2e8d1edaSArun Thomas yyerror(const char *msg)
38*2e8d1edaSArun Thomas {
39*2e8d1edaSArun Thomas fprintf(stderr, "m4: %s in expr %s\n", msg, copy_toeval);
40*2e8d1edaSArun Thomas return(0);
41*2e8d1edaSArun Thomas }
42*2e8d1edaSArun Thomas
43*2e8d1edaSArun Thomas int
expr(const char * toeval)44*2e8d1edaSArun Thomas expr(const char *toeval)
45*2e8d1edaSArun Thomas {
46*2e8d1edaSArun Thomas copy_toeval = toeval;
47*2e8d1edaSArun Thomas yy_scan_string(toeval);
48*2e8d1edaSArun Thomas yyparse();
49*2e8d1edaSArun Thomas return end_result;
50*2e8d1edaSArun Thomas }
51