aboutsummaryrefslogtreecommitdiffstats
path: root/c_compiler/src/c_lexer.flex
diff options
context:
space:
mode:
authorYann Herklotz <ymherklotz@gmail.com>2017-03-21 17:03:38 +0000
committerYann Herklotz <ymherklotz@gmail.com>2017-03-21 17:03:38 +0000
commit190b7a0e5d45367230795ac0bdf6fc2f248ba9e1 (patch)
treedc9a605ced1784faf80d71f7f59e49b79d6bb2c7 /c_compiler/src/c_lexer.flex
parentaf8b76d0a83813b3cebac7468db4bd64e534c235 (diff)
downloadCompiler-190b7a0e5d45367230795ac0bdf6fc2f248ba9e1.tar.gz
Compiler-190b7a0e5d45367230795ac0bdf6fc2f248ba9e1.zip
changed type layout to have all necessary information
Diffstat (limited to 'c_compiler/src/c_lexer.flex')
-rw-r--r--c_compiler/src/c_lexer.flex31
1 files changed, 19 insertions, 12 deletions
diff --git a/c_compiler/src/c_lexer.flex b/c_compiler/src/c_lexer.flex
index a761343..90790b5 100644
--- a/c_compiler/src/c_lexer.flex
+++ b/c_compiler/src/c_lexer.flex
@@ -28,17 +28,24 @@ ALL .
%%
-(void) { return T_VOID; }
-(char) { return T_CHAR; }
-(signed[ ]char) { return T_SCHAR; }
-(unsigned[ ]char) { return T_UCHAR; }
-((short[ ]int)|(signed[ ]short[ ]int)|short|(signed[ ]short)) { return T_SSINT; }
-((unsigned[ ]short[ ]int)|(unsigned[ ]short)) { return T_USINT; }
-((signed[ ]long[ ]int)|(signed[ ]long)|(long[ ]int)|long) { return T_LINT; }
-((unsigned[ ]long[ ]int)|(unsigned[ ]long)) { return T_ULINT; }
-((unsigned[ ]int)|unsigned) { return T_UINT; }
-((signed[ ]int)|int|signed) { return T_SINT; }
-
+(void) { return T_VOID; }
+(char) { return T_CHAR; }
+(short) { return T_SHORT; }
+(int) { return T_INT; }
+(long) { return T_LONG; }
+(float) { return T_FLOAT; }
+(double) { return T_DOUBLE; }
+(signed) { return T_SIGNED; }
+(unsigned) { return T_UNSIGNED; }
+
+(typedef) { return T_TYPEDEF; }
+(extern) { return T_EXTERN; }
+(static) { return T_STATIC; }
+(auto) { return T_AUTO; }
+(register) { return T_REGISTER; }
+
+(const) { return T_CONST; }
+(volatile) { return T_VOLATILE; }
[;] { return T_SC; }
[,] { return T_CMA; }
@@ -66,7 +73,7 @@ ALL .
[!] { return T_NOT; }
[.] { return T_DOT; }
[-][>] { return T_ARROW; }
-[+-][+-] { return T_INCDEC; }
+[+-][+-] { yylval.string = new std::string(yytext); return T_INCDEC; }
[+-] { yylval.string = new std::string(yytext); return T_ADDSUB_OP; }
[=] { yylval.string = new std::string(yytext); return T_EQ; }