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