All pastes #796810 Raw Edit

Etwas

public text v1 · immutable
#796810 ·published 2007-11-25 13:12 UTC
rendered paste body
/* no yywrap provided */
%option noyywrap
/* maintain line numbers */
%option yylineno

%{
#include        "minako.h"
#include         <string.h>
%}

%x COMMENT

TAB             [ \t]
NEWLINE         [\n]
WINDOZE         [\r\n]
MAC             [\r]
WHITESPACE      {TAB}|{NEWLINE}|{WINDOZE}|{MAC}
ZIFFER          [[:digit:]]
INTEGER         [[:digit:]]+
FLOAT           {INTEGER}"."{INTEGER}|"."{INTEGER}
CHAR_SMALL      [a-z]
CHAR_BIG        [A-Z]
UMLAUTE         [ä|ü|ö]
CHAR            {CHAR_BIG}|{CHAR_SMALL}|{UMLAUTE}|_|-


%%

{WHITESPACE}+   { /* Whitespace -> nichts tun */ }
"//"(.)*[\n]    { /* C++-Kommentar -> nichts tun */ }
"/*"            { BEGIN(COMMENT); /* C-Kommentar -> nichts tun */ }
<COMMENT>"*/"   { BEGIN(INITIAL); }
<COMMENT>.|\n   { /* Ende C++-Kommentar */}

"=="            { return EQ;  }
"!="            { return NEQ; }
"<="            { return LEQ; }
">="            { return GEQ; }
"&&"            { return AND; }
"||"            { return OR; }

"begin"         { return KW_BEGIN; }
"bool"          { return KW_BOOLEAN; }
"do"            { return KW_DO; }
"else"          { return KW_ELSE; }
"float"         { return KW_FLOAT; }
"for"           { return KW_FOR; }
"if"            { return KW_IF; }
"int"           { return KW_INT; }
"printf"        { return KW_PRINTF; }
"return"        { return KW_RETURN; }
"void"          { return KW_VOID; }
"while"         { return KW_WHILE; }


{FLOAT}([eE]([-+])?{INTEGER})?|{INTEGER}[eE]([-+])?{INTEGER} { yylval.floatValue = atof(yytext); return CONST_FLOAT; }
{INTEGER}       { yylval.intValue = atoi(yytext); return CONST_INT; }
"true"          { yylval.intValue = 1; return CONST_BOOLEAN; }
"false"         { yylval.intValue = 0; return CONST_BOOLEAN; }
{CHAR}({CHAR}|{ZIFFER})* { yylval.string = strdup(yytext); return ID; }

<<EOF>>         { return EOF; }

.           { return yytext[0]; }

%%