2005-12-08 Carl Worth <cworth@cworth.org>
authorCarl Worth <carl@theworths.org>
Thu, 8 Dec 2005 14:48:50 +0000 (14:48 +0000)
committerCarl Worth <carl@theworths.org>
Thu, 8 Dec 2005 14:48:50 +0000 (14:48 +0000)
        * 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).

ChangeLog
src/Makefile.am
src/ttt-client.c
src/ttt-lex.h [deleted file]
src/ttt-lex.l

index 6a8bdf419e71db66a54364241623e73aebe1e276..e553a92ae3d227bdbdd53cf531c6fb90fe2b0145 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2005-12-08  Carl Worth  <cworth@cworth.org>
+
+       * 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  <richard@theworths.org>
 
        * PROTOCOL: Remove unused error NOT_IN_GAME. Add error
index 9ca2e53198bd8ae6755e37227b84e94fbeea35cc..41756f9a763c2ae8f1d30ea1745454d6fe1cf0ef 100644 (file)
@@ -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)
index 7797090a49b17d94d8467c9c0718c3b49bd78fcc..e68f70ca5cbde835021b053814eec7098ec22ff4 100644 (file)
  */
 
 #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 (file)
index 1f98457..0000000
+++ /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 <stdio.h>
-#include <string.h>
-#include <errno.h>
-#include <stdlib.h>
-
-/* end standard C headers. */
-
-/* flex integer type definitions */
-
-#ifndef FLEXINT_H
-#define FLEXINT_H
-
-/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
-
-#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
-#include <inttypes.h>
-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 <unistd.h>
-#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 */
index 06685c4a178565ed9d969a2dad82296a6ba24f4e..9720efb6188886b46100b8aa63a507438d660970 100644 (file)
@@ -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 <cworth@cworth.org>
+ */
+
   /* 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
 \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('?');
                }
 
 \"             {