]> git.saurik.com Git - bison.git/blobdiff - src/scan-gram.l
(yyremoveDeletes, yy_reduce_print, yyglrReduce, yyreportTree): Do not
[bison.git] / src / scan-gram.l
index 337f9db195872339e1bfb59be0f0b2bfc97c55b1..2e7823175eb393e38f969a6c9b64c46e89812308 100644 (file)
@@ -649,6 +649,11 @@ splice      (\\[ \f\t\v]*\n)*
 
 %%
 
+/* Keeps track of the maximum number of semantic values to the left of 
+   a handle (those referenced by $0, $-1, etc.) are required by the 
+   semantic actions of this grammar. */
+int max_left_semantic_context = 0;
+
 /* Set *LOC and adjust scanner cursor to account for token TOKEN of
    size SIZE.  */
 
@@ -781,6 +786,8 @@ handle_action_dollar (char *text, location loc)
       if (INT_MIN <= num && num <= rule_length && ! get_errno ())
        {
          int n = num;
+         if (1-n > max_left_semantic_context)
+           max_left_semantic_context = 1-n;
          if (!type_name && n > 0)
            type_name = symbol_list_n_type_name_get (current_rule, loc, n);
          if (!type_name && typed)
@@ -841,7 +848,7 @@ static inline bool
 handle_action_at (char *text, location loc)
 {
   char *cp = text + 1;
-  locations_flag = 1;
+  locations_flag = true;
 
   if (! current_rule)
     return false;