From: Carl Worth Date: Thu, 8 Dec 2005 14:48:50 +0000 (+0000) Subject: 2005-12-08 Carl Worth X-Git-Url: https://git.cworth.org/git?p=ttt;a=commitdiff_plain;h=5ae1f2d980cc2bc30138c3e13d04f4e068f34911 2005-12-08 Carl Worth * src/Makefile.am: Fix rule to auto-generate ttt-lex.h. * src/ttt-lex.h: Remove generated file from revision control. * src/ttt-lex.l: Add copyright/license blurb. * src/ttt-lex.l: * src/ttt-client.c: (yy_init_globals), (use_yy_init_globals): Shut off some annoying compiler warnings due to flex bugs (only one still remains). --- diff --git a/ChangeLog b/ChangeLog index 6a8bdf4..e553a92 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2005-12-08 Carl Worth + + * src/Makefile.am: Fix rule to auto-generate ttt-lex.h. + + * src/ttt-lex.h: Remove generated file from revision control. + + * src/ttt-lex.l: Add copyright/license blurb. + + * src/ttt-lex.l: + * src/ttt-client.c: (yy_init_globals), (use_yy_init_globals): + Shut off some annoying compiler warnings due to flex bugs (only + one still remains). + 2005-12-07 Richard D. Worth * PROTOCOL: Remove unused error NOT_IN_GAME. Add error diff --git a/src/Makefile.am b/src/Makefile.am index 9ca2e53..41756f9 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -9,11 +9,16 @@ ttt_common_sources = \ ttt-error.c \ ttt-error.h \ ttt-lex.l \ + ttt-lex.h \ ttt-socket.c \ ttt-socket.h \ x.c \ x.h +AM_LFLAGS = --header=ttt-lex.h -Cr +ttt-lex.h: ttt-lex.l + $(SHELL) $(YLWRAP) $< $@ $@ -- $(LEXCOMPILE) + ttt_client_SOURCES = \ $(ttt_common_sources) \ ttt.c @@ -33,7 +38,6 @@ ttt_curses_client_SOURCES = \ ttt-curses-client.c AM_CFLAGS = $(WARN_CFLAGS) $(TTT_CFLAGS) -AM_LFLAGS = --header-file=ttt-lex.h -Cr ttt_client_LDFLAGS = $(TTT_LIBS) ttt_server_LDFLAGS = $(TTT_LIBS) -lpthread test_board_LDFLAGS = $(TTT_LIBS) diff --git a/src/ttt-client.c b/src/ttt-client.c index 7797090..e68f70c 100644 --- a/src/ttt-client.c +++ b/src/ttt-client.c @@ -20,15 +20,15 @@ */ #include "ttt-client.h" - -#define YY_DECL int yylex (yyscan_t yyscanner, ttt_token_t *token) - #include "ttt-error.h" -#include "ttt-lex.h" #include "ttt-server.h" #include "ttt-socket.h" #include "ttt-token.h" +#define YY_DECL int yylex (yyscan_t yyscanner, ttt_token_t *token) +#include "ttt-lex.h" +YY_DECL; + struct _ttt_client { pthread_mutex_t mutex; pthread_t thread; @@ -731,3 +731,9 @@ ttt_client_get_num_wins (ttt_client_t *client) { return client->num_wins; } + +/* This is just to keep the compiler quiet about a function declared + * static but never defined. Just an annoying bug in flex's output. */ +static int yy_init_globals (yyscan_t yyscanner) {return 0;} +void use_yy_init_globals (void); +void use_yy_init_globals (void) {yyscan_t scan; yy_init_globals(scan);} diff --git a/src/ttt-lex.h b/src/ttt-lex.h deleted file mode 100644 index 1f98457..0000000 --- a/src/ttt-lex.h +++ /dev/null @@ -1,322 +0,0 @@ -#ifndef yyHEADER_H -#define yyHEADER_H 1 -#define yyIN_HEADER 1 - -#line 6 "ttt-lex.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 5 -#define YY_FLEX_SUBMINOR_VERSION 31 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#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 -#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; -#endif /* ! C99 */ - -/* 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 - -#endif /* ! FLEXINT_H */ - -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -#if __STDC__ - -#define YY_USE_CONST - -#endif /* __STDC__ */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#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 - -int yylex_init (yyscan_t* scanner); - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -/* The following is because we cannot portably get our hands on size_t - * (without autoconf's help, which isn't available because we want - * flex-generated scanners to compile on their own). - */ - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef unsigned int 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. - */ - yy_size_t 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 (yyconst char *yy_str ,yyscan_t yyscanner ); -YY_BUFFER_STATE yy_scan_bytes (yyconst 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(n) 1 -#define YY_SKIP_YYWRAP - -#define yytext_ptr yytext_r - -#ifdef YY_HEADER_EXPORT_START_CONDITIONS -#define INITIAL 0 -#define STRING 1 - -#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 - -static int yy_init_globals (yyscan_t yyscanner ); - -/* 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 ); - -/* 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 *,yyconst char *,int ,yyscan_t yyscanner); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); -#endif - -#ifndef YY_NO_INPUT - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#define YY_READ_BUF_SIZE 8192 -#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 (yyscan_t yyscanner); - -#define YY_DECL int yylex (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 yytext_ptr -#undef YY_DO_BEFORE_ACTION - -#ifdef YY_DECL_IS_OURS -#undef YY_DECL_IS_OURS -#undef YY_DECL -#endif -#line 65 "ttt-lex.l" - -#line 321 "ttt-lex.h" -#undef yyIN_HEADER -#endif /* yyHEADER_H */ diff --git a/src/ttt-lex.l b/src/ttt-lex.l index 06685c4..9720efb 100644 --- a/src/ttt-lex.l +++ b/src/ttt-lex.l @@ -1,3 +1,24 @@ + /* ttt-lex.l - flex-based lexical analyzer + * + * Copyright © 2005 Carl Worth + * + * 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 2, 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, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * Author: Carl Worth + */ + /* Definitions */ %option reentrant @@ -7,8 +28,13 @@ #include "ttt-token.h" #define YY_DECL int yylex (yyscan_t yyscanner, ttt_token_t *token) - #define STRING_BUF_SIZE 8000 + + /* Shut off some compiler warnings due to annoying flex bugs. */ +YY_DECL; +int yyget_column (yyscan_t yyscanner); +void yyset_column (int column_no , yyscan_t yyscanner); + %} %x STRING @@ -23,6 +49,11 @@ \r\n { token->type = TTT_TOKEN_TYPE_NEWLINE; return token->type; + + /* This dead code is just to shut off a + * compiler warning due to an annoying flex + * bug. */ + unput('?'); } \" {