]> git.draconx.ca Git - cdecl99.git/commitdiff
Add support for imaginary types.
authorNick Bowler <nbowler@draconx.ca>
Fri, 8 Jul 2011 01:04:19 +0000 (21:04 -0400)
committerNick Bowler <nbowler@draconx.ca>
Fri, 8 Jul 2011 01:04:19 +0000 (21:04 -0400)
Somehow these got forgotten.

src/cdecl.h
src/parse.y
src/scan.l
src/types.lst

index 3217f9e46f6d1d267490cc9ebc7112f1a641459a..9b3e5da9a28b2ab7042b0e89d532723a5b040f59 100644 (file)
@@ -41,6 +41,7 @@ enum {
        CDECL_TYPE_UNSIGNED,
        CDECL_TYPE_BOOL,
        CDECL_TYPE_COMPLEX,
+       CDECL_TYPE_IMAGINARY,
        CDECL_TYPE_STRUCT,
        CDECL_TYPE_UNION,
        CDECL_TYPE_ENUM,
index 2b02a5e7d6eb7ad4d6226d09e265bb4f5252219a..706bdd819a6bd914660c46d114ef5643c354f73d 100644 (file)
@@ -154,33 +154,34 @@ void cdecl_free(struct cdecl *decl)
 %token T_COMMA     ","
 %token T_ELLIPSIS  "."
 
-%token T_TYPEDEF  "typedef"
-%token T_EXTERN   "extern"
-%token T_STATIC   "static"
-%token T_AUTO     "auto"
-%token T_REGISTER "register"
-
-%token T_INLINE   "inline"
-
-%token T_RESTRICT "restrict"
-%token T_VOLATILE "volatile"
-%token T_CONST    "const"
-
-%token T_VOID     "void"
-%token T_CHAR     "char"
-%token T_SHORT    "short"
-%token T_INT      "int"
-%token T_LONG     "long"
-%token T_FLOAT    "float"
-%token T_DOUBLE   "double"
-%token T_SIGNED   "signed"
-%token T_UNSIGNED "unsigned"
-%token T_BOOL     "_Bool"
-%token T_COMPLEX  "_Complex"
-
-%token T_STRUCT   "struct"
-%token T_UNION    "union"
-%token T_ENUM     "enum"
+%token T_TYPEDEF   "typedef"
+%token T_EXTERN    "extern"
+%token T_STATIC    "static"
+%token T_AUTO      "auto"
+%token T_REGISTER  "register"
+
+%token T_INLINE    "inline"
+
+%token T_RESTRICT  "restrict"
+%token T_VOLATILE  "volatile"
+%token T_CONST     "const"
+
+%token T_VOID      "void"
+%token T_CHAR      "char"
+%token T_SHORT     "short"
+%token T_INT       "int"
+%token T_LONG      "long"
+%token T_FLOAT     "float"
+%token T_DOUBLE    "double"
+%token T_SIGNED    "signed"
+%token T_UNSIGNED  "unsigned"
+%token T_BOOL      "_Bool"
+%token T_COMPLEX   "_Complex"
+%token T_IMAGINARY "_Imaginary"
+
+%token T_STRUCT    "struct"
+%token T_UNION     "union"
+%token T_ENUM      "enum"
 
 %type <strval>     vla_ident
 %type <boolval>    varargs
@@ -240,17 +241,18 @@ declspec_simple: T_AUTO { $$ = CDECL_STOR_AUTO;     }
        | T_REGISTER    { $$ = CDECL_STOR_REGISTER; }
        | T_INLINE      { $$ = CDECL_FUNC_INLINE;   }
 
-typespec_simple: T_VOID { $$ = CDECL_TYPE_VOID;     }
-       | T_CHAR        { $$ = CDECL_TYPE_CHAR;     }
-       | T_SHORT       { $$ = CDECL_TYPE_SHORT;    }
-       | T_INT         { $$ = CDECL_TYPE_INT;      }
-       | T_LONG        { $$ = CDECL_TYPE_LONG;     }
-       | T_FLOAT       { $$ = CDECL_TYPE_FLOAT;    }
-       | T_DOUBLE      { $$ = CDECL_TYPE_DOUBLE;   }
-       | T_SIGNED      { $$ = CDECL_TYPE_SIGNED;   }
-       | T_UNSIGNED    { $$ = CDECL_TYPE_UNSIGNED; }
-       | T_BOOL        { $$ = CDECL_TYPE_BOOL;     }
-       | T_COMPLEX     { $$ = CDECL_TYPE_COMPLEX;  }
+typespec_simple: T_VOID { $$ = CDECL_TYPE_VOID;      }
+       | T_CHAR        { $$ = CDECL_TYPE_CHAR;      }
+       | T_SHORT       { $$ = CDECL_TYPE_SHORT;     }
+       | T_INT         { $$ = CDECL_TYPE_INT;       }
+       | T_LONG        { $$ = CDECL_TYPE_LONG;      }
+       | T_FLOAT       { $$ = CDECL_TYPE_FLOAT;     }
+       | T_DOUBLE      { $$ = CDECL_TYPE_DOUBLE;    }
+       | T_SIGNED      { $$ = CDECL_TYPE_SIGNED;    }
+       | T_UNSIGNED    { $$ = CDECL_TYPE_UNSIGNED;  }
+       | T_BOOL        { $$ = CDECL_TYPE_BOOL;      }
+       | T_COMPLEX     { $$ = CDECL_TYPE_COMPLEX;   }
+       | T_IMAGINARY   { $$ = CDECL_TYPE_IMAGINARY; }
 
 qualifier_simple: T_CONST { $$ = CDECL_QUAL_CONST;    }
        | T_RESTRICT      { $$ = CDECL_QUAL_RESTRICT; }
index 06647de3170551252f3900b4bc49d59ab29bce62..75657fbde11e40a3103b65f776cdfb374fcb960f 100644 (file)
@@ -43,33 +43,34 @@ INTEGER 0x[[:xdigit:]]+|0[0-7]+|[[:digit:]]+
 "]"   return T_RBRACKET;
 ","   return T_COMMA;
 
-"typedef"  return T_TYPEDEF;
-"extern"   return T_EXTERN;
-"static"   return T_STATIC;
-"auto"     return T_AUTO;
-"register" return T_REGISTER;
-
-"restrict" return T_RESTRICT;
-"volatile" return T_VOLATILE;
-"const"    return T_CONST;
-
-"inline"   return T_INLINE;
-
-"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;
-"_Bool"    return T_BOOL;
-"_Complex" return T_COMPLEX;
-
-"struct"   return T_STRUCT;
-"union"    return T_UNION;
-"enum"     return T_ENUM;
+"typedef"    return T_TYPEDEF;
+"extern"     return T_EXTERN;
+"static"     return T_STATIC;
+"auto"       return T_AUTO;
+"register"   return T_REGISTER;
+
+"restrict"   return T_RESTRICT;
+"volatile"   return T_VOLATILE;
+"const"      return T_CONST;
+
+"inline"     return T_INLINE;
+
+"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;
+"_Bool"      return T_BOOL;
+"_Complex"   return T_COMPLEX;
+"_Imaginary" return T_IMAGINARY;
+
+"struct"     return T_STRUCT;
+"union"      return T_UNION;
+"enum"       return T_ENUM;
 
 {INTEGER} {
        char *end;
index f2f7bf29a9a0ff81390e8a31c17a438eb7190dac..22f2a6c95e1a7f5304e04057ff574c57074fd458 100644 (file)
@@ -33,6 +33,9 @@ long double
 float _Complex
 double _Complex
 long double _Complex
+float _Imaginary
+double _Imaginary
+long double _Imaginary
 struct
 union
 enum