blob: 50421356861124d974eb216845846602ca7cbfc2 [file] [log] [blame]
%{
#include <string>
#include "caffe2/caffe2/opt/nql/ast.h"
#include "caffe2/caffe2/opt/nql/parse.yy.h"
#define SAVE_TOKEN yylval.pstr = allocString(); *yylval.pstr = std::string(yytext, yyleng)
#define SAVE_STR yylval.pstr = allocString(); *yylval.pstr = std::string(yytext, yyleng)
#define TOKEN(t) (yylval.token = t)
extern "C" int yywrap() { return 1; }
%}
%%
#.*\n ;
[ \t\n] ;
"def" return TOKEN(TDEF);
[a-zA-Z_][a-zA-Z0-9_]* SAVE_STR; return TIDENTIFIER;
%[a-z_][a-z0-9_]* SAVE_STR; return TVAR;
[0-9]+.[0-9]* SAVE_STR; return TDOUBLE;
[0-9]+ SAVE_STR; return TINTEGER;
"*" SAVE_STR; return TSTAR;
"=" return TOKEN(TEQUAL);
"==" return TOKEN(TCEQ);
"!=" return TOKEN(TCNE);
"<" return TOKEN(TCLT);
"<=" return TOKEN(TCLE);
">" return TOKEN(TCGT);
">=" return TOKEN(TCGE);
"(" return TOKEN(TLPAREN);
")" return TOKEN(TRPAREN);
"{" return TOKEN(TLBRACE);
"}" return TOKEN(TRBRACE);
"." return TOKEN(TDOT);
"," return TOKEN(TCOMMA);
"+" return TOKEN(TPLUS);
"-" return TOKEN(TMINUS);
"/" return TOKEN(TDIV);
":" return TOKEN(TCOLON);
";" return TOKEN(TSEMICOLON);
. printf("Unknown token!\n"); yyterminate();
%%