Browse Source

cmListFileLexer: regenerate with flex 2.6.4 (previously 2.6.1)

flex 2.6.3 introduces symbol remapping through macro definitions. hence the
change appears bigger than one would expect from a minor version upgrade.

In addition some manual cleanup that had to be done previously is now
obsolete. namely:
  - the size_t cast of _yybytes_len in yy_scan_bytes
    (i is now also defined int and not size_t anymore)
  - the redefinition of yyl within yy_find_action
    (yyl is now already defined as int)

Line number preprocessor directives (#line) were previously generated into
the c source file. This actually breaks debugging as debuggers have a hard
time finding the original cmListFileLexer.in.l and mapping the current
instruction to a meaningful location within that file.

The prefix "cmListFileLexer_yy" can already be set as %option directly.

For convenience also provide a sed command for all the manual steps that
need to be done after generating.

Signed-off-by: Matthias Maennich <[email protected]>
Matthias Maennich 8 years ago
parent
commit
ef41bf8531
2 changed files with 317 additions and 156 deletions
  1. 311 150
      Source/LexerParser/cmListFileLexer.c
  2. 6 6
      Source/LexerParser/cmListFileLexer.in.l

File diff suppressed because it is too large
+ 311 - 150
Source/LexerParser/cmListFileLexer.c


+ 6 - 6
Source/LexerParser/cmListFileLexer.in.l

@@ -7,14 +7,12 @@ This file must be translated to C and modified to build everywhere.
 
 Run flex >= 2.6 like this:
 
-  flex --nounistd -DFLEXINT_H --prefix=cmListFileLexer_yy -ocmListFileLexer.c cmListFileLexer.in.l
+  flex --nounistd -DFLEXINT_H --noline -ocmListFileLexer.c cmListFileLexer.in.l
 
 Modify cmListFileLexer.c:
-  - remove trailing whitespace: sed -i 's/\s*$//' cmListFileLexer.c
-  - remove blank lines at end of file
-  - #include "cmStandardLexer.h" at the top
-  - add cast in yy_scan_bytes for loop condition of _yybytes_len to size_t
-  - change type of variable yyl under yy_find_action from yy_size_t to int
+  - remove trailing whitespace:              sed -i 's/\s*$//' cmListFileLexer.c
+  - remove blank lines at end of file:       sed -i '${/^$/d;}' cmListFileLexer.c
+  - #include "cmStandardLexer.h" at the top: sed -i '1i#include "cmStandardLexer.h"' cmListFileLexer.c
 
 */
 
@@ -64,6 +62,8 @@ static void cmListFileLexerDestroy(cmListFileLexer* lexer);
 /*--------------------------------------------------------------------------*/
 %}
 
+%option prefix="cmListFileLexer_yy"
+
 %option reentrant
 %option yylineno
 %option noyywrap

Some files were not shown because too many files changed in this diff