%option noyywrap yylineno
%{
#include <string.h>
#include "semantic.tab.h"
#include "defs.h"
int c;
extern YYSTYPE yylval;
%}
%%
[ \t\n]+ { /* skip */ }
"void" { yylval.i = VOID; return _TYPE; }
"int" { yylval.i = INT; return _TYPE; }
"unsigned" { yylval.i = UINT; return _TYPE; }
"if" { return _IF; }
"else" { return _ELSE; }
"return" { return _RETURN; }
"hana" { return _HANA; }
"loop" { return _LOOP; }
"hopau" { return _HOPAU; }
"oiai" { return _OIAI; }
"switch" { return _SWITCH; }
"case" { return _CASE; }
"break" { return _BREAK; }
"default" { return _DEFAULT; }
"end_switch" { return _END_SWITCH; }
"<!" { return _OTVORENO; }
"-!>" { return _ZATVORENO; }
"(" { return _LPAREN; }
")" { return _RPAREN; }
"{" { return _LBRACKET; }
"}" { return _RBRACKET; }
";" { return _SEMICOLON; }
"=" { return _ASSIGN; }
"," { return _COMMA; }
"++" { return _INC; }
"*" { yylval.i = MUL; return _AROP; }
"/" { yylval.i = DIV; return _AROP; }
"+" { yylval.i = ADD; return _AROP; }
"-" { yylval.i = SUB; return _AROP; }
"<" { yylval.i = LT; return _RELOP; }
">" { yylval.i = GT; return _RELOP; }
"<=" { yylval.i = LE; return _RELOP; }
">=" { yylval.i = GE; return _RELOP; }
"==" { yylval.i = EQ; return _RELOP; }
"!=" { yylval.i = NE; return _RELOP; }
"//".* {}
[a-zA-Z][a-zA-Z0-9]* { yylval.s = strdup(yytext);
return _ID; }
[+-]?[0-9]{1,10} { yylval.s = strdup(yytext);
return _INT_NUMBER;}
[0-9]{1,10}[uU] { yylval.s = strdup(yytext);
yylval.s[yyleng-1] = 0;
return _UINT_NUMBER;}
"/*" {
for (;;) {
while ((c = input()) != '*' && c != EOF)
; /* preskoci tekst komentara */
if (c == '*') {
while ((c = input()) == '*')
;
if (c == '/')
break; /* kraj komentara */
}
if (c == EOF) {
err("EOF in comment");
break;
}
}
}
. { printf("line %d: LEXICAL ERROR on char %c\n", yylineno, *yytext);}
%%
{"html5":"htmlmixed","css":"css","javascript":"javascript","php":"php","python":"python","ruby":"ruby","lua":"text\/x-lua","bash":"text\/x-sh","go":"go","c":"text\/x-csrc","cpp":"text\/x-c++src","diff":"diff","latex":"stex","sql":"sql","xml":"xml","apl":"apl","asterisk":"asterisk","c_loadrunner":"text\/x-csrc","c_mac":"text\/x-csrc","coffeescript":"text\/x-coffeescript","csharp":"text\/x-csharp","d":"d","ecmascript":"javascript","erlang":"erlang","groovy":"text\/x-groovy","haskell":"text\/x-haskell","haxe":"text\/x-haxe","html4strict":"htmlmixed","java":"text\/x-java","java5":"text\/x-java","jquery":"javascript","mirc":"mirc","mysql":"sql","ocaml":"text\/x-ocaml","pascal":"text\/x-pascal","perl":"perl","perl6":"perl","plsql":"sql","properties":"text\/x-properties","q":"text\/x-q","scala":"scala","scheme":"text\/x-scheme","tcl":"text\/x-tcl","vb":"text\/x-vb","verilog":"text\/x-verilog","yaml":"text\/x-yaml","z80":"text\/x-z80"}