From c05b800f9fda5a72c4bb775d0ffa935d362ef91f Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 8 Dec 2003 14:20:48 -0500 Subject: ERR: Renaming cmListFileLexer.l to cmListFileLexer.in.l to avoid make programs trying to run lex automatically whn building cmListFileLexer.c. --- Source/cmListFileLexer.in.l | 327 ++++++++++++++++++++++++++++++++++++++++++++ Source/cmListFileLexer.l | 327 -------------------------------------------- 2 files changed, 327 insertions(+), 327 deletions(-) create mode 100644 Source/cmListFileLexer.in.l delete mode 100644 Source/cmListFileLexer.l diff --git a/Source/cmListFileLexer.in.l b/Source/cmListFileLexer.in.l new file mode 100644 index 0000000..7878344 --- /dev/null +++ b/Source/cmListFileLexer.in.l @@ -0,0 +1,327 @@ +%{ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile$ + Language: C++ + Date: $Date$ + Version: $Revision$ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +/* + +This file must be translated to C and modified to build everywhere. + +Run flex like this: + + flex -ocmListFileLexer.c cmListFileLexer.l + +Modify cmListFileLexer.c: + - remove TABs + - remove the yyunput function + - add a statement "(void)yyscanner;" to the top of these methods: + yy_fatal_error, yyalloc, yyrealloc, yyfree + +*/ + +/* Disable features we do not need. */ +#define YY_NEVER_INTERACTIVE 1 +#define YY_NO_UNPUT 1 +#define YY_NO_UNISTD_H 1 +#define ECHO + +/* Setup the proper yylex declaration. */ +#define YY_DECL int yylex (yyscan_t yyscanner, cmListFileLexer* lexer) + +/* Disable some warnings. */ +#if defined(_MSC_VER) +# pragma warning ( disable : 4127 ) +# pragma warning ( disable : 4131 ) +# pragma warning ( disable : 4244 ) +# pragma warning ( disable : 4251 ) +# pragma warning ( disable : 4267 ) +# pragma warning ( disable : 4305 ) +# pragma warning ( disable : 4309 ) +# pragma warning ( disable : 4706 ) +# pragma warning ( disable : 4786 ) +#endif + +#include "cmListFileLexer.h" + +/*--------------------------------------------------------------------------*/ +struct cmListFileLexer_s +{ + cmListFileLexer_Token token; + int line; + int column; + int size; + FILE* file; + yyscan_t scanner; +}; + +static void cmListFileLexerSetToken(cmListFileLexer* lexer, const char* text, + int length); +static void cmListFileLexerAppend(cmListFileLexer* lexer, const char* text, + int length); + +/*--------------------------------------------------------------------------*/ +%} + +%option reentrant +%option yylineno +%option noyywrap +%pointer +%x STRING + +%% + +\n { + lexer->token.type = cmListFileLexer_Token_Newline; + cmListFileLexerSetToken(lexer, yytext, yyleng); + ++lexer->line; + lexer->column = 1; + return 1; +} + +#.* { + lexer->column += yyleng; +} + +\( { + lexer->token.type = cmListFileLexer_Token_ParenLeft; + cmListFileLexerSetToken(lexer, yytext, yyleng); + lexer->column += yyleng; + return 1; +} + +\) { + lexer->token.type = cmListFileLexer_Token_ParenRight; + cmListFileLexerSetToken(lexer, yytext, yyleng); + lexer->column += yyleng; + return 1; +} + +[A-Za-z_][A-Za-z0-9_]+ { + lexer->token.type = cmListFileLexer_Token_Identifier; + cmListFileLexerSetToken(lexer, yytext, yyleng); + lexer->column += yyleng; + return 1; +} + +([^ \t\r\n\(\)\"\\]|\\.)+ { + lexer->token.type = cmListFileLexer_Token_ArgumentUnquoted; + cmListFileLexerSetToken(lexer, yytext, yyleng); + lexer->column += yyleng; + return 1; +} + +\" { + lexer->token.type = cmListFileLexer_Token_ArgumentQuoted; + cmListFileLexerSetToken(lexer, "", 0); + lexer->column += yyleng; + BEGIN(STRING); +} + +([^\\\n\"]|\\(.|\n))+ { + cmListFileLexerAppend(lexer, yytext, yyleng); + lexer->column += yyleng; +} + +\n { + cmListFileLexerAppend(lexer, yytext, yyleng); + ++lexer->line; + lexer->column = 1; +} + +\" { + lexer->column += yyleng; + BEGIN(INITIAL); + return 1; +} + +. { + cmListFileLexerAppend(lexer, yytext, yyleng); + lexer->column += yyleng; +} + +[ \t\r] { + lexer->column += yyleng; +} + +. { + lexer->token.type = cmListFileLexer_Token_Error; + cmListFileLexerSetToken(lexer, yytext, yyleng); + lexer->column += yyleng; + return 1; +} + +<> { + lexer->token.type = cmListFileLexer_Token_None; + cmListFileLexerSetToken(lexer, 0, 0); + return 0; +} + +%% + +/*--------------------------------------------------------------------------*/ +void cmListFileLexerSetToken(cmListFileLexer* lexer, const char* text, + int length) +{ + /* Set the token line and column number. */ + lexer->token.line = lexer->line; + lexer->token.column = lexer->column; + + /* Use the same buffer if possible. */ + if(lexer->token.text) + { + if(text && length < lexer->size) + { + strcpy(lexer->token.text, text); + lexer->token.length = length; + return; + } + free(lexer->token.text); + lexer->token.text = 0; + lexer->size = 0; + } + + /* Need to extend the buffer. */ + if(text) + { + lexer->token.text = strdup(text); + lexer->token.length = length; + lexer->size = length+1; + } + else + { + lexer->token.length = 0; + } +} + +/*--------------------------------------------------------------------------*/ +void cmListFileLexerAppend(cmListFileLexer* lexer, const char* text, + int length) +{ + char* temp; + int newSize; + + /* If the appended text will fit in the buffer, do not reallocate. */ + newSize = lexer->token.length + length + 1; + if(lexer->token.text && newSize <= lexer->size) + { + strcpy(lexer->token.text+lexer->token.length, text); + lexer->token.length += length; + return; + } + + /* We need to extend the buffer. */ + temp = malloc(newSize); + if(lexer->token.text) + { + memcpy(temp, lexer->token.text, lexer->token.length); + free(lexer->token.text); + } + memcpy(temp+lexer->token.length, text, length); + temp[lexer->token.length+length] = 0; + lexer->token.text = temp; + lexer->token.length += length; + lexer->size = newSize; +} + +/*--------------------------------------------------------------------------*/ +cmListFileLexer* cmListFileLexer_New() +{ + cmListFileLexer* lexer = (cmListFileLexer*)malloc(sizeof(cmListFileLexer)); + if(!lexer) + { + return 0; + } + memset(lexer, 0, sizeof(*lexer)); + lexer->line = 1; + lexer->column = 1; + return lexer; +} + +/*--------------------------------------------------------------------------*/ +void cmListFileLexer_Delete(cmListFileLexer* lexer) +{ + cmListFileLexer_SetFileName(lexer, 0); + free(lexer); +} + +/*--------------------------------------------------------------------------*/ +int cmListFileLexer_SetFileName(cmListFileLexer* lexer, const char* name) +{ + int result = 1; + if(lexer->file) + { + yylex_destroy(lexer->scanner); + fclose(lexer->file); + lexer->file = 0; + } + if(name) + { + lexer->file = fopen(name, "r"); + if(!lexer->file) + { + result = 0; + } + } + if(lexer->file) + { + yylex_init(&lexer->scanner); + yyset_in(lexer->file, lexer->scanner); + } + return result; +} + +/*--------------------------------------------------------------------------*/ +cmListFileLexer_Token* cmListFileLexer_Scan(cmListFileLexer* lexer) +{ + if(!lexer->file) + { + return 0; + } + if(yylex(lexer->scanner, lexer)) + { + return &lexer->token; + } + else + { + cmListFileLexer_SetFileName(lexer, 0); + return 0; + } +} + +/*--------------------------------------------------------------------------*/ +long cmListFileLexer_GetCurrentLine(cmListFileLexer* lexer) +{ + if(lexer->file) + { + return lexer->line; + } + else + { + return 0; + } +} + +/*--------------------------------------------------------------------------*/ +long cmListFileLexer_GetCurrentColumn(cmListFileLexer* lexer) +{ + if(lexer->file) + { + return lexer->column; + } + else + { + return 0; + } +} diff --git a/Source/cmListFileLexer.l b/Source/cmListFileLexer.l deleted file mode 100644 index 7878344..0000000 --- a/Source/cmListFileLexer.l +++ /dev/null @@ -1,327 +0,0 @@ -%{ -/*========================================================================= - - Program: CMake - Cross-Platform Makefile Generator - Module: $RCSfile$ - Language: C++ - Date: $Date$ - Version: $Revision$ - - Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. - See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - -=========================================================================*/ -/* - -This file must be translated to C and modified to build everywhere. - -Run flex like this: - - flex -ocmListFileLexer.c cmListFileLexer.l - -Modify cmListFileLexer.c: - - remove TABs - - remove the yyunput function - - add a statement "(void)yyscanner;" to the top of these methods: - yy_fatal_error, yyalloc, yyrealloc, yyfree - -*/ - -/* Disable features we do not need. */ -#define YY_NEVER_INTERACTIVE 1 -#define YY_NO_UNPUT 1 -#define YY_NO_UNISTD_H 1 -#define ECHO - -/* Setup the proper yylex declaration. */ -#define YY_DECL int yylex (yyscan_t yyscanner, cmListFileLexer* lexer) - -/* Disable some warnings. */ -#if defined(_MSC_VER) -# pragma warning ( disable : 4127 ) -# pragma warning ( disable : 4131 ) -# pragma warning ( disable : 4244 ) -# pragma warning ( disable : 4251 ) -# pragma warning ( disable : 4267 ) -# pragma warning ( disable : 4305 ) -# pragma warning ( disable : 4309 ) -# pragma warning ( disable : 4706 ) -# pragma warning ( disable : 4786 ) -#endif - -#include "cmListFileLexer.h" - -/*--------------------------------------------------------------------------*/ -struct cmListFileLexer_s -{ - cmListFileLexer_Token token; - int line; - int column; - int size; - FILE* file; - yyscan_t scanner; -}; - -static void cmListFileLexerSetToken(cmListFileLexer* lexer, const char* text, - int length); -static void cmListFileLexerAppend(cmListFileLexer* lexer, const char* text, - int length); - -/*--------------------------------------------------------------------------*/ -%} - -%option reentrant -%option yylineno -%option noyywrap -%pointer -%x STRING - -%% - -\n { - lexer->token.type = cmListFileLexer_Token_Newline; - cmListFileLexerSetToken(lexer, yytext, yyleng); - ++lexer->line; - lexer->column = 1; - return 1; -} - -#.* { - lexer->column += yyleng; -} - -\( { - lexer->token.type = cmListFileLexer_Token_ParenLeft; - cmListFileLexerSetToken(lexer, yytext, yyleng); - lexer->column += yyleng; - return 1; -} - -\) { - lexer->token.type = cmListFileLexer_Token_ParenRight; - cmListFileLexerSetToken(lexer, yytext, yyleng); - lexer->column += yyleng; - return 1; -} - -[A-Za-z_][A-Za-z0-9_]+ { - lexer->token.type = cmListFileLexer_Token_Identifier; - cmListFileLexerSetToken(lexer, yytext, yyleng); - lexer->column += yyleng; - return 1; -} - -([^ \t\r\n\(\)\"\\]|\\.)+ { - lexer->token.type = cmListFileLexer_Token_ArgumentUnquoted; - cmListFileLexerSetToken(lexer, yytext, yyleng); - lexer->column += yyleng; - return 1; -} - -\" { - lexer->token.type = cmListFileLexer_Token_ArgumentQuoted; - cmListFileLexerSetToken(lexer, "", 0); - lexer->column += yyleng; - BEGIN(STRING); -} - -([^\\\n\"]|\\(.|\n))+ { - cmListFileLexerAppend(lexer, yytext, yyleng); - lexer->column += yyleng; -} - -\n { - cmListFileLexerAppend(lexer, yytext, yyleng); - ++lexer->line; - lexer->column = 1; -} - -\" { - lexer->column += yyleng; - BEGIN(INITIAL); - return 1; -} - -. { - cmListFileLexerAppend(lexer, yytext, yyleng); - lexer->column += yyleng; -} - -[ \t\r] { - lexer->column += yyleng; -} - -. { - lexer->token.type = cmListFileLexer_Token_Error; - cmListFileLexerSetToken(lexer, yytext, yyleng); - lexer->column += yyleng; - return 1; -} - -<> { - lexer->token.type = cmListFileLexer_Token_None; - cmListFileLexerSetToken(lexer, 0, 0); - return 0; -} - -%% - -/*--------------------------------------------------------------------------*/ -void cmListFileLexerSetToken(cmListFileLexer* lexer, const char* text, - int length) -{ - /* Set the token line and column number. */ - lexer->token.line = lexer->line; - lexer->token.column = lexer->column; - - /* Use the same buffer if possible. */ - if(lexer->token.text) - { - if(text && length < lexer->size) - { - strcpy(lexer->token.text, text); - lexer->token.length = length; - return; - } - free(lexer->token.text); - lexer->token.text = 0; - lexer->size = 0; - } - - /* Need to extend the buffer. */ - if(text) - { - lexer->token.text = strdup(text); - lexer->token.length = length; - lexer->size = length+1; - } - else - { - lexer->token.length = 0; - } -} - -/*--------------------------------------------------------------------------*/ -void cmListFileLexerAppend(cmListFileLexer* lexer, const char* text, - int length) -{ - char* temp; - int newSize; - - /* If the appended text will fit in the buffer, do not reallocate. */ - newSize = lexer->token.length + length + 1; - if(lexer->token.text && newSize <= lexer->size) - { - strcpy(lexer->token.text+lexer->token.length, text); - lexer->token.length += length; - return; - } - - /* We need to extend the buffer. */ - temp = malloc(newSize); - if(lexer->token.text) - { - memcpy(temp, lexer->token.text, lexer->token.length); - free(lexer->token.text); - } - memcpy(temp+lexer->token.length, text, length); - temp[lexer->token.length+length] = 0; - lexer->token.text = temp; - lexer->token.length += length; - lexer->size = newSize; -} - -/*--------------------------------------------------------------------------*/ -cmListFileLexer* cmListFileLexer_New() -{ - cmListFileLexer* lexer = (cmListFileLexer*)malloc(sizeof(cmListFileLexer)); - if(!lexer) - { - return 0; - } - memset(lexer, 0, sizeof(*lexer)); - lexer->line = 1; - lexer->column = 1; - return lexer; -} - -/*--------------------------------------------------------------------------*/ -void cmListFileLexer_Delete(cmListFileLexer* lexer) -{ - cmListFileLexer_SetFileName(lexer, 0); - free(lexer); -} - -/*--------------------------------------------------------------------------*/ -int cmListFileLexer_SetFileName(cmListFileLexer* lexer, const char* name) -{ - int result = 1; - if(lexer->file) - { - yylex_destroy(lexer->scanner); - fclose(lexer->file); - lexer->file = 0; - } - if(name) - { - lexer->file = fopen(name, "r"); - if(!lexer->file) - { - result = 0; - } - } - if(lexer->file) - { - yylex_init(&lexer->scanner); - yyset_in(lexer->file, lexer->scanner); - } - return result; -} - -/*--------------------------------------------------------------------------*/ -cmListFileLexer_Token* cmListFileLexer_Scan(cmListFileLexer* lexer) -{ - if(!lexer->file) - { - return 0; - } - if(yylex(lexer->scanner, lexer)) - { - return &lexer->token; - } - else - { - cmListFileLexer_SetFileName(lexer, 0); - return 0; - } -} - -/*--------------------------------------------------------------------------*/ -long cmListFileLexer_GetCurrentLine(cmListFileLexer* lexer) -{ - if(lexer->file) - { - return lexer->line; - } - else - { - return 0; - } -} - -/*--------------------------------------------------------------------------*/ -long cmListFileLexer_GetCurrentColumn(cmListFileLexer* lexer) -{ - if(lexer->file) - { - return lexer->column; - } - else - { - return 0; - } -} -- cgit v0.12