/* File........ parser1.lex * Contents.... Exemple of small parser usin LEX * * compilation: * flex parser1.lex * gcc -o parser1.exe lexyy.c */ /* ---------------- Definitions space ----------------- */ %option noyywrap %{ #include #include #include #include int num_matches = 0; %} valchar [a-zA-Z0-9"!""#""$""%""*""/""?""|""^""{""}""`""~""&""'""+""_"]|"-" domain [a-zA-Z0-9] validDomain (({domain}+)|({domain}+"-"{domain}+))+ /* ------------------- Rules space -------------------- */ %% ^({valchar}+["."]{0,1}{valchar}+)+@{validDomain}("."{validDomain}+)+$ {++num_matches; printf("\nThe match was : %s", yytext);} . {} %% /* ----------------- User code space ------------------ */ main() { printf("Listing matches for 'e-mail addresses'.\n"); yylex(); printf("--- Number of matches found: %d\n", num_matches); }