2
/* $NetBSD: arith_lex.l,v 1.12 2003/08/07 09:05:30 agc Exp $ */
6
* The Regents of the University of California. All rights reserved.
8
* This code is derived from software contributed to Berkeley by
11
* Redistribution and use in source and binary forms, with or without
12
* modification, are permitted provided that the following conditions
14
* 1. Redistributions of source code must retain the above copyright
15
* notice, this list of conditions and the following disclaimer.
16
* 2. Redistributions in binary form must reproduce the above copyright
17
* notice, this list of conditions and the following disclaimer in the
18
* documentation and/or other materials provided with the distribution.
19
* 3. Neither the name of the University nor the names of its contributors
20
* may be used to endorse or promote products derived from this software
21
* without specific prior written permission.
23
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
37
#include <sys/cdefs.h>
44
static char sccsid[] = "@(#)arith_lex.l 8.3 (Berkeley) 5/4/95";
46
__RCSID("$NetBSD: arith_lex.l,v 1.12 2003/08/07 09:05:30 agc Exp $");
56
extern char *arith_buf, *arith_startbuf;
58
#define YY_INPUT(buf,result,max) \
59
result = (*buf = *arith_buf++) ? 1 : YY_NULL;
66
0x[0-9a-fA-F]+ { yylval = strtol(yytext, 0, 16); return(ARITH_NUM); }
67
0[0-7]* { yylval = strtol(yytext, 0, 8); return(ARITH_NUM); }
68
[1-9][0-9]* { yylval = strtol(yytext, 0, 10); return(ARITH_NUM); }
69
"(" { return(ARITH_LPAREN); }
70
")" { return(ARITH_RPAREN); }
71
"||" { return(ARITH_OR); }
72
"&&" { return(ARITH_AND); }
73
"|" { return(ARITH_BOR); }
74
"^" { return(ARITH_BXOR); }
75
"&" { return(ARITH_BAND); }
76
"==" { return(ARITH_EQ); }
77
"!=" { return(ARITH_NE); }
78
">" { return(ARITH_GT); }
79
">=" { return(ARITH_GE); }
80
"<" { return(ARITH_LT); }
81
"<=" { return(ARITH_LE); }
82
"<<" { return(ARITH_LSHIFT); }
83
">>" { return(ARITH_RSHIFT); }
84
"*" { return(ARITH_MUL); }
85
"/" { return(ARITH_DIV); }
86
"%" { return(ARITH_REM); }
87
"+" { return(ARITH_ADD); }
88
"-" { return(ARITH_SUB); }
89
"~" { return(ARITH_BNOT); }
90
"!" { return(ARITH_NOT); }
91
. { error("arith: syntax error: \"%s\"\n", arith_startbuf); }