bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 2/6] style: simplify the scanning of type tags


From: Akim Demaille
Subject: [PATCH 2/6] style: simplify the scanning of type tags
Date: Sat, 23 Feb 2013 16:59:54 +0100

* src/scan-gram.l: Remove the rule for simple tags: the "complex" case
subsumes it.  It was more efficient, but duplicated the code for a
negligible benefit.
---
 src/scan-gram.l | 30 +++++++++++-------------------
 1 file changed, 11 insertions(+), 19 deletions(-)

diff --git a/src/scan-gram.l b/src/scan-gram.l
index 7ce3b4b..58f6590 100644
--- a/src/scan-gram.l
+++ b/src/scan-gram.l
@@ -112,7 +112,12 @@ static void unexpected_newline (boundary, char const *);
  /* A identifier was just read in directives/rules.  Special state
     to capture the sequence 'identifier :'. */
 %x SC_AFTER_IDENTIFIER
- /* A complex tag, with nested angles brackets. */
+
+ /* 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, as this simplifies our implementation.  We match
+    angle brackets in nested pairs: several languages use them for
+    generics/template types.  */
 %x SC_TAG
 
  /* Four types of user code:
@@ -133,13 +138,6 @@ notletter 
[^.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]{-}[%\{]
 id        {letter}({letter}|[-0-9])*
 int       [0-9]+
 
-/* 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, as this simplifies our implementation.  We disallow angle
-   bracket to match them in nested pairs: several languages use them
-   for generics/template types.  */
-tag      [^\0<>]+
-
 /* Zero or more instances of backslash-newline.  Following GCC, allow
    white space between the backslash and the newline.  */
 splice   (\\[ \f\t\v]*\n)*
@@ -325,13 +323,6 @@ eqopt    ([[:space:]]*=)?
   /* A type. */
   "<*>"       return TAG_ANY;
   "<>"        return TAG_NONE;
-  "<"{tag}">" {
-    obstack_grow (&obstack_for_string, yytext + 1, yyleng - 2);
-    STRING_FINISH;
-    val->uniqstr = uniqstr_new (last_string);
-    STRING_FREE;
-    return TAG;
-  }
   "<"         {
     nesting = 0;
     token_start = loc->start;
@@ -559,10 +550,11 @@ eqopt    ([[:space:]]*=)?
   <<EOF>>   unexpected_eof (token_start, "'");
 }
 
-  /*-----------------------------------------------------------.
-  | Scanning a Bison nested tag.  The initial angle bracket is |
-  | already eaten.                                             |
-  `-----------------------------------------------------------*/
+
+
+  /*--------------------------------------------------------------.
+  | Scanning a tag.  The initial angle bracket is already eaten.  |
+  `--------------------------------------------------------------*/
 
 <SC_TAG>
 {
-- 
1.8.1.3




reply via email to

[Prev in Thread] Current Thread [Next in Thread]