-
-<CLASS_CODE_I>void {return VOID;}
-<CLASS_CODE_I>struct {return STRUCT;}
-<CLASS_CODE_I>union {return UNION;}
-<CLASS_CODE_I>enum {return ENUM;}
-<CLASS_CODE_I>signed {return SIGNED;}
-<CLASS_CODE_I>unsigned {return UNSIGNED;}
-<CLASS_CODE_I>long {return LONG;}
-<CLASS_CODE_I>short {return SHORT;}
-<CLASS_CODE_I>int {return INT;}
-<CLASS_CODE_I>float {return FLOAT;}
-<CLASS_CODE_I>double {return DOUBLE;}
-<CLASS_CODE_I>char {return CHAR;}
-<CLASS_CODE_I>const {return CONST;}
+<CLASS_CODE>\" {
+ BEGIN(CLASS_STRING);
+ before_string = CLASS_CODE;
+ add_to_cbuf(yytext);
+ }
+<CLASS_STRING>\\. { add_to_cbuf(yytext); }
+<CLASS_STRING>\" {
+ BEGIN(before_string);
+ add_to_cbuf(yytext);
+ yylval.id = cbuf->str;
+ g_string_free (cbuf, FALSE);
+ cbuf = NULL;
+ return STRING;
+ }
+<CLASS_STRING>. { add_to_cbuf(yytext); }
+<CLASS_STRING>\n { add_to_cbuf(yytext); }
+
+<CLASS_CODE_I,PROPERTY_CODE_I>void {return VOID;}
+<CLASS_CODE_I,PROPERTY_CODE_I>struct {return STRUCT;}
+<CLASS_CODE_I,PROPERTY_CODE_I>union {return UNION;}
+<CLASS_CODE_I,PROPERTY_CODE_I>enum {return ENUM;}
+<CLASS_CODE_I,PROPERTY_CODE_I>signed {return SIGNED;}
+<CLASS_CODE_I,PROPERTY_CODE_I>unsigned {return UNSIGNED;}
+<CLASS_CODE_I,PROPERTY_CODE_I>long {return LONG;}
+<CLASS_CODE_I,PROPERTY_CODE_I>short {return SHORT;}
+<CLASS_CODE_I,PROPERTY_CODE_I>int {return INT;}
+<CLASS_CODE_I,PROPERTY_CODE_I>float {return FLOAT;}
+<CLASS_CODE_I,PROPERTY_CODE_I>double {return DOUBLE;}
+<CLASS_CODE_I,PROPERTY_CODE_I>char {return CHAR;}
+<CLASS_CODE_I,PROPERTY_CODE_I>const {return CONST;}