Jelajahi Sumber

添加宏并替换部分字符串复制

myuan 2 tahun lalu
induk
melakukan
cd53a12e21
1 mengubah file dengan 9 tambahan dan 8 penghapusan
  1. 9 8
      src/calc.l

+ 9 - 8
src/calc.l

@@ -8,6 +8,10 @@
 #include "calc.tab.h"
 extern YYSTYPE yylval;
 
+#define cp_yylval_and_return(x) \
+    yylval.sv = (char*)malloc(strlen(yytext) + 1); \
+    strcpy(yylval.sv, yytext); \
+    return x;
 %}
 
 %%
@@ -30,9 +34,9 @@ extern YYSTYPE yylval;
 "JOIN"      {return JOIN;}
 "TABLE"		{return TABLE;}
 
-"INT"       {return INT;}
-"FLOAT"     {return FLOAT;}
-"STRING"    {return STRING;}
+"INT"       {cp_yylval_and_return(INT);}
+"FLOAT"     {cp_yylval_and_return(FLOAT);}
+"STRING"    {cp_yylval_and_return(STRING);}
 
 
 ;		    {return NEWLINE;}
@@ -48,10 +52,7 @@ extern YYSTYPE yylval;
 
 "quit"		{return QUIT;}
 
-[a-zA-Z][a-zA-Z0-9]+	{
-    yylval.sv = (char*)malloc(strlen(yytext) + 1);
-    strcpy(yylval.sv, yytext);
-    return IDENTIFIER;
-}
+[a-zA-Z][a-zA-Z0-9]+	cp_yylval_and_return(IDENTIFIER);
+
 
 %%