Een ingewikkelder voorbeeld voor een C-achtige syntaxLaten we zeggen dat we een bestand willen parsen dat er zo uitziet: logging { category lame-servers { null; }; category cname { null; }; }; zone "." { type hint; file "/etc/bind/db.root"; };We herkennen duidelijk een aantal categorieën (tokens) in dit bestand: WOORDen, zoals `zone' en `type' BESTANDSNAAMen, zoals `etc/bind/db.root' QUOTEs, zoals om de bestandsnaam OBRACEs, { EBRACEs, } PUNTKOMMAs, ;Het overeenkomstige Lex bestand is Voorbeeld 3: %{ #include <stdio.h> %} %% [a-zA-Z][a-zA-Z0-9]* printf("WOORD "); [a-zA-Z0-9\/.-]+ printf("BESTANDSNAAM "); \" printf("QUOTE "); \{ printf("OBRACE "); \} printf("EBRACE "); ; printf("PUNTKOMMA "); \n printf("\n"); [ \t]+ /* negeer whitespace */; %% Als we ons bestand aan het programma toevoeren dat door dit Lex bestand gegenereerd is (met gebruik van example3.compile) krijgen we:WOORD OBRACE WOORD BESTANDSNAAM OBRACE WOORD PUNTKOMMA EBRACE PUNTKOMMA WOORD WOORD OBRACE WOORD PUNTKOMMA EBRACE PUNTKOMMA EBRACE PUNTKOMMA WOORD QUOTE BESTANDSNAAM QUOTE OBRACE WOORD WOORD PUNTKOMMA WOORD QUOTE BESTANDSNAAM QUOTE PUNTKOMMA EBRACE PUNTKOMMA Als we dit vergelijken met het bovengenoemde configuratiebestand, wordt duidelijk dat we het netjes `getokeniseerd' hebben. Ieder deel van het configuratiebestand is gematcht, en omgezet naar een token.