Lex (computerprogramma)Lex is een computerprogramma voor het genereren van lexical analysers (of: scanners, lexers). Lex wordt meestal gebruikt in combinatie met de parsergenerator Yacc. De eerste versie van lex werd ontwikkeld door Eric Schmidt en Mike Lesk. Lex werd de standaard scanner-generator van het Unix-besturingssysteem, en is gestandaardiseerd als onderdeel van de POSIX-standaard. WerkingDe invoer van lex is een specificatie van de te genereren scanner. Op basis van deze specificatie genereert lex een scanner geschreven in C. Een lex-specificatie voor een scanner bestaat uit 3 onderdelen:
VoorbeeldDe onderstaande lex-specificatie genereert een scanner die het aantal karakters en het aantal regels van zijn invoer telt.[1] int num_lines = 0, num_chars = 0;
%%
\n ++num_lines; ++num_chars;
. ++num_chars;
%%
main()
{
yylex();
printf( "# of lines = %d, # of chars = %d\n",
num_lines, num_chars );
}
Andere versiesFlex (fast lexical analyzer) is een veelgebruikt alternatief voor lex. Flex werd oorspronkelijk geschreven door Vern Paxson rond 1987 en is backward compatible met lex. Flex++ genereert scanners in C++. GPLEX is een ander veelgebruikt alternatief voor lex. GPLEX genereert scanners in C# in plaats van C of C++. Zie ookExterne links
Bronnen, noten en/of referenties
|