flex is a tool for generating scanners:  programs which recognized
lexical patterns in text.  flex reads the given input files, or its
standard input if no file names are given, for a description of a
scanner to generate.  The description is in the form of pairs of
regular expressions and C code, called rules.  flex generates as
output a C source file, lex.yy.c, which defines a routine yylex().
This file is compiled and linked with the -lfl library to produce an
executable.  When the executable is run, it analyzes its input for
occurrences of the regular expressions.  Whenever it finds one, it
executes the corresponding C code.

Homepage:
https://github.com/westes/flex
