%{
#include <stdio.h>
+#define YY_USER_ACTION \
+ yylloc.first_line = yylloc.last_line; \
+ yylloc.first_column = yylloc.last_column; \
+ for(int i = 0; yytext[i] != '\0'; i++) { \
+ if(yytext[i] == '\n') { \
+ yylloc.last_line++; \
+ yylloc.last_column = 0; \
+ } \
+ else { \
+ yylloc.last_column++; \
+ } \
+ }
+
#include "ast.h"
#include "y.tab.h"
-extern YYSTYPE yylval;
%}
true { yylval.expr = expr_bool(true); return BOOL; }
false { yylval.expr = expr_bool(false); return BOOL; }
return return RETURN;
+-> return ARROW;
= return ASSIGN;
! return INVERSE;
\|\| return BINOR;
\{ return COPEN;
\} return CCLOSE;
\; return SEMICOLON;
+\[ return SOPEN;
+\] return SCLOSE;
\[\] return NIL;
\. return DOT;
, return COMMA;