1 /* $OpenBSD: keynote-ver.y,v 1.10 2004/06/29 11:35:56 msf Exp $ */ 2 /* 3 * The author of this code is Angelos D. Keromytis (angelos@dsl.cis.upenn.edu) 4 * 5 * This code was written by Angelos D. Keromytis in Philadelphia, PA, USA, 6 * in April-May 1998 7 * 8 * Copyright (C) 1998, 1999 by Angelos D. Keromytis. 9 * 10 * Permission to use, copy, and modify this software with or without fee 11 * is hereby granted, provided that this entire notice is included in 12 * all copies of any software which is or includes a copy or 13 * modification of this software. 14 * 15 * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR 16 * IMPLIED WARRANTY. IN PARTICULAR, THE AUTHORS MAKES NO 17 * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE 18 * MERCHANTABILITY OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR 19 * PURPOSE. 20 */ 21 %union { 22 struct s { 23 char *string; 24 } s; 25 }; 26 %type <s.string> STRING VSTRING 27 %token STRING VSTRING EQ 28 %nonassoc EQ 29 %start program 30 %{ 31 32 #include <sys/types.h> 33 34 #include <regex.h> 35 #include <stdio.h> 36 #include <stdlib.h> 37 #include <string.h> 38 39 #include "header.h" 40 #include "keynote.h" 41 %} 42 %% 43 44 program: expr 45 | STRING { if (kn_add_authorizer(sessid, $1) != 0) 46 return keynote_errno; 47 free($1); 48 } 49 50 expr: VSTRING EQ STRING { int i = kn_add_action(sessid, $1, $3, 0); 51 52 if (i != 0) 53 return i; 54 free($1); 55 free($3); 56 } 57 | VSTRING EQ STRING { int i = kn_add_action(sessid, $1, $3, 0); 58 59 if (i != 0) 60 return i; 61 free($1); 62 free($3); 63 } expr 64 %% 65 void 66 kverror(char *s) 67 {} 68