You may create a scanner with serialized tables by specifying:
%option tables-file=FILE or --tables-file=FILE
These options instruct flex to save the DFA tables to the file FILE. The tables will not be embedded in the generated scanner. The scanner will not function on its own. The scanner will be dependent upon the serialized tables. You must load the tables from this file at runtime before you can scan anything.
If you do not specify a filename to
--tables-file, the tables will be
saved to lex.yy.tables, where ‘yy’ is the appropriate prefix.
If your project uses several different scanners, you can concatenate the serialized tables into one file, and flex will find the correct set of tables, using the scanner prefix as part of the lookup key. An example follows:
$ flex --tables-file --prefix=cpp cpp.l $ flex --tables-file --prefix=c c.l $ cat lex.cpp.tables lex.c.tables > all.tables
The above example created two scanners, ‘cpp’, and ‘c’. Since we did not specify a filename, the tables were serialized to lex.c.tables and lex.cpp.tables, respectively. Then, we concatenated the two files together into all.tables, which we will distribute with our project. At runtime, we will open the file and tell flex to load the tables from it. Flex will find the correct tables automatically. (See next section).