From 90a52d957e96501e7eef4890e4ceb28c889ac317 Mon Sep 17 00:00:00 2001 From: Shinya Sato Date: Fri, 16 Feb 2024 20:33:11 +0900 Subject: v0.11.2 --- src/lex.l | 38 ++++++++++++++------------------------ 1 file changed, 14 insertions(+), 24 deletions(-) (limited to 'src/lex.l') diff --git a/src/lex.l b/src/lex.l index 1bdb1ce..96ed342 100644 --- a/src/lex.l +++ b/src/lex.l @@ -67,47 +67,37 @@ char *Parse_closeStringBuffer() { return ret; } +// https://stackoverflow.com/questions/26854374/how-do-i-use-yy-bs-lineno-and-yy-bs-column-in-flex +int yycolumn = 1; +#define YY_USER_ACTION \ + yylloc.first_line = yylloc.last_line = yylineno; \ + yylloc.first_column = yycolumn; \ + yylloc.last_column = yycolumn + yyleng - 1; \ + yycolumn += yyleng; \ + //yylval.str = strdup(yytext); %} %option nounput -%option yylineno %option noyywrap +%option yylineno %x STRING_STATE COM_STATE %% -";" return (DELIMITER); -":" return (COLON); -"(" return (LP); -")" return (RP); -"{" return LC; -"}" return RC; -"[" return LB; -"]" return RB; -"," return (COMMA); "><" return (CROSS); -"=>" return (TO); -"~" return (CNCT); -"-" return (SUB); +"=>" return (ARROW); +"|" return(PIPE); "&&" return(AND); "and" return(AND); "||" return(OR); "or" return(OR); "!" return(NOT); "not" return(NOT); -"|" return(PIPE); "=" return(LD); "==" return(EQUAL); "!=" return(NE); -">" return(GT); ">=" return(GE); -"<" return(LT); "<=" return(LE); -"+" return (ADD); -"*" return (MUL); -"/" return (DIV); -"%" return (MOD); -"_" return (ANY); "<<" return (ABR); "int" return(INT); @@ -150,8 +140,8 @@ char *Parse_closeStringBuffer() { \n ; "*/" BEGIN INITIAL; //comment -\r\n ; -[\n|\r] ; +\r\n { yycolumn=1; }; +[\n|\r] { yycolumn=1; }; [ \t]+ ; <> {return END_OF_FILE;} \" { @@ -173,7 +163,7 @@ char *Parse_closeStringBuffer() { // Parse_addString('\n'); yyerror("Unterminated string"); BEGIN(INITIAL); -return DELIMITER; +return ';'; } \\\" Parse_addString('"'); \\n Parse_addString('\n'); -- cgit v1.2.3