📋 NAME
flex - the fast lexical analyser generator
🚀 Quick Reference
| 🎯 Use Case | 💻 Command | 📄 Description |
| 📄 Generate scanner from .l file | flex file.l | Produces lex.yy.c scanner source |
| ⚡ Fast scanner | flex -f file.l | Generate fast, large scanner (same as -Cfr) |
| 🔁 C++ scanner class | flex -+ file.l | Generate C++ scanner class |
| 🔄 Reentrant C scanner | flex -R file.l | Generate reentrant C scanner |
| 🐛 Debug mode | flex -d file.l | Enable debug output |
| 🔤 Case-insensitive | flex -i file.l | Ignore case in patterns |
| 📝 Custom output file | flex -o out.c file.l | Specify output filename |
| ❓ Help | flex --help | Show help message |
📖 SYNOPSIS
flex [OPTIONS] [FILE]...
📝 DESCRIPTION
Generates programs that perform pattern-matching on text.
📦 Table Compression
- -Ca, --align — trade off larger tables for better memory alignment
- -Ce, --ecs — construct equivalence classes
- -Cf — do not compress tables; use -f representation
- -CF — do not compress tables; use -F representation
- -Cm, --meta-ecs — construct meta-equivalence classes
- -Cr, --read — use read() instead of stdio for scanner input
- -f, --full — generate fast, large scanner. Same as -Cfr
- -F, --fast — use alternate table representation. Same as -CFr
- -Cem — default compression (same as --ecs --meta-ecs)
🐛 Debugging
- -d, --debug — enable debug mode in scanner
- -b, --backup — write backing-up information to lex.backup
- -p, --perf-report — write performance report to stderr
- -s, --nodefault — suppress default rule to ECHO unmatched text
- -T, --trace — flex should run in trace mode
- -w, --nowarn — do not generate warnings
- -v, --verbose — write summary of scanner statistics to stdout
- --hex — use hexadecimal numbers instead of octal in debug outputs
📁 FILES
- -o, --outfile=FILE — specify output filename
- -S, --skel=FILE — specify skeleton file
- -t, --stdout — write scanner on stdout instead of lex.yy.c
- --yyclass=NAME — name of C++ class
- --header-file=FILE — create a C header file in addition to the scanner
- --tables-file[=FILE] — write tables to FILE
- --backup-file=FILE — write backing-up information to FILE
⚙️ Scanner Behavior
- -7, --7bit — generate 7-bit scanner
- -8, --8bit — generate 8-bit scanner
- -B, --batch — generate batch scanner (opposite of -I)
- -i, --case-insensitive — ignore case in patterns
- -l, --lex-compat — maximal compatibility with original lex
- -X, --posix-compat — maximal compatibility with POSIX lex
- -I, --interactive — generate interactive scanner (opposite of -B)
- --yylineno — track line count in yylineno
💻 Generated Code
- -+, --c++ — generate C++ scanner class
- -Dmacro[=defn] — #define macro defn (default defn is '1')
- -L, --noline — suppress #line directives in scanner
- -P, --prefix=STRING — use STRING as prefix instead of "yy"
- -R, --reentrant — generate a reentrant C scanner
- --bison-bridge — scanner for bison pure parser
- --bison-locations — include yylloc support
- --stdinit — initialize yyin/yyout to stdin/stdout
- --nounistd — do not include <unistd.h>
- --noFUNCTION — do not generate a particular FUNCTION
🔧 Miscellaneous
- -c — do-nothing POSIX option
- -n — do-nothing POSIX option
- -? — (help alias)
- -h, --help — produce this help message
- -V, --version — report flex version
📚 SEE ALSO
The full documentation for flex is maintained as a Texinfo manual. If the info and flex programs are properly installed at your site, the command
info flex
should give you access to the complete manual.
The Flex Project — March 2022 — FLEX(1)