rewrite to union type, much better
[ccc.git] / scan.l
diff --git a/scan.l b/scan.l
index c6ebb87..048d104 100644 (file)
--- a/scan.l
+++ b/scan.l
@@ -4,7 +4,6 @@
 
 #include <stdio.h>
 #include "ast.h"
-#define YYSTYPE struct ast *
 #include "y.tab.h"
 extern YYSTYPE yylval;
 
@@ -16,8 +15,8 @@ if          return IF;
 else        return ELSE;
 while       return WHILE;
 var         return VAR;
-true        { yylval = ast_bool(true); return BOOL; }
-false       { yylval = ast_bool(false); return BOOL; }
+true        { yylval.expr = expr_bool(true); return BOOL; }
+false       { yylval.expr = expr_bool(false); return BOOL; }
 return      return RETURN;
 =           return ASSIGN;
 !           return INVERSE;
@@ -45,11 +44,11 @@ return      return RETURN;
 \.          return DOT;
 ,           return COMMA;
 '([^']|\\[abtnvfr]|\\x[0-9a-fA-F]{2})' {
-       yylval = ast_char(yytext); return CHAR; }
+       yylval.expr = expr_char(yytext); return CHAR; }
 [0-9]+ {
-       yylval = ast_int(atoi(yytext)); return INTEGER; }
+       yylval.expr = expr_int(atoi(yytext)); return INTEGER; }
 [_a-zA-Z][_a-zA-Z0-9]* {
-       yylval = ast_identc(yytext); return IDENT; }
+       yylval.ident = safe_strdup(yytext); return IDENT; }
 [ \n\t]  ;
 
 %%