xref: /freebsd/bin/sh/arith_yacc.h (revision b3e7694832e81d7a904a10f525f8797b753bf0d3)
16262b84eSJilles Tjoelker /*-
26262b84eSJilles Tjoelker  * Copyright (c) 1993
36262b84eSJilles Tjoelker  *	The Regents of the University of California.  All rights reserved.
46262b84eSJilles Tjoelker  * Copyright (c) 2007
56262b84eSJilles Tjoelker  *	Herbert Xu <herbert@gondor.apana.org.au>.  All rights reserved.
66262b84eSJilles Tjoelker  *
76262b84eSJilles Tjoelker  * This code is derived from software contributed to Berkeley by
86262b84eSJilles Tjoelker  * Kenneth Almquist.
96262b84eSJilles Tjoelker  *
106262b84eSJilles Tjoelker  * Redistribution and use in source and binary forms, with or without
116262b84eSJilles Tjoelker  * modification, are permitted provided that the following conditions
126262b84eSJilles Tjoelker  * are met:
136262b84eSJilles Tjoelker  * 1. Redistributions of source code must retain the above copyright
146262b84eSJilles Tjoelker  *    notice, this list of conditions and the following disclaimer.
156262b84eSJilles Tjoelker  * 2. Redistributions in binary form must reproduce the above copyright
166262b84eSJilles Tjoelker  *    notice, this list of conditions and the following disclaimer in the
176262b84eSJilles Tjoelker  *    documentation and/or other materials provided with the distribution.
186262b84eSJilles Tjoelker  * 3. Neither the name of the University nor the names of its contributors
196262b84eSJilles Tjoelker  *    may be used to endorse or promote products derived from this software
206262b84eSJilles Tjoelker  *    without specific prior written permission.
216262b84eSJilles Tjoelker  *
226262b84eSJilles Tjoelker  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
236262b84eSJilles Tjoelker  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
246262b84eSJilles Tjoelker  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
256262b84eSJilles Tjoelker  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
266262b84eSJilles Tjoelker  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
276262b84eSJilles Tjoelker  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
286262b84eSJilles Tjoelker  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
296262b84eSJilles Tjoelker  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
306262b84eSJilles Tjoelker  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
316262b84eSJilles Tjoelker  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
326262b84eSJilles Tjoelker  * SUCH DAMAGE.
336262b84eSJilles Tjoelker  */
346262b84eSJilles Tjoelker 
356262b84eSJilles Tjoelker #define ARITH_ASS 1
366262b84eSJilles Tjoelker 
376262b84eSJilles Tjoelker #define ARITH_OR 2
386262b84eSJilles Tjoelker #define ARITH_AND 3
396262b84eSJilles Tjoelker #define ARITH_BAD 4
406262b84eSJilles Tjoelker #define ARITH_NUM 5
416262b84eSJilles Tjoelker #define ARITH_VAR 6
426262b84eSJilles Tjoelker #define ARITH_NOT 7
436262b84eSJilles Tjoelker 
446262b84eSJilles Tjoelker #define ARITH_BINOP_MIN 8
456262b84eSJilles Tjoelker #define ARITH_LE 8
466262b84eSJilles Tjoelker #define ARITH_GE 9
476262b84eSJilles Tjoelker #define ARITH_LT 10
486262b84eSJilles Tjoelker #define ARITH_GT 11
496262b84eSJilles Tjoelker #define ARITH_EQ 12
506262b84eSJilles Tjoelker #define ARITH_REM 13
516262b84eSJilles Tjoelker #define ARITH_BAND 14
526262b84eSJilles Tjoelker #define ARITH_LSHIFT 15
536262b84eSJilles Tjoelker #define ARITH_RSHIFT 16
546262b84eSJilles Tjoelker #define ARITH_MUL 17
556262b84eSJilles Tjoelker #define ARITH_ADD 18
566262b84eSJilles Tjoelker #define ARITH_BOR 19
576262b84eSJilles Tjoelker #define ARITH_SUB 20
586262b84eSJilles Tjoelker #define ARITH_BXOR 21
596262b84eSJilles Tjoelker #define ARITH_DIV 22
606262b84eSJilles Tjoelker #define ARITH_NE 23
616262b84eSJilles Tjoelker #define ARITH_BINOP_MAX 24
626262b84eSJilles Tjoelker 
636262b84eSJilles Tjoelker #define ARITH_ASS_MIN 24
646262b84eSJilles Tjoelker #define ARITH_REMASS 24
656262b84eSJilles Tjoelker #define ARITH_BANDASS 25
666262b84eSJilles Tjoelker #define ARITH_LSHIFTASS 26
676262b84eSJilles Tjoelker #define ARITH_RSHIFTASS 27
686262b84eSJilles Tjoelker #define ARITH_MULASS 28
696262b84eSJilles Tjoelker #define ARITH_ADDASS 29
706262b84eSJilles Tjoelker #define ARITH_BORASS 30
716262b84eSJilles Tjoelker #define ARITH_SUBASS 31
726262b84eSJilles Tjoelker #define ARITH_BXORASS 32
736262b84eSJilles Tjoelker #define ARITH_DIVASS 33
746262b84eSJilles Tjoelker #define ARITH_ASS_MAX 34
756262b84eSJilles Tjoelker 
766262b84eSJilles Tjoelker #define ARITH_LPAREN 34
776262b84eSJilles Tjoelker #define ARITH_RPAREN 35
786262b84eSJilles Tjoelker #define ARITH_BNOT 36
796262b84eSJilles Tjoelker #define ARITH_QMARK 37
806262b84eSJilles Tjoelker #define ARITH_COLON 38
816262b84eSJilles Tjoelker 
8222ea47ecSJilles Tjoelker extern const char *arith_buf;
8322ea47ecSJilles Tjoelker 
846262b84eSJilles Tjoelker union yystype {
856262b84eSJilles Tjoelker 	arith_t val;
866262b84eSJilles Tjoelker 	char *name;
876262b84eSJilles Tjoelker };
886262b84eSJilles Tjoelker 
896262b84eSJilles Tjoelker extern union yystype yylval;
906262b84eSJilles Tjoelker 
91*aac5464bSJilles Tjoelker arith_t strtoarith_t(const char *restrict nptr, char **restrict endptr);
926262b84eSJilles Tjoelker int yylex(void);
93