+ msg_typedef s i1 1; LP.add_typedef_root s;
+ TypedefIdent (s, i1)
+
+ (* christia *)
+
+ (* delete[] *)
+ | (TOCro i1 :: _, Tdelete _ :: _)
+ when !Flag.c_plus_plus ->
+ TCommentCpp (Token_c.CppDirective, i1)
+ (* delete[] *)
+ | (TCCro i1 :: _, Tdelete _ :: _)
+ when !Flag.c_plus_plus ->
+ TCommentCpp (Token_c.CppDirective, i1)
+
+ (* extern "_" tt *)
+ | ((TString ((s, _), i1) | TMacroString (s, i1)) :: _ , Textern _ :: _)
+ when !Flag.c_plus_plus ->
+ TCommentCpp (Token_c.CppDirective, i1)
+
+ (* ) const { *)
+ | (Tconst i1 :: TOBrace _ :: _ , TCPar _ :: _)
+ when !Flag.c_plus_plus ->
+ TCommentCpp (Token_c.CppDirective, i1)
+
+ (* xx const tt *)
+ | (TIdent (s, i1)::(Tconst _|Tvolatile _|Trestrict _)::type_::_ , _)
+ when not_struct_enum before
+ && is_type type_ ->
+ TCommentCpp (Token_c.CppDirective, i1)
+
+ (* xx struct *)
+ | (TIdent (s, i1)::Tstruct _::_ , _)
+ when not_struct_enum before ->
+ TCommentCpp (Token_c.CppDirective, i1)
+
+ (* xx tt *)
+ | (TIdent (s, i1)::type_::_ , _)
+ when not_struct_enum before
+ && is_type type_ ->
+ TCommentCpp (Token_c.CppDirective, i1)
+
+ (* tt xx yy *)
+ | (TIdent (s, i1)::TIdent (s2, i2)::_ , seen::_)
+ when not_struct_enum before
+ && is_type seen ->
+ if is_macro s2 then
+ TIdent (s, i1)
+ else
+ TCommentCpp (Token_c.CppDirective, i1)
+
+ (* exception to next rule *)
+ | (TIdent (s2, i2)::TOPar _::_ , TIdent (s1, i1)::seen::_)
+ when not_struct_enum before
+ && is_macro s2 && is_type seen ->
+ TIdent (s2, i2)
+
+ | (TIdent (s2, i2)::_ , TIdent (s, i1)::seen::_)
+ when not_struct_enum before
+ && is_macro s2 && is_type seen ->
+ TCommentCpp (Token_c.CppDirective, i2)
+
+ (* tt xx * *)
+ | (TIdent (s, i1)::ptr , seen::_)
+ when not_struct_enum before
+ && pointer ptr && is_type seen ->
+ TCommentCpp (Token_c.CppDirective, i1)
+
+ (* tt * xx yy *)
+ | (TIdent (s, i1)::TIdent(s2, i2)::_ , ptr)
+ when not_struct_enum before
+ && pointer ptr ->
+ if is_macro s2 then
+ TIdent (s, i1)
+ else
+ TCommentCpp (Token_c.CppDirective, i1)
+
+ (* exception to next rule *)
+ | (TIdent (s2, i2)::TOPar _::_ , TIdent (s1, i1)::ptr)
+ when not_struct_enum before
+ && is_macro s2 && pointer ptr ->
+ TIdent (s2, i2)
+ (* tt * xx yy *)
+ | (TIdent(s2, i2)::_ , TIdent (s, i1)::ptr)
+ when not_struct_enum before
+ && is_macro s2 && pointer ptr ->
+ TCommentCpp (Token_c.CppDirective, i2)