Przejdź do zawartości

Flex i Bison/Kalkulator z prostymi zmiennymi - lekser

Z Wikibooks, biblioteki wolnych podręczników.
/* Lex input */
%{
    #include <stdlib.h>
    #include <stdio.h>
    #include "y.tab.h"
%}

%%

[ \t]+  ;
([0-9]+(\.[0-9]*)?)|([0-9]*\.[0-9]+) { 
          yylval.dval = atof(yytext); return DOUBLE; }
[-+*/=] { return *yytext; }
"("     { return *yytext; }
")"     { return *yytext; }
[a-z]   { yylval.ivar = *yytext; return NAME; }
\n      { return *yytext; }
.       { char msg[25]; 
          sprintf(msg, "%s <%s>", "invalid character", yytext);
          yyerror(msg); }

%%

int yywrap(void) 
{
    return 1;
}


Poprzedni rozdział: Prosty kalkulator - parser
Następny rozdział: Parser