%{
Int noligne=0 ;
%}
Chaine \ "[^\n]\ "
Espace [^\t\040]
Alpha [a-zA-Z]
Chiffre [0-9]
Mot clé [FOR ,IF ,ELSE,WHILE,BREAK,SWITCH,CASE,DO]
Id [int,float,double,bool,char,string,CONST]
nom ({alpha}|{chiffre}|\$)({alpha}|{chiffre}|[_.\-/$])*
num1 [-+]?{chiffre}+\.?([eE][-+]?{chiffre}+)?
num2 [-+]?{chiffre}*\.{chiffre}+([eE][-+]?{chiffre}+)?
nombre {chiffre}+
%%
{espace} /* ne rien faire avec les espaces*/
//recherche des commentaires
"/*" {
int c;
while((c = yyinput()) != 0)
{
if(c == '\n')
++mon_no_ligne;
else if(c == '*')
{
if((c = yyinput()) == '/')
break;
else
unput(c);
}
}
Printf(le contenu du commentaire est "%c ",yytext) ;
}
//recherche des nombres
{nombre} printf("nombre %c",yytext) ;
//calcule du nombre de lignes
\n noligne++;
{nom} printf("nom est %c ",yytext) ;
{chaine} printf("les chaine introduite %c ",yytext) ;
%%
//la fonction main
main()
{
yylex() ;
yyin=fopen(" test.txt", ‘r’) ;
/* test.txt est un fichier texte qui contient un code en langage C dont il est la source pour analyser */
}
Partager