]> git.saurik.com Git - bison.git/blobdiff - src/scan-gram.l
* m4/cxx.m4 (BISON_TEST_FOR_WORKING_CXX_COMPILER): Check that
[bison.git] / src / scan-gram.l
index cbb7b3de6d8b71e7e2a4f122af894e611c4c2bbf..1aa5e077e22290d89016d9922db4f1911fd907c8 100644 (file)
@@ -1,6 +1,6 @@
 /* Bison Grammar Scanner                             -*- C -*-
 
-   Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -40,7 +40,6 @@
 #include "gram.h"
 #include "quotearg.h"
 #include "reader.h"
-#include "verify.h"
 #include "uniqstr.h"
 
 #define YY_USER_INIT                                   \
@@ -88,8 +87,11 @@ static size_t no_cr_read (FILE *, char *, size_t);
 static struct obstack obstack_for_string;
 
 /* A string representing the most recently saved token.  */
-static char *last_string;
+char *last_string;
 
+/* The location of the most recently saved token, if it was a
+   BRACED_CODE token; otherwise, this has an unspecified value.  */
+location last_braced_code_loc;
 
 #define STRING_GROW   \
   obstack_grow (&obstack_for_string, yytext, yyleng)
@@ -290,6 +292,8 @@ splice       (\\[ \f\t\v]*\n)*
 
   /* Code in between braces.  */
   "{" {
+    if (current_rule->action)
+      grammar_midrule_action ();
     STRING_GROW;
     token_type = BRACED_CODE;
     braces_level = 0;
@@ -420,7 +424,7 @@ splice       (\\[ \f\t\v]*\n)*
     val->symbol = symbol_get (quotearg_style (escape_quoting_style,
                                              last_string),
                              *loc);
-    symbol_class_set (val->symbol, token_sym, *loc);
+    symbol_class_set (val->symbol, token_sym, *loc, false);
     last_string_1 = last_string[1];
     symbol_user_token_number_set (val->symbol, last_string_1, *loc);
     STRING_FREE;
@@ -619,6 +623,7 @@ splice       (\\[ \f\t\v]*\n)*
        loc->start = code_start;
        val->chars = last_string;
        increment_rule_length (*loc);
+       last_braced_code_loc = *loc;
        BEGIN INITIAL;
        return token_type;
       }
@@ -753,12 +758,13 @@ adjust_location (location *loc, char const *token, size_t size)
        break;
 
       case '\t':
-       {
-         column = add_column_width (column, p0, p - p0);
-         column = add_column_width (column, NULL, 8 - ((column - 1) & 7));
-         p0 = p + 1;
-         break;
-       }
+       column = add_column_width (column, p0, p - p0);
+       column = add_column_width (column, NULL, 8 - ((column - 1) & 7));
+       p0 = p + 1;
+       break;
+
+      default:
+       break;
       }
 
   scanner_cursor.line = line;