Näiteid Flex-i kasutamisest:

1. Järgnevas on Flex-programm, milles algul sisestatakse lihtne täisrve määrav grammatika

NUMBER -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | 8 | 9
ARV -> NUMBER+
ja seejärel lisatakse teisele produktsioonile väljundtegevus - produktsiooni paremale poolele vastava märgijada (s.t. täisarvu) leidmisel väljastab skanner teksti "Täisarv!".
Allesitatud sisendiga genereerib Flex skanneri, mis asendab sisendtekstis kõik täisarvud (numbrite jadad) sõnaga "Täisarv!"; kõik sisendtekstis esinevad märgid, mis ei kuulu täisarvu, jäävad muutmata:

%option noyywrap
NUMBER [0-9]
ARV {NUMBER}+
%%
{ARV} printf("Täisarv! ");
%%
main()
{
yylex();
}

Kui asendada väljundit moodustav rida reaga

{ARV} printf("<int> %s</int>", yytext);

moodustatakse sisendis täisarvude ümber XML-märgendid (tag) <int>...</int>. Nii on lihtne teisendada kogu sisend XML-märgendatud lekseemide jadaks, nii et järgnevad teisendused võib teha (näiteks) XSL-interpretaatoriga.

2. Järgneva sisendiga moodustatakse skanner, mis loeb kokku sisendteksti read ja sümbolid:

%option noyywrap
%{
int num_lines = 0, num_chars = 0;
%}

%%
\n ++num_lines; ++num_chars;
. ++num_chars;

%%
main()
{
yylex();
printf( "Ridu: %d, Symboleid (char): %d\n", num_lines, num_chars );
}

3. Järgnev veidi suurem näide leiab sisendteksti lekseemid täisarv, reaalarv, võtmesõna, omistusmärk, loogilised- ja aritmeetilised operaatorid. Siin on oluline reeglite järjekord - näiteks omistusmärgis ":=" esinev "=" ei loeta loogiliseks operaatoriks vaid sellepärast, et omistusmärgi reegel on enne loogilise operaatori reeglit. Kasutatud on ka C-keele tüübiteisendusi atoi(), atof() sisendis esinevate täis- ja reaalarvude (sisendis - märgijadad, s.t. stringid) teisendamine "tõelisteks" täis- ja reaalarvudeks:

/* scanner pisikesele programmeerimiskeelele */
%option noyywrap
%{
/* järgnev on vajalik tüübiteisenduse funktsioonide atoi(),atof() saamiseks*/
/* atoi() teisendab numbrite jada (stringi) täisarvuks, atof() - reaalarvuks */
#include <math.h>
%}

DIGIT [0-9]
ID [a-z][a-z0-9]*

%%

{DIGIT}+ {
printf( "Täisarv: %d\n", atoi( yytext ) );
}

{DIGIT}+"."{DIGIT}* {
printf( "Reaalarv: %g\n", atof( yytext ) );
}

if|then|begin|end|procedure|function {
printf( "Võtmesõna: %s\n", yytext );
}

{ID} printf( "Identifikaator: %s\n", yytext );

"+"|"-"|"*"|"/" printf( "Aritmeetikaoperaator: %s\n", yytext );
":=" printf(" Omistamine: %s\n", yytext );
">"|"<"|"="|"!=" printf( "Loogikaoperaator: %s\n", yytext );
";" printf(" Käsu lõpp: %s\n", yytext );
"{"[^}\n]*"}" /* eat up one-line comments */

[ \t\n]+ /* eat up whitespace */

. printf( "Tundmatu märk: %s\n", yytext );

%%

main( argc, argv )
int argc;
char **argv;
{
++argv, --argc; /* see jätab vahele programmi nime, nii et protseduuri saab kasutada nii failist kui ka klaviatuurilt antud sisendiga*/
if ( argc > 0 )
yyin = fopen( argv[0], "r" );
else
yyin = stdin;

yylex();
}

Eelneva põhjal moodustatud skanner teisendab sisendi

y := 3;
x := 2.5 + y;
if x != y then y := y + 1;

väljundiks:

Identifikaator: y
Omistamine: :=
Täisarv: 3
Käsu lõpp: ;
Identifikaator: x
Omistamine: :=
Reaalarv: 2.5
Aritmeetikaoperaator: +
Identifikaator: y
Käsu lõpp: ;
Võtmesõna:: if
Identifikaator: x
Loogikaoperaator: !=
Identifikaator: y
Võtmesõna:: then
Identifikaator: y
Omistamine: :=
Identifikaator: y
Aritmeetikaoperaator: +
Täisarv: 1
Käsu lõpp: ;

Veel näiteid:

Täisarvude äratundmine
Reaalarvude äratundmine
Sõnade esitähe suureks muutmine
Loengus esitatud keel
Pascali moodi keel
Skanner koos nimede tabeliga
Flex formatted manpage
Flex-i abil programmeeritud kalkulaator (palju C-d!)

Ülesandeid:

Moodusta eespoolesitatud näidete põhjal skanner, mis teisendab Pascal-i (mingi lihtsa alamosa) XML-tekstiks, kus XML-märgendid määravad lekseemi tüübi (identifikaator, arv, võtmesõna, omistamine, aritmeetiline- või loogiline operaator, eraldaja).