]> git.saurik.com Git - bison.git/commitdiff
Extract stack.hh from lalr1.cc.
authorAkim Demaille <demaille@gostai.com>
Tue, 23 Dec 2008 07:06:13 +0000 (08:06 +0100)
committerAkim Demaille <demaille@gostai.com>
Thu, 19 Feb 2009 20:49:46 +0000 (21:49 +0100)
* data/stack.hh: New.
* data/lalr1.cc: Extract from here.
* data/local.mk: Adjust.

ChangeLog
data/lalr1.cc
data/local.mk
data/stack.hh [new file with mode: 0644]

index 5eb84a0242e50f5b65d864b5b2eddc65081660ea..201351673086afbd1db94c313346a602b144e288 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2009-02-19  Akim Demaille  <demaille@gostai.com>
+
+       Extract stack.hh from lalr1.cc.
+       * data/stack.hh: New.
+       * data/lalr1.cc: Extract from here.
+       * data/local.mk: Adjust.
+
 2009-02-03  Joel E. Denny  <jdenny@ces.clemson.edu>
 
        Add reminder about uploading public key to keys.gnupg.net.
index 54b7038b28b69853ad931da7059a3bf8b1531f31..c3ea4e2679f75c32934914d686e855ae9e206a5a 100644 (file)
@@ -99,7 +99,7 @@ m4_define([b4_rhs_data],
 
 
 # b4_rhs_state(RULE-LENGTH, NUM)
-# -----------------------------
+# ------------------------------
 # The state corresponding to the symbol #NUM, where the current
 # rule has RULE-LENGTH symbols on RHS.
 m4_define([b4_rhs_state],
@@ -384,6 +384,7 @@ b4_locations_if(
 [# Backward compatibility.
 m4_define([b4_location_constructors])
 m4_include(b4_pkgdatadir/[location.cc])])
+m4_include(b4_pkgdatadir/[stack.hh])
 
 # We do want M4 expansion after # for CPP macros.
 m4_changecom()
@@ -1500,105 +1501,6 @@ b4_error_verbose_if([int yystate, int yytoken],
 
 ]b4_lex_symbol_if([], [b4_yytranslate_definition])[
 ]b4_namespace_close[
-
 ]b4_epilogue[]dnl
-@output(b4_dir_prefix[]stack.hh@)@
-b4_copyright([Stack handling for Bison parsers in C++])[
-
-#ifndef BISON_STACK_HH
-# define BISON_STACK_HH
-
-#include <deque>
-
-]b4_namespace_open[
-  template <class T, class S = std::deque<T> >
-  class stack
-  {
-  public:
-
-    // Hide our reversed order.
-    typedef typename S::reverse_iterator iterator;
-    typedef typename S::const_reverse_iterator const_iterator;
-
-    stack () : seq_ ()
-    {
-    }
-
-    stack (unsigned int n) : seq_ (n)
-    {
-    }
-
-    inline
-    T&
-    operator [] (unsigned int i)
-    {
-      return seq_[i];
-    }
-
-    inline
-    const T&
-    operator [] (unsigned int i) const
-    {
-      return seq_[i];
-    }
-
-    inline
-    void
-    push (const T& t)
-    {
-      seq_.push_front (t);
-    }
-
-    inline
-    void
-    pop (unsigned int n = 1)
-    {
-      for (; n; --n)
-       seq_.pop_front ();
-    }
-
-    inline
-    typename S::size_type
-    size () const
-    {
-      return seq_.size ();
-    }
-
-    inline const_iterator begin () const { return seq_.rbegin (); }
-    inline const_iterator end ()   const { return seq_.rend ();   }
-
-  private:
-    /// The wrapped container.
-    S seq_;
-  };
-
-  /// Present a slice of the top of a stack.
-  template <class T, class S = stack<T> >
-  class slice
-  {
-  public:
-
-    slice (const S& stack,
-          unsigned int range) : stack_ (stack),
-                                range_ (range)
-    {
-    }
-
-    inline
-    const T&
-    operator [] (unsigned int i) const
-    {
-      return stack_[range_ - i];
-    }
-
-  private:
-
-    const S& stack_;
-    unsigned int range_;
-  };
-]b4_namespace_close[
-
-#endif // not BISON_STACK_HH[]dnl
-]
 m4_divert_pop(0)
 m4_popdef([b4_copyright_years])dnl
index 9e0d521d5429651e2ba367d6ca10f1f595d948fb..55802158df0e1404585786180c60cc00506cd1e8 100644 (file)
@@ -27,6 +27,7 @@ dist_pkgdata_DATA =                           \
   data/lalr1.cc                                        \
   data/lalr1.java                              \
   data/location.cc                             \
+  data/stack.hh                                        \
   data/yacc.c
 
 m4sugardir = $(pkgdatadir)/m4sugar
diff --git a/data/stack.hh b/data/stack.hh
new file mode 100644 (file)
index 0000000..cb8e696
--- /dev/null
@@ -0,0 +1,135 @@
+# C++ skeleton for Bison
+
+# Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+m4_pushdef([b4_copyright_years],
+           [2002, 2003, 2004, 2005, 2006, 2007, 2008])
+
+# We do want M4 expansion after # for CPP macros.
+m4_changecom()
+m4_divert_push(0)dnl
+@output(b4_dir_prefix[]stack.hh@)@
+b4_copyright([Stack handling for Bison parsers in C++])[
+
+#ifndef BISON_STACK_HH
+# define BISON_STACK_HH
+
+#include <deque>
+
+]b4_namespace_open[
+  template <class T, class S = std::deque<T> >
+  class stack
+  {
+  public:
+    // Hide our reversed order.
+    typedef typename S::reverse_iterator iterator;
+    typedef typename S::const_reverse_iterator const_iterator;
+
+    stack ()
+      : seq_ ()
+    {
+    }
+
+    stack (unsigned int n)
+      : seq_ (n)
+    {
+    }
+
+    inline
+    T&
+    operator [] (unsigned int i)
+    {
+      return seq_[i];
+    }
+
+    inline
+    const T&
+    operator [] (unsigned int i) const
+    {
+      return seq_[i];
+    }
+
+    inline
+    void
+    push (const T& t)
+    {
+      seq_.push_front (t);
+    }
+
+    inline
+    void
+    pop (unsigned int n = 1)
+    {
+      for (; n; --n)
+       seq_.pop_front ();
+    }
+
+    inline
+    typename S::size_type
+    size () const
+    {
+      return seq_.size ();
+    }
+
+    inline
+    const_iterator
+    begin () const
+    {
+      return seq_.rbegin ();
+    }
+
+    inline
+    const_iterator
+    end () const
+    {
+      return seq_.rend ();
+    }
+
+  private:
+    /// The wrapped container.
+    S seq_;
+  };
+
+  /// Present a slice of the top of a stack.
+  template <class T, class S = stack<T> >
+  class slice
+  {
+  public:
+    slice (const S& stack, unsigned int range)
+      : stack_ (stack),
+        range_ (range)
+    {
+    }
+
+    inline
+    const T&
+    operator [] (unsigned int i) const
+    {
+      return stack_[range_ - i];
+    }
+
+  private:
+    const S& stack_;
+    unsigned int range_;
+  };
+]b4_namespace_close[
+
+#endif // not BISON_STACK_HH[]dnl
+]
+m4_divert_pop(0)
+m4_popdef([b4_copyright_years])dnl
+m4_changecom([#])