Lex rule for generating lexical analyzer to match US phone numbers.
%{
int isValid = 0;
%}
digit [0-9]
valid {digit}{3,3}-{digit}{3,3}-{digit}{4,4}
%%
{valid} {isValid = 1;}
. {isValid = 0;}
\n {return 0;}
%%
int yywrap() {}
int main() {
while(1) {
yylex();
if(isValid) {
printf("Valid!\n");
}
else {
printf("Invalid!\n");
}
}
return 0;
}$ sudo apt update
$ sudo apt install flex
$ lex phnum.l
$ gcc lex.yy.c
$ ./a.out