2008-08-01 09:08:51 +04:00
/*
2008-10-27 13:35:07 +03:00
* Copyright ( c ) 2008 Kungliga Tekniska Högskolan
* ( Royal Institute of Technology , Stockholm , Sweden ) .
* All rights reserved .
2008-08-01 09:08:51 +04:00
*
2008-10-27 13:35:07 +03:00
* Redistribution and use in source and binary forms , with or without
* modification , are permitted provided that the following conditions
* are met :
2008-08-01 09:08:51 +04:00
*
2008-10-27 13:35:07 +03:00
* 1. Redistributions of source code must retain the above copyright
* notice , this list of conditions and the following disclaimer .
2008-08-01 09:08:51 +04:00
*
2008-10-27 13:35:07 +03:00
* 2. Redistributions in binary form must reproduce the above copyright
* notice , this list of conditions and the following disclaimer in the
* documentation and / or other materials provided with the distribution .
2008-08-01 09:08:51 +04:00
*
2008-10-27 13:35:07 +03:00
* 3. Neither the name of the Institute nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission .
2008-08-01 09:08:51 +04:00
*
2008-10-27 13:35:07 +03:00
* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ` ` AS IS ' ' AND
* ANY EXPRESS OR IMPLIED WARRANTIES , INCLUDING , BUT NOT LIMITED TO , THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED . IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT , INDIRECT , INCIDENTAL , SPECIAL , EXEMPLARY , OR CONSEQUENTIAL
* DAMAGES ( INCLUDING , BUT NOT LIMITED TO , PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES ; LOSS OF USE , DATA , OR PROFITS ; OR BUSINESS INTERRUPTION )
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY , WHETHER IN CONTRACT , STRICT
* LIABILITY , OR TORT ( INCLUDING NEGLIGENCE OR OTHERWISE ) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE , EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE .
2008-08-01 09:08:51 +04:00
*/
enum hx_expr_op {
2008-10-27 13:35:07 +03:00
op_TRUE ,
2008-08-01 09:08:51 +04:00
op_FALSE ,
op_NOT ,
op_AND ,
op_OR ,
op_COMP ,
comp_EQ ,
comp_NE ,
comp_IN ,
comp_TAILEQ ,
expr_NUMBER ,
expr_STRING ,
expr_FUNCTION ,
expr_VAR ,
expr_WORDS
} ;
struct hx_expr {
enum hx_expr_op op ;
void * arg1 ;
void * arg2 ;
} ;
struct hx_expr_input {
const char * buf ;
size_t length ;
size_t offset ;
struct hx_expr * expr ;
char * error ;
} ;
extern struct hx_expr_input _hx509_expr_input ;
2021-12-24 03:52:32 +03:00
/*
* With bison / flex , the more modern way to allow multiple yacc / lex grammars to
* be linked into a single executable is to use the
*
* bison : - p , - - name - prefix = , PREFIX / , - Dapi . prefix = PREFIX
* flex : - Pprefix , - - prefix = STRING
*
* options , these take care of renaming all the machine - generated global entry
* points , some of which are new . When these options are used " yylex " ,
* " yyparse " , . . . are already defined and our ( potentially incomplete ) attempt
* to do the same conflicts with the " right " new way to handle this . The below
* logic gets us out of the way when the job has already been taken care of by
* the parser - generator .
*/
# if !defined(yylex)
2008-08-01 09:08:51 +04:00
# define yylex _hx509_sel_yylex
2021-12-24 03:52:32 +03:00
# define yywrap _hx509_sel_yywrap
# endif
# if !defined(yyparse)
# define yyparse _hx509_sel_yyparse
2008-08-01 09:08:51 +04:00
# define yyerror _hx509_sel_yyerror
# define yylval _hx509_sel_yylval
# define yychar _hx509_sel_yychar
# define yydebug _hx509_sel_yydebug
# define yynerrs _hx509_sel_yynerrs
2021-12-24 03:52:32 +03:00
# endif
2008-08-01 09:08:51 +04:00
int _hx509_sel_yyparse ( void ) ;
int _hx509_sel_yylex ( void ) ;
2011-07-15 11:10:30 +04:00
void _hx509_sel_yyerror ( const char * ) ;
2008-08-01 09:08:51 +04:00