Limbajul MAKE - fisierul sursa





Limbajul MAKE - generalitati
Limbajul MAKE - elemple studiate
Limbajul MAKE - fisierul sursa
Limbajul MAKE - modul de lucru
Limbajul MAKE - rezultate obtinute
CONTACT
Download: LFA.tar.gz



               Fisierul "make.lex" este urmatorul:

     %{#include<math.h>
          #include<stdio.h>
     %}

     DIGIT [0-9]
     ID [a-z][a-z0-9]*
     QU [\42]
     LIN [\134]

     %%

     {DIGIT}+ {printf("INTREG: %s (%d)\n", yytext, atoi(yytext));}
     {DIGIT}+"."{DIGIT}* {printf("FRACTIONAR: %s (%g)\n", yytext, atof(yytext));}
     range|echo|for|do|expr|@|in|done {printf("CUVANT CHEIE: %s\n", yytext);}
     {ID}.+":" {printf("TINTA SI SEPARATOR: %s\n", yytext);}
     "#".* {printf("COMENTARIU: %s\n", yytext);}
     {QU}.*{QU} {printf("CITAT: %s\n", yytext);}
     {ID} {printf("IDENTIFICATOR: %s\n", yytext);}
     "+"|"-"|"*"|"/"|"<"|">"|"<="|">="|"<>"|"!="|"=" {printf("OPERATOR: %s\n", yytext);}
     "-"|";"|":"|","|"("|")"|"$"|"{"|"}"|"`" {printf("SEPARATOR/PUNCTATOR: %s\n", yytext);}
     {LIN} {printf("CONTINUATOR LINIE DE COD: %s\n", yytext);}
     [ \t\n]+ {;}
     . {printf("CARACTER NECUNOSCUT: %s\n", yytext);}

     %%

     int main(int argc, char* argv[])
     {++argv; --argc;
       if(argc>0) yyin=fopen(argv[0],"r");
       else yyin=stdin;
       yylex();
     }

     int yywrap(void)
     {return 1;
     }