Annotation of src/usr.bin/m4/parser.y, Revision 1.1
1.1 ! espie 1: %{
! 2: /* $OpenBSD$ */
! 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: #define YYSTYPE int32_t
! 19: extern int32_t end_result;
! 20: extern int yylex(void);
! 21: extern int yyerror(const char *);
! 22: %}
! 23: %token NUMBER
! 24: %left LOR
! 25: %left LAND
! 26: %left '|'
! 27: %left '^'
! 28: %left '&'
! 29: %left EQ NE
! 30: %left '<' LE '>' GE
! 31: %left LSHIFT RSHIFT
! 32: %left '+' '-'
! 33: %left '*' '/' '%'
! 34: %right UMINUS UPLUS '!' '~'
! 35:
! 36: %%
! 37:
! 38: top : expr { end_result = $1; }
! 39: ;
! 40: expr : expr '+' expr { $$ = $1 + $3; }
! 41: | expr '-' expr { $$ = $1 - $3; }
! 42: | expr '*' expr { $$ = $1 * $3; }
! 43: | expr '/' expr { $$ = $1 / $3; }
! 44: | expr '%' expr { $$ = $1 % $3; }
! 45: | expr LSHIFT expr { $$ = $1 << $3; }
! 46: | expr RSHIFT expr { $$ = $1 >> $3; }
! 47: | expr '<' expr { $$ = $1 < $3; }
! 48: | expr '>' expr { $$ = $1 > $3; }
! 49: | expr LE expr { $$ = $1 <= $3; }
! 50: | expr GE expr { $$ = $1 >= $3; }
! 51: | expr EQ expr { $$ = $1 == $3; }
! 52: | expr NE expr { $$ = $1 != $3; }
! 53: | expr '&' expr { $$ = $1 & $3; }
! 54: | expr '^' expr { $$ = $1 ^ $3; }
! 55: | expr '|' expr { $$ = $1 | $3; }
! 56: | expr LAND expr { $$ = $1 && $3; }
! 57: | expr LOR expr { $$ = $1 || $3; }
! 58: | '(' expr ')' { $$ = $2; }
! 59: | '-' expr %prec UMINUS { $$ = -$2; }
! 60: | '+' expr %prec UPLUS { $$ = $2; }
! 61: | '!' expr { $$ = !$2; }
! 62: | '~' expr { $$ = ~$2; }
! 63: | NUMBER
! 64: ;
! 65: %%
! 66: