]> git.saurik.com Git - bison.git/blobdiff - src/scan-code.l
c++: fix several issues with locations
[bison.git] / src / scan-code.l
index bff3280a565d933568c6966c118c46d046b77d40..cced97bfeaac135080bd320f351395854390f09d 100644 (file)
@@ -78,8 +78,9 @@ static bool untyped_var_seen;
 
 /* POSIX says that a tag must be both an id and a C union member, but
    historically almost any character is allowed in a tag.  We disallow
-   NUL and newline, as this simplifies our implementation.  */
-tag      [^\0\n>]+
+   NUL and newline, as this simplifies our implementation.  We allow
+   "->" as a means to dereference a pointer.  */
+tag      ([^\0\n>]|->)+
 
 /* Zero or more instances of backslash-newline.  Following GCC, allow
    white space between the backslash and the newline.  */
@@ -595,7 +596,8 @@ fetch_type_name (char *cp, char const **type_name,
   if (*cp == '<')
     {
       *type_name = ++cp;
-      while (*cp != '>')
+      /* Series of non-'>' or "->".  */
+      while (*cp != '>' || cp[-1] == '-')
         ++cp;
 
       /* The '>' symbol will be later replaced by '\0'. Original