From: Karel Zak Date: Mon, 6 Nov 2023 20:45:10 +0000 (+0100) Subject: libsmartcols: build filter scanner and parser header files too X-Git-Tag: v2.40-rc1~151^2~18 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cf4f9ec8f2f8e336ff8295db5f0f285093a895aa;p=thirdparty%2Futil-linux.git libsmartcols: build filter scanner and parser header files too * if .c and .h generated in the same time then bison does not duplicate declarations from .h in .c * it seems better to generate everything and exclude header files from git * the patch excludes autotools YACC support, we need reentrant parser with some cool features from bison; autotools assumes POSIX compatibility for YACC (bison -y), we do not need it. Signed-off-by: Karel Zak --- diff --git a/configure.ac b/configure.ac index fffbaa5be9..b6941cd2fa 100644 --- a/configure.ac +++ b/configure.ac @@ -123,8 +123,12 @@ AC_SUBST([sysconfstaticdir]) AC_PROG_CC AM_PROG_CC_C_O AC_PROG_MKDIR_P -AC_PROG_LEX([noyywrap]) AC_PROG_YACC + +# Don't use autotools integrated LEX/YACC support for libsmartcols +AC_PATH_PROG([FLEX], [flex]) +AC_PATH_PROG([BISON], [bison]) + AC_CANONICAL_HOST AC_C_CONST AC_C_VOLATILE diff --git a/libsmartcols/meson.build b/libsmartcols/meson.build index 567e58aa75..25f1a43ebc 100644 --- a/libsmartcols/meson.build +++ b/libsmartcols/meson.build @@ -13,14 +13,14 @@ configure_file( scols_bison = generator( bison, - output : ['@BASENAME@.c'], - arguments : ['@INPUT@', '--output=@OUTPUT@']) + output : ['@BASENAME@.c', '@BASENAME@.h'], + arguments : ['@INPUT@', '--output=@OUTPUT0@', '--header=@OUTPUT1@']) scols_parser_c = scols_bison.process('src/filter-parser.y') scols_flex = generator( flex, - output : ['@BASENAME@.c'], - arguments : ['--outfile=@OUTPUT@', '@INPUT@']) + output : ['@BASENAME@.c', '@BASENAME@.h'], + arguments : ['--outfile=@OUTPUT0@', '--header=@OUTPUT1@', '@INPUT@']) scols_scanner_c = scols_flex.process('src/filter-scanner.l') lib_smartcols_sources = ''' diff --git a/libsmartcols/src/Makemodule.am b/libsmartcols/src/Makemodule.am index d8077e0554..c0f0dfaef9 100644 --- a/libsmartcols/src/Makemodule.am +++ b/libsmartcols/src/Makemodule.am @@ -22,8 +22,8 @@ libsmartcols_la_SOURCES= \ libsmartcols/src/walk.c \ libsmartcols/src/init.c \ \ - libsmartcols/src/filter-parser.y \ - libsmartcols/src/filter-scanner.l \ + libsmartcols/src/filter-parser.c \ + libsmartcols/src/filter-scanner.c \ libsmartcols/src/filter-parser.h \ libsmartcols/src/filter-scanner.h \ \ @@ -32,18 +32,18 @@ libsmartcols_la_SOURCES= \ libsmartcols/src/filter-expr.c BUILT_SOURCES += libsmartcols/src/filter-parser.c \ - libsmartcols/src/filter-scanner.c + libsmartcols/src/filter-parser.h \ + libsmartcols/src/filter-scanner.c \ + libsmartcols/src/filter-scanner.h +EXTRA_DIST += libsmartcols/src/filter-parser.y \ + libsmartcols/src/filter-scanner.l -# Scanner and parser header files are maintained in git and generated -# manually by only if necessary. -# -libsmartcols/src/filter-scanner.h: libsmartcols/src/filter-scanner.l - $(AM_V_LEX) $(LEX) --header-file=$@ $< - -libsmartcols/src/filter-parser.h: libsmartcols/src/filter-parser.y - $(AM_V_YACC) $(YACC) --header=$@ $< +libsmartcols/src/filter-parser.h libsmartcols/src/filter-parser.c: libsmartcols/src/filter-parser.y libsmartcols/src/filter-scanner.h + $(AM_V_YACC) $(BISON) $< --output=${basename $@}.c --header=${basename $@}.h +libsmartcols/src/filter-scanner.h libsmartcols/src/filter-scanner.c: libsmartcols/src/filter-scanner.l + $(AM_V_LEX) $(FLEX) --header-file=${basename $@}.h --outfile=${basename $@}.c $< libsmartcols_la_LIBADD = $(LDADD) libcommon.la diff --git a/libsmartcols/src/filter-parser.h b/libsmartcols/src/filter-parser.h deleted file mode 100644 index 81eed1fbf5..0000000000 --- a/libsmartcols/src/filter-parser.h +++ /dev/null @@ -1,127 +0,0 @@ -/* A Bison parser, made by GNU Bison 3.8.2. */ - -/* Bison interface for Yacc-like parsers in C - - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, - Inc. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -/* As a special exception, you may create a larger work that contains - part or all of the Bison parser skeleton and distribute that work - under terms of your choice, so long as that work isn't itself a - parser generator using the skeleton or a modified version thereof - as a parser skeleton. Alternatively, if you modify or redistribute - the parser skeleton itself, you may (at your option) remove this - special exception, which will cause the skeleton and the resulting - Bison output files to be licensed under the GNU General Public - License without this special exception. - - This special exception was added by the Free Software Foundation in - version 2.2 of Bison. */ - -/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual, - especially those whose name start with YY_ or yy_. They are - private implementation details that can be changed or removed. */ - -#ifndef YY_YY_LIBSMARTCOLS_SRC_FILTER_PARSER_H_INCLUDED -# define YY_YY_LIBSMARTCOLS_SRC_FILTER_PARSER_H_INCLUDED -/* Debug traces. */ -#ifndef YYDEBUG -# define YYDEBUG 0 -#endif -#if YYDEBUG -extern int yydebug; -#endif -/* "%code requires" blocks. */ -#line 21 "libsmartcols/src/filter-parser.y" - - #include "smartcolsP.h" - -#line 53 "libsmartcols/src/filter-parser.h" - -/* Token kinds. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - enum yytokentype - { - YYEMPTY = -2, - YYEOF = 0, /* "end of file" */ - YYerror = 256, /* error */ - YYUNDEF = 257, /* "invalid token" */ - T_NUMBER = 258, /* T_NUMBER */ - T_STRING = 259, /* T_STRING */ - T_HOLDER = 260, /* T_HOLDER */ - T_FLOAT = 261, /* T_FLOAT */ - T_OR = 262, /* T_OR */ - T_AND = 263, /* T_AND */ - T_EQ = 264, /* T_EQ */ - T_NE = 265, /* T_NE */ - T_LT = 266, /* T_LT */ - T_LE = 267, /* T_LE */ - T_GT = 268, /* T_GT */ - T_GE = 269, /* T_GE */ - T_REG = 270, /* T_REG */ - T_NREG = 271, /* T_NREG */ - T_TRUE = 272, /* T_TRUE */ - T_FALSE = 273, /* T_FALSE */ - T_NEG = 274 /* T_NEG */ - }; - typedef enum yytokentype yytoken_kind_t; -#endif -/* Token kinds. */ -#define YYEMPTY -2 -#define YYEOF 0 -#define YYerror 256 -#define YYUNDEF 257 -#define T_NUMBER 258 -#define T_STRING 259 -#define T_HOLDER 260 -#define T_FLOAT 261 -#define T_OR 262 -#define T_AND 263 -#define T_EQ 264 -#define T_NE 265 -#define T_LT 266 -#define T_LE 267 -#define T_GT 268 -#define T_GE 269 -#define T_REG 270 -#define T_NREG 271 -#define T_TRUE 272 -#define T_FALSE 273 -#define T_NEG 274 - -/* Value type. */ -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED -union YYSTYPE -{ -#line 35 "libsmartcols/src/filter-parser.y" - - unsigned long long param_number; - const char* param_string; - const char* param_name; - long double param_float; - struct filter_node *param; - struct filter_node *expr; - -#line 120 "libsmartcols/src/filter-parser.h" - -}; -typedef union YYSTYPE YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 -# define YYSTYPE_IS_DECLARED 1 -#endif - -#endif /* !YY_YY_LIBSMARTCOLS_SRC_FILTER_PARSER_H_INCLUDED */ diff --git a/libsmartcols/src/filter-parser.y b/libsmartcols/src/filter-parser.y index d9bc2e1b6e..6c32b3f0d2 100644 --- a/libsmartcols/src/filter-parser.y +++ b/libsmartcols/src/filter-parser.y @@ -7,12 +7,13 @@ #endif #include -#include "smartcolsP.h" +#include "smartcolsP.h" #include "filter-parser.h" #include "filter-scanner.h" void yyerror(yyscan_t *locp, struct libscols_filter *fltr, char const *msg); + %} %define api.pure full @@ -22,11 +23,8 @@ void yyerror(yyscan_t *locp, struct libscols_filter *fltr, char const *msg); %define parse.error verbose -/*%header "filter-parser.h"*/ - %code requires { - #include "smartcolsP.h" } /* Elegant way, but not compatible with biron -y (autotools): diff --git a/libsmartcols/src/filter-scanner.h b/libsmartcols/src/filter-scanner.h deleted file mode 100644 index c80c4662a2..0000000000 --- a/libsmartcols/src/filter-scanner.h +++ /dev/null @@ -1,505 +0,0 @@ -#ifndef yyHEADER_H -#define yyHEADER_H 1 -#define yyIN_HEADER 1 - -#line 5 "libsmartcols/src/filter-scanner.h" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -#ifdef yyget_lval -#define yyget_lval_ALREADY_DEFINED -#else -#define yyget_lval yyget_lval -#endif - -#ifdef yyset_lval -#define yyset_lval_ALREADY_DEFINED -#else -#define yyset_lval yyset_lval -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -/* begin standard C++ headers. */ - -/* TODO: this is always defined, so inline it */ -#define yyconst const - -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) -#else -#define yynoreturn -#endif - -/* An opaque pointer. */ -#ifndef YY_TYPEDEF_YY_SCANNER_T -#define YY_TYPEDEF_YY_SCANNER_T -typedef void* yyscan_t; -#endif - -/* For convenience, these vars (plus the bison vars far below) - are macros in the reentrant scanner. */ -#define yyin yyg->yyin_r -#define yyout yyg->yyout_r -#define yyextra yyg->yyextra_r -#define yyleng yyg->yyleng_r -#define yytext yyg->yytext_r -#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) -#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) -#define yy_flex_debug yyg->yy_flex_debug_r - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - int yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -void yyrestart ( FILE *input_file , yyscan_t yyscanner ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size , yyscan_t yyscanner ); -void yy_delete_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); -void yy_flush_buffer ( YY_BUFFER_STATE b , yyscan_t yyscanner ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer , yyscan_t yyscanner ); -void yypop_buffer_state ( yyscan_t yyscanner ); - -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size , yyscan_t yyscanner ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str , yyscan_t yyscanner ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len , yyscan_t yyscanner ); - -void *yyalloc ( yy_size_t , yyscan_t yyscanner ); -void *yyrealloc ( void *, yy_size_t , yyscan_t yyscanner ); -void yyfree ( void * , yyscan_t yyscanner ); - -#define yywrap(yyscanner) (/*CONSTCOND*/1) -#define YY_SKIP_YYWRAP - -#define yytext_ptr yytext_r - -#ifdef YY_HEADER_EXPORT_START_CONDITIONS -#define INITIAL 0 - -#endif - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -int yylex_init (yyscan_t* scanner); - -int yylex_init_extra ( YY_EXTRA_TYPE user_defined, yyscan_t* scanner); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int yylex_destroy ( yyscan_t yyscanner ); - -int yyget_debug ( yyscan_t yyscanner ); - -void yyset_debug ( int debug_flag , yyscan_t yyscanner ); - -YY_EXTRA_TYPE yyget_extra ( yyscan_t yyscanner ); - -void yyset_extra ( YY_EXTRA_TYPE user_defined , yyscan_t yyscanner ); - -FILE *yyget_in ( yyscan_t yyscanner ); - -void yyset_in ( FILE * _in_str , yyscan_t yyscanner ); - -FILE *yyget_out ( yyscan_t yyscanner ); - -void yyset_out ( FILE * _out_str , yyscan_t yyscanner ); - - int yyget_leng ( yyscan_t yyscanner ); - -char *yyget_text ( yyscan_t yyscanner ); - -int yyget_lineno ( yyscan_t yyscanner ); - -void yyset_lineno ( int _line_number , yyscan_t yyscanner ); - -int yyget_column ( yyscan_t yyscanner ); - -void yyset_column ( int _column_no , yyscan_t yyscanner ); - -YYSTYPE * yyget_lval ( yyscan_t yyscanner ); - -void yyset_lval ( YYSTYPE * yylval_param , yyscan_t yyscanner ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap ( yyscan_t yyscanner ); -#else -extern int yywrap ( yyscan_t yyscanner ); -#endif -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int , yyscan_t yyscanner); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * , yyscan_t yyscanner); -#endif - -#ifndef YY_NO_INPUT - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int yylex \ - (YYSTYPE * yylval_param , yyscan_t yyscanner); - -#define YY_DECL int yylex \ - (YYSTYPE * yylval_param , yyscan_t yyscanner) -#endif /* !YY_DECL */ - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - -#undef YY_NEW_FILE -#undef YY_FLUSH_BUFFER -#undef yy_set_bol -#undef yy_new_buffer -#undef yy_set_interactive -#undef YY_DO_BEFORE_ACTION - -#ifdef YY_DECL_IS_OURS -#undef YY_DECL_IS_OURS -#undef YY_DECL -#endif - -#ifndef yy_create_buffer_ALREADY_DEFINED -#undef yy_create_buffer -#endif -#ifndef yy_delete_buffer_ALREADY_DEFINED -#undef yy_delete_buffer -#endif -#ifndef yy_scan_buffer_ALREADY_DEFINED -#undef yy_scan_buffer -#endif -#ifndef yy_scan_string_ALREADY_DEFINED -#undef yy_scan_string -#endif -#ifndef yy_scan_bytes_ALREADY_DEFINED -#undef yy_scan_bytes -#endif -#ifndef yy_init_buffer_ALREADY_DEFINED -#undef yy_init_buffer -#endif -#ifndef yy_flush_buffer_ALREADY_DEFINED -#undef yy_flush_buffer -#endif -#ifndef yy_load_buffer_state_ALREADY_DEFINED -#undef yy_load_buffer_state -#endif -#ifndef yy_switch_to_buffer_ALREADY_DEFINED -#undef yy_switch_to_buffer -#endif -#ifndef yypush_buffer_state_ALREADY_DEFINED -#undef yypush_buffer_state -#endif -#ifndef yypop_buffer_state_ALREADY_DEFINED -#undef yypop_buffer_state -#endif -#ifndef yyensure_buffer_stack_ALREADY_DEFINED -#undef yyensure_buffer_stack -#endif -#ifndef yylex_ALREADY_DEFINED -#undef yylex -#endif -#ifndef yyrestart_ALREADY_DEFINED -#undef yyrestart -#endif -#ifndef yylex_init_ALREADY_DEFINED -#undef yylex_init -#endif -#ifndef yylex_init_extra_ALREADY_DEFINED -#undef yylex_init_extra -#endif -#ifndef yylex_destroy_ALREADY_DEFINED -#undef yylex_destroy -#endif -#ifndef yyget_debug_ALREADY_DEFINED -#undef yyget_debug -#endif -#ifndef yyset_debug_ALREADY_DEFINED -#undef yyset_debug -#endif -#ifndef yyget_extra_ALREADY_DEFINED -#undef yyget_extra -#endif -#ifndef yyset_extra_ALREADY_DEFINED -#undef yyset_extra -#endif -#ifndef yyget_in_ALREADY_DEFINED -#undef yyget_in -#endif -#ifndef yyset_in_ALREADY_DEFINED -#undef yyset_in -#endif -#ifndef yyget_out_ALREADY_DEFINED -#undef yyget_out -#endif -#ifndef yyset_out_ALREADY_DEFINED -#undef yyset_out -#endif -#ifndef yyget_leng_ALREADY_DEFINED -#undef yyget_leng -#endif -#ifndef yyget_text_ALREADY_DEFINED -#undef yyget_text -#endif -#ifndef yyget_lineno_ALREADY_DEFINED -#undef yyget_lineno -#endif -#ifndef yyset_lineno_ALREADY_DEFINED -#undef yyset_lineno -#endif -#ifndef yyget_column_ALREADY_DEFINED -#undef yyget_column -#endif -#ifndef yyset_column_ALREADY_DEFINED -#undef yyset_column -#endif -#ifndef yywrap_ALREADY_DEFINED -#undef yywrap -#endif -#ifndef yyget_lval_ALREADY_DEFINED -#undef yyget_lval -#endif -#ifndef yyset_lval_ALREADY_DEFINED -#undef yyset_lval -#endif -#ifndef yyget_lloc_ALREADY_DEFINED -#undef yyget_lloc -#endif -#ifndef yyset_lloc_ALREADY_DEFINED -#undef yyset_lloc -#endif -#ifndef yyalloc_ALREADY_DEFINED -#undef yyalloc -#endif -#ifndef yyrealloc_ALREADY_DEFINED -#undef yyrealloc -#endif -#ifndef yyfree_ALREADY_DEFINED -#undef yyfree -#endif -#ifndef yytext_ALREADY_DEFINED -#undef yytext -#endif -#ifndef yyleng_ALREADY_DEFINED -#undef yyleng -#endif -#ifndef yyin_ALREADY_DEFINED -#undef yyin -#endif -#ifndef yyout_ALREADY_DEFINED -#undef yyout -#endif -#ifndef yy_flex_debug_ALREADY_DEFINED -#undef yy_flex_debug -#endif -#ifndef yylineno_ALREADY_DEFINED -#undef yylineno -#endif -#ifndef yytables_fload_ALREADY_DEFINED -#undef yytables_fload -#endif -#ifndef yytables_destroy_ALREADY_DEFINED -#undef yytables_destroy -#endif -#ifndef yyTABLES_NAME_ALREADY_DEFINED -#undef yyTABLES_NAME -#endif - -#line 62 "libsmartcols/src/filter-scanner.l" - -#line 503 "libsmartcols/src/filter-scanner.h" -#undef yyIN_HEADER -#endif /* yyHEADER_H */ diff --git a/libsmartcols/src/filter-scanner.l b/libsmartcols/src/filter-scanner.l index 8de686818f..32d6ad7a2f 100644 --- a/libsmartcols/src/filter-scanner.l +++ b/libsmartcols/src/filter-scanner.l @@ -1,4 +1,5 @@ %{ +#include "smartcolsP.h" #include "filter-parser.h" /* define tokens (T_*) */ %} diff --git a/libsmartcols/src/filter.c b/libsmartcols/src/filter.c index 600ed0117b..dccf05cf01 100644 --- a/libsmartcols/src/filter.c +++ b/libsmartcols/src/filter.c @@ -170,10 +170,6 @@ void filter_dump_node(struct ul_jsonwrt *json, struct filter_node *n) } } - - -extern int yyparse(void *scanner, struct libscols_filter *fltr); - /** * scols_filter_parse_string: * @fltr: filter instance