[libpuma] Initial import.

Jerry James jjames at fedoraproject.org
Tue Oct 21 15:20:42 UTC 2014


commit 66b84344b0fad0d9c77cd143dc3e1eb78db273f4
Author: Jerry James <jamesjer at betterlinux.com>
Date:   Tue Oct 21 09:20:23 2014 -0600

    Initial import.

 .gitignore            |    1 +
 ac++.1                |   65 ++
 ag++.1                |   62 ++
 libpuma-doxygen.patch |  150 ++++
 libpuma-lexertl.patch | 2165 +++++++++++++++++++++++++++++++++++++++++++++++++
 libpuma-shared.patch  |   37 +
 libpuma-test.patch    |   26 +
 libpuma.spec          |  230 ++++++
 sources               |    1 +
 9 files changed, 2737 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e69de29..132c0f7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/ac-woven-1.2.tar.gz
diff --git a/ac++.1 b/ac++.1
new file mode 100644
index 0000000..8d80d61
--- /dev/null
+++ b/ac++.1
@@ -0,0 +1,65 @@
+.\" auto-generated by docbook2man-spec from docbook-utils package
+.TH "AspectC++" "1" "10 February 2005" "" ""
+.SH NAME
+aspectc++ \- aspect weaver for C++
+.SH SYNOPSIS
+.sp
+\fBac++\fR \fB -p \fIsrcdir\fB -d \fIdestdir\fB\fR
+.sp
+\fBac++\fR \fB -c \fIinput\fB -o \fIoutput\fB\fR
+.SH "DESCRIPTION"
+.PP
+This manual page documents briefly the
+\fBac++\fR command.
+.PP
+\fBac++\fR is the AspectC++ weaver. \fBac++\fR
+does source-to-source translation. This manual page documents the minimum
+needed in order to use \fBac++\fR\&. For a better reference,
+see AspectC++ documentation.
+.PP
+The first syntax form above invokes \fBac++\fR in WPT
+mode, while the second one invokes it in STU mode (see OPERATION MODES
+below)
+.SH "OPERATION MODES"
+.PP
+\fBWPT\fR (whole program transformation) mode does the
+translation of the entire source tree into another one. This is useful to
+apply all the aspects of one source tree, generating other source tree
+with the aspects woven into the sources.
+.PP
+To use WPT mode, run \fBac++\fR with the first syntax form.
+Specify the original source tree in the \fBsrcdir\fR
+argument, and a name for the destination source tree in the
+\fBdestdir\fR argument.
+.PP
+\fBSTU\fR (single translation unit) mode does the
+translation of one translation unit, namely a C++ single file, for
+exemple. This mode applies to the translation units all aspects that
+affect it.
+.PP
+To use STU mode, run \fBac++\fR with the second syntax form.
+Specify the translation unit in the \fBinput\fR argument,
+and the output file in the \fBoutput\fR argument. The
+\fB-c\fR works as in \fBg++\fR: if omitted,
+you're telling to \fBac++\fR to compile the source into an
+executable; if present, source will be compiled into an object (.o) file.
+.SH "OPTIONS"
+.PP
+Further options can be seen in AspectC++ documentation.
+.SH "SEE ALSO"
+.PP
+ag++ (1), g++ (1).
+.PP
+Again: for full reference on AspectC++ usage, see AspectC++
+documentation. It can be obtained from
+\fBhttp://www.aspectc.org\fR
+.SH "AUTHOR"
+.PP
+This manual page was written by Antonio S. de A. Terceiro <<asaterceiro at inf.ufrgs.br>> for the Debian
+system (but may be used by others). Permission is granted to copy,
+distribute and/or modify this document under the terms of the GNU
+General Public License, Version 2 any later version published by the Free
+Software Foundation.
+.PP
+On Debian systems, the complete text of the GNU General Public
+License can be found in /usr/share/common-licenses/GPL.
diff --git a/ag++.1 b/ag++.1
new file mode 100644
index 0000000..5f0a8aa
--- /dev/null
+++ b/ag++.1
@@ -0,0 +1,62 @@
+.\" auto-generated by docbook2man-spec from docbook-utils package
+.TH "AspectC++" "1" "10 February 2005" "" ""
+.SH NAME
+ag++ \- a frontend to ac++ and g++
+.SH SYNOPSIS
+.sp
+\fBag++\fR \fB -o \fIoutput\fB \fIinput.cpp\fB\fR
+.sp
+\fBag++\fR \fB -c -o \fIoutput.o\fB -o \fIinput.cpp\fB\fR
+.SH "DESCRIPTION"
+.PP
+This manual page documents briefly the
+\fBag++\fR command.
+.PP
+\fBag++\fR is a frontend to ac++ and g++ provided by
+AspectC++. For a better (and more
+complete) reference, see the AspectC++ documentation.
+.PP
+\fBag++\fR
+is called much like g++ itself. Check the two syntax forms above
+and follow these explanations:
+.PP
+The first syntax form takes \fBinput.cpp\fR and generates
+an executable named \fBoutput\fR, after weaving into
+input.cpp all the aspects that crosscut it.
+\fBinput.cpp\fR has restrictions as it would have if we
+were compiling a regular C++ program: it must have an
+\fBmain()\fR function, and everything you already know.
+.PP
+The second syntax form takes \fBinput.cpp\fR and generates
+an object file named \fBoutput.o\fR, after weaving into
+\fBinput.cpp\fR all the aspects that crosscut it.
+.PP
+\fBNote:\fR in both cases, \fBinput.cpp\fR
+isn't actually changed. \fBg++\fR weaves to temporary files.
+.PP
+Common \fBg++\fR arguments, like
+\fB-I INDCIR\fR,
+\fB-L LIBCIR\fR,
+\fB-l libfoo\fR, and so on,
+are recognized by \fBag++\fR and rightly passed to
+\fBg++\fR\&.
+.SH "OPTIONS"
+.PP
+Further options can be seen in AspectC++ documentation.
+.SH "SEE ALSO"
+.PP
+ag++ (1), g++ (1).
+.PP
+Again: for full reference on AspectC++ usage, see AspectC++
+documentation. It can be obtained from
+\fBhttp://www.aspectc.org\fR
+.SH "AUTHOR"
+.PP
+This manual page was written by Antonio S. de A. Terceiro <<asaterceiro at inf.ufrgs.br>> for
+the Debian system (but may be used by others). Permission is
+granted to copy, distribute and/or modify this document under
+the terms of the GNU General Public License, Version 2 any 
+later version published by the Free Software Foundation.
+.PP
+On Debian systems, the complete text of the GNU General Public
+License can be found in /usr/share/common-licenses/GPL.
diff --git a/libpuma-doxygen.patch b/libpuma-doxygen.patch
new file mode 100644
index 0000000..193a2e2
--- /dev/null
+++ b/libpuma-doxygen.patch
@@ -0,0 +1,150 @@
+--- ./aspectc++/Puma/src/common/OptsParser.h.orig	2013-09-17 10:53:05.000000000 -0600
++++ ./aspectc++/Puma/src/common/OptsParser.h	2014-02-03 21:00:00.000000000 -0700
+@@ -75,7 +75,7 @@ public:
+      FINISH = 0 /**< All options are handled */
+   };
+   
+-  /** \enum
++  /** \enum ArgType
+    *  Type of argument associated to an option  
+    */
+   enum ArgType { 
+@@ -84,7 +84,7 @@ public:
+      AT_OPTIONAL = 2 /**< %Option has optionally an argument */
+   };
+   
+-  /** \struct
++  /** \struct Option
+    *  Type for specifying an array of options recognized by the %Option %Parser.
+    *  An array of this type has to be passed to the constructor OptsParser::OptsParser()
+    */
+--- ./aspectc++/Puma/src/infos/CTemplateInstance.h.orig	2012-05-08 04:08:58.000000000 -0600
++++ ./aspectc++/Puma/src/infos/CTemplateInstance.h	2013-08-23 19:00:00.000000000 -0600
+@@ -115,7 +115,7 @@ public:
+   /** Get the scope in which the template was instantiated. */
+   CScopeInfo *PointOfInstantiationScope () const;
+   /** Set the point of instantiation (e.g. the template-id).
+-   *  \param tplid The template-id used to instantiate the template.
++   *  \param poi The point of instantiation.
+    *  \param scope The scope in which the template was instantiated. */
+   void PointOfInstantiation (CTree *poi, CScopeInfo *scope);
+ 
+@@ -138,7 +138,7 @@ public:
+   bool isInstantiated () const;
+ 
+   /** Indicate a delayed parse problem during instantiation.
+-   *  \param is true for yes, false for no. */
++   *  \param has true for yes, false for no. */
+   void hasDelayedParseProblem (bool has);
+ 
+   /** Check whether this instance had a delayed parse problem. */
+--- ./aspectc++/Puma/src/infos/CCandidateInfo.h.orig	2012-05-08 04:08:58.000000000 -0600
++++ ./aspectc++/Puma/src/infos/CCandidateInfo.h	2013-08-23 19:00:00.000000000 -0600
+@@ -42,11 +42,13 @@ class CFunctionInfo;
+  *  because of delayed parsing of member functions and the
+  *  initializers of their arguments. Here is an example:
+  *
++ *  \verbatim
+  *  struct has_deref {
+  *    template <typename Type> static long test(Type *, Type * = 42);
+  *    static char test(void *);
+  *    static const int value = sizeof(test((long *) 0));
+  *  };
++ *  \endverbatim
+  *
+  *  Here the first 'test' is selected, but an error message will
+  *  have to be issued. This is not considered as a substitution
+--- ./aspectc++/Puma/src/infos/types/CTypeInfo.h.orig	2013-07-04 11:31:32.000000000 -0600
++++ ./aspectc++/Puma/src/infos/types/CTypeInfo.h	2013-08-23 19:00:00.000000000 -0600
+@@ -214,7 +214,7 @@ public:
+    *  \param tdef Print the name of a typedef instead of the underlying type.
+    *  \param elaborated_type_spec Print elaborated type specifier before 
+    *                              class, union, and enumeration types.
+-   *  \param unnamed Print unnamed namespaces as '<unnamed>' */
++   *  \param unnamed Print unnamed namespaces as '\<unnamed\>' */
+   void TypeText (ostream &os, const char *name = (const char*)0,
+                  bool abs = false, bool tdef = false, 
+                  bool elaborated_type_spec = false,
+--- ./aspectc++/Puma/src/infos/CObjectInfo.h.orig	2011-07-27 21:03:58.000000000 -0600
++++ ./aspectc++/Puma/src/infos/CObjectInfo.h	2013-05-28 20:00:00.000000000 -0600
+@@ -425,9 +425,9 @@ public:
+   /** Get the name of entity described by this semantic object. */
+   const DString&      Name () const; 
+   /** Get the qualified name of the entity described by this semantic object. 
+-   *  \param abs Create root qualified name (like ::X::Y::Z).
++   *  \param abs Create root qualified name (like \::X\::Y\::Z).
+    *  \param tdef Insert the name of a typedef instead of the named type.
+-   *  \param unnamed Don't ignore unnamed namespaces (like <unnamed>::foo). */
++   *  \param unnamed Don't ignore unnamed namespaces (like \<unnamed\>\::foo). */
+   const char         *QualName (bool abs = false, bool tdef = false,
+                                 bool unnamed = false);
+   /** Get the semantic information object for the definition of an entity.
+--- ./aspectc++/Puma/src/parser/cparser/CTree.h.orig	2013-06-09 09:43:16.000000000 -0600
++++ ./aspectc++/Puma/src/parser/cparser/CTree.h	2013-08-23 19:00:00.000000000 -0600
+@@ -3126,7 +3126,6 @@ class CT_InitDeclarator : public CT_Decl
+ public:
+   /** Constructor.
+    *  \param d The declarator.
+-   *  \param e Optional extension list.
+    *  \param i The initializer. */
+   CT_InitDeclarator (CTree *d, CTree *i = 0) {
+     AddSon (sons[0], d); AddSon (sons[1], i);
+--- ./aspectc++/Puma/src/parser/Syntax.h.orig	2012-04-13 08:47:25.000000000 -0600
++++ ./aspectc++/Puma/src/parser/Syntax.h	2013-05-28 20:00:00.000000000 -0600
+@@ -191,8 +191,8 @@ public:
+   template <class T> bool seq (bool (T::*rule)());
+   /** Parse a sequence of the given grammar rule by calling RULE::check() in a loop.
+    *  \param s A pointer to the syntax object on which the rule should be executed
+-   *  \param SYNTAX The type of syntax
+-   *  \param RULE The class that represents the grammar rule
++   *  \tparam SYNTAX The type of syntax
++   *  \tparam RULE The class that represents the grammar rule
+    *  \return True if parsed successfully. */
+   template <typename SYNTAX, typename RULE> static bool seq (SYNTAX &s);
+   /** Parse a sequence of rule-separator pairs. 
+@@ -221,8 +221,8 @@ public:
+   template <class T> bool list (bool (T::*rule)(), int* separators, bool trailing_separator = false);
+   /** Parse a sequence of rule-separator pairs by calling RULE::check() in a loop.
+    *  \param s A pointer to the syntax object on which the rule should be executed
+-   *  \param SYNTAX The type of syntax
+-   *  \param RULE The class that represents the grammar rule
++   *  \tparam SYNTAX The type of syntax
++   *  \tparam RULE The class that represents the grammar rule
+    *  \param sep The separator token
+    *  \param trailing_sep True if a trailing separator token is allowed.
+    *  \return True if parsed successfully. */
+@@ -230,8 +230,8 @@ public:
+   static bool list (SYNTAX &s, int sep, bool trailing_sep = false);
+   /** Parse a sequence of rule-separator pairs by calling RULE::check() in a loop.
+    *  \param s A pointer to the syntax object on which the rule should be executed
+-   *  \param SYNTAX The type of syntax
+-   *  \param RULE The class that represents the grammar rule
++   *  \tparam SYNTAX The type of syntax
++   *  \tparam RULE The class that represents the grammar rule
+    *  \param separators The separator tokens
+    *  \param trailing_sep True if a trailing separator token is allowed.
+    *  \return True if parsed successfully. */
+@@ -246,8 +246,8 @@ public:
+    *  \return False if at EOF or a finish_token is read, true otherwise. */
+   template <class T> bool catch_error (bool (T::*rule)(), const char* msg, int* finish_tokens, int* skip_tokens);
+   /** Parse a grammar rule automatically catching parse errors. 
+-   *  \param SYNTAX The type of syntax
+-   *  \param RULE The class that represents the grammar rule
++   *  \tparam SYNTAX The type of syntax
++   *  \tparam RULE The class that represents the grammar rule
+    *  \param s A pointer to the syntax object on which the rule should be executed
+    *  \param msg The error message to show if the rule fails.
+    *  \param finish_tokens Set of token types that abort parsing the rule.
+@@ -257,9 +257,9 @@ public:
+   template <class SYNTAX, class RULE> 
+   static bool catch_error (SYNTAX &s, const char *msg, int *finish_tokens, int *skip_tokens);
+   /** First parse rule1 and if that rule fails discard all errors and parse the rule2.
+-   *  \param SYNTAX The type of syntax
+-   *  \param RULE1 The class that represents the first grammar rule
+-   *  \param RULE2 The class that represents the second grammar rule
++   *  \tparam SYNTAX The type of syntax
++   *  \tparam RULE1 The class that represents the first grammar rule
++   *  \tparam RULE2 The class that represents the second grammar rule
+    *  \param s The syntax object on which the rules should be executed */
+   template <class RULE1, class RULE2, class SYNTAX>
+   static bool ambiguous (SYNTAX &s);
diff --git a/libpuma-lexertl.patch b/libpuma-lexertl.patch
new file mode 100644
index 0000000..363c8cb
--- /dev/null
+++ b/libpuma-lexertl.patch
@@ -0,0 +1,2165 @@
+--- ./aspectc++/AspectC++/ACModel/MatchName.cc.orig	2013-07-06 09:42:17.000000000 -0600
++++ ./aspectc++/AspectC++/ACModel/MatchName.cc	2014-08-21 18:00:00.000000000 -0600
+@@ -69,7 +69,7 @@ bool MatchName::MRegComp::matches (const
+   string input (name);
+   string::const_iterator iter = input.begin ();
+   string::const_iterator end = input.end ();
+-  lexertl::match_results results (iter, end);
++  lexertl::smatch results (iter, end);
+   try {
+     lexertl::lookup (_compiled, results);
+   }
+--- ./aspectc++/AspectC++/PointCutExprParser.cc.orig	2013-04-03 07:25:28.000000000 -0600
++++ ./aspectc++/AspectC++/PointCutExprParser.cc	2014-08-21 18:00:00.000000000 -0600
+@@ -92,7 +92,7 @@ PointCutExpr *PointCutExprParser::parse
+     PointCutSearcher &searcher) {
+   string::const_iterator iter = input.begin ();
+   string::const_iterator end = input.end ();
+-  lexertl::match_results results (iter, end);
++  lexertl::smatch results (iter, end);
+ 
+   lexertl::lookup (state_machine_, results);
+   PointCutExpr *result = parse_or_expr (results, searcher);
+@@ -103,7 +103,7 @@ PointCutExpr *PointCutExprParser::parse
+   return result;
+ }
+ 
+-PointCutExpr *PointCutExprParser::parse_or_expr (lexertl::match_results &results,
++PointCutExpr *PointCutExprParser::parse_or_expr (lexertl::smatch &results,
+     PointCutSearcher &searcher) {
+ 
+   PointCutExpr *result = parse_and_expr (results, searcher);
+@@ -116,7 +116,7 @@ PointCutExpr *PointCutExprParser::parse_
+   return result;
+ }
+ 
+-PointCutExpr *PointCutExprParser::parse_and_expr (lexertl::match_results &results,
++PointCutExpr *PointCutExprParser::parse_and_expr (lexertl::smatch &results,
+     PointCutSearcher &searcher) {
+ 
+   PointCutExpr *result = parse_unary_expr (results, searcher);
+@@ -129,7 +129,7 @@ PointCutExpr *PointCutExprParser::parse_
+   return result;
+ }
+ 
+-PointCutExpr *PointCutExprParser::parse_unary_expr (lexertl::match_results &results,
++PointCutExpr *PointCutExprParser::parse_unary_expr (lexertl::smatch &results,
+     PointCutSearcher &searcher) {
+ 
+   PointCutExpr *result = parse_primary_expr (results, searcher);
+@@ -210,7 +210,7 @@ PointCutExpr *PointCutExprParser::parse_
+   return result;
+ }
+ 
+-PointCutExpr *PointCutExprParser::parse_primary_expr (lexertl::match_results &results,
++PointCutExpr *PointCutExprParser::parse_primary_expr (lexertl::smatch &results,
+     PointCutSearcher &searcher) {
+ 
+   PointCutExpr *result = 0;
+--- ./aspectc++/AspectC++/PointCutExprParser.h.orig	2013-03-17 12:43:09.000000000 -0600
++++ ./aspectc++/AspectC++/PointCutExprParser.h	2014-08-21 18:00:00.000000000 -0600
+@@ -34,10 +34,10 @@ class PointCutExprParser {
+ 
+   // private constructor; this is a singleton
+   PointCutExprParser ();
+-  PointCutExpr *parse_or_expr (lexertl::match_results &, PointCutSearcher &searcher);
+-  PointCutExpr *parse_and_expr (lexertl::match_results &, PointCutSearcher &searcher);
+-  PointCutExpr *parse_unary_expr (lexertl::match_results &, PointCutSearcher &searcher);
+-  PointCutExpr *parse_primary_expr (lexertl::match_results &, PointCutSearcher &searcher);
++  PointCutExpr *parse_or_expr (lexertl::smatch &, PointCutSearcher &searcher);
++  PointCutExpr *parse_and_expr (lexertl::smatch &, PointCutSearcher &searcher);
++  PointCutExpr *parse_unary_expr (lexertl::smatch &, PointCutSearcher &searcher);
++  PointCutExpr *parse_primary_expr (lexertl::smatch &, PointCutSearcher &searcher);
+ 
+ public:
+   static PointCutExprParser *instance () {
+--- ./aspectc++/Puma/gen-release/step1/inc/Puma/CLexerBuffer.h.orig	2012-02-14 07:10:56.000000000 -0700
++++ ./aspectc++/Puma/gen-release/step1/inc/Puma/CLexerBuffer.h	2014-07-29 21:00:00.000000000 -0600
+@@ -59,6 +59,12 @@ public:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+--- ./aspectc++/Puma/gen-release/step1/inc/Puma/CLexer.h.orig	2013-06-09 09:43:16.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step1/inc/Puma/CLexer.h	2014-08-18 21:00:00.000000000 -0600
+@@ -70,7 +70,7 @@ public:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step1/inc/Puma/LexerBuffer.h.orig	2012-02-14 07:48:59.000000000 -0700
++++ ./aspectc++/Puma/gen-release/step1/inc/Puma/LexerBuffer.h	2014-07-29 21:00:00.000000000 -0600
+@@ -55,7 +55,7 @@ public:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+--- ./aspectc++/Puma/gen-release/step1/inc/Puma/PreExprLexer.h.orig	2012-01-14 14:27:22.000000000 -0700
++++ ./aspectc++/Puma/gen-release/step1/inc/Puma/PreExprLexer.h	2014-08-18 21:00:00.000000000 -0600
+@@ -57,7 +57,7 @@ public:
+     PreExprLexer &_lexer;
+     LexerBuffer::ConstIterator _iter;
+     LexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<LexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<LexerBuffer::ConstIterator, std::size_t> _results;
+     bool _error;
+ 
+   public:
+--- ./aspectc++/Puma/gen-release/step1/src/RegComp.cc.orig	2012-01-04 07:35:06.000000000 -0700
++++ ./aspectc++/Puma/gen-release/step1/src/RegComp.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -65,7 +65,7 @@ bool RegComp::match (const string &str /
+   string input (str);
+   string::const_iterator iter = input.begin ();
+   string::const_iterator end = input.end ();
+-  lexertl::match_results results (iter, end);
++  lexertl::smatch results (iter, end);
+   try {
+     lexertl::lookup (_sm, results);
+   }
+--- ./aspectc++/Puma/gen-release/step2/inc/Puma/CLexerBuffer.h.orig	2013-10-03 16:04:50.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/inc/Puma/CLexerBuffer.h	2014-07-29 21:00:00.000000000 -0600
+@@ -174,6 +174,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+--- ./aspectc++/Puma/gen-release/step2/inc/Puma/CLexer.h.orig	2013-10-03 16:04:50.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/inc/Puma/CLexer.h	2014-08-18 21:00:00.000000000 -0600
+@@ -250,7 +250,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/inc/Puma/LexerBuffer.h.orig	2013-10-03 16:04:50.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/inc/Puma/LexerBuffer.h	2014-07-29 21:00:00.000000000 -0600
+@@ -170,7 +170,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+--- ./aspectc++/Puma/gen-release/step2/inc/Puma/PreExprLexer.h.orig	2013-10-03 16:04:50.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/inc/Puma/PreExprLexer.h	2014-08-18 21:00:00.000000000 -0600
+@@ -172,7 +172,7 @@ private:
+     PreExprLexer &_lexer;
+     LexerBuffer::ConstIterator _iter;
+     LexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<LexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<LexerBuffer::ConstIterator, std::size_t> _results;
+     bool _error;
+ 
+   public:
+--- ./aspectc++/Puma/gen-release/step2/src/CBuilder.cc.orig	2013-10-03 16:02:34.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CBuilder.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -77927,7 +77927,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -78065,6 +78065,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -78278,7 +78284,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -97582,7 +97588,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -98000,7 +98006,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -98523,7 +98529,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -162755,7 +162761,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CCBuilder.cc.orig	2013-10-03 16:01:17.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CCBuilder.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -78098,7 +78098,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -78236,6 +78236,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -78449,7 +78455,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -98356,7 +98362,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -98774,7 +98780,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -99297,7 +99303,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -179106,7 +179112,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CCLexer.cc.orig	2013-10-03 16:01:09.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CCLexer.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -3363,7 +3363,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -3501,6 +3501,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -3714,7 +3720,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -5922,7 +5928,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -8529,7 +8535,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -10122,7 +10128,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CCNameLookup.cc.orig	2013-10-03 16:01:26.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CCNameLookup.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -14829,7 +14829,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -14967,6 +14967,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -15180,7 +15186,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -15598,7 +15604,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -16121,7 +16127,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -65220,7 +65226,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -105150,7 +105156,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CCSemantic.cc.orig	2013-10-03 16:01:54.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CCSemantic.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -108765,7 +108765,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -108903,6 +108903,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -109116,7 +109122,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -126687,7 +126693,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -127105,7 +127111,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -127628,7 +127634,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -308690,7 +308696,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CCSemExpr.cc.orig	2013-10-03 16:01:35.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CCSemExpr.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -24553,7 +24553,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -24691,6 +24691,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -24904,7 +24910,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -25322,7 +25328,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -25845,7 +25851,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -108925,7 +108931,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -135397,7 +135403,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CCSemVisitor.cc.orig	2013-10-03 16:01:44.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CCSemVisitor.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -52452,7 +52452,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -52590,6 +52590,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -52803,7 +52809,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -55292,7 +55298,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -55722,7 +55728,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -57315,7 +57321,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -84482,7 +84488,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CCSyntax.cc.orig	2013-10-03 16:02:05.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CCSyntax.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -79894,7 +79894,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -80032,6 +80032,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -80245,7 +80251,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -97816,7 +97822,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -98234,7 +98240,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -98757,7 +98763,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -217611,7 +217617,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CFunctionInfo.cc.orig	2013-10-03 16:04:17.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CFunctionInfo.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -27537,7 +27537,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -27675,6 +27675,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -27888,7 +27894,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -28306,7 +28312,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -28829,7 +28835,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -63602,7 +63608,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -103422,7 +103428,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CLexer.cc.orig	2013-10-03 16:01:02.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CLexer.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -3290,7 +3290,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -3428,6 +3428,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -3641,7 +3647,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -5914,7 +5920,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -8399,7 +8405,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -8829,7 +8835,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -10422,7 +10428,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CPrintVisitor.cc.orig	2013-10-03 16:03:44.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CPrintVisitor.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -24736,7 +24736,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -24874,6 +24874,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -25087,7 +25093,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -27576,7 +27582,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -28006,7 +28012,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -29599,7 +29605,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -70080,7 +70086,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CProject.cc.orig	2013-10-03 16:03:36.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CProject.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -5847,7 +5847,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -5985,6 +5985,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -6198,7 +6204,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -6616,7 +6622,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -7139,7 +7145,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -16381,7 +16387,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -60562,7 +60568,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CScanner.cc.orig	2013-10-03 16:00:55.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CScanner.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -5641,7 +5641,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -5779,6 +5779,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -5992,7 +5998,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -6410,7 +6416,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -6933,7 +6939,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -11028,7 +11034,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CSemantic.cc.orig	2013-10-03 16:03:11.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CSemantic.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -21706,7 +21706,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -21844,6 +21844,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -22057,7 +22063,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -22475,7 +22481,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -22998,7 +23004,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -94611,7 +94617,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -178849,7 +178855,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CSemDatabase.cc.orig	2013-10-03 16:04:09.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CSemDatabase.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -9146,7 +9146,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -9284,6 +9284,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -9497,7 +9503,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -9915,7 +9921,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -10438,7 +10444,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -54129,7 +54135,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -93839,7 +93845,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CSemDeclSpecs.cc.orig	2013-10-03 16:03:28.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CSemDeclSpecs.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -51153,7 +51153,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -51291,6 +51291,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -51504,7 +51510,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -53993,7 +53999,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -54423,7 +54429,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -56016,7 +56022,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -71306,7 +71312,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CSemExpr.cc.orig	2013-10-03 16:02:52.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CSemExpr.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -68043,7 +68043,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -68181,6 +68181,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -68394,7 +68400,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -70883,7 +70889,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -71313,7 +71319,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -72906,7 +72912,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -87647,7 +87653,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CSemVisitor.cc.orig	2013-10-03 16:03:20.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CSemVisitor.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -65846,7 +65846,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -65984,6 +65984,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -66197,7 +66203,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -68686,7 +68692,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -69116,7 +69122,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -70709,7 +70715,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -85450,7 +85456,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CSyntax.cc.orig	2013-10-03 16:03:02.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CSyntax.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -79438,7 +79438,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -79576,6 +79576,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -79789,7 +79795,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -97360,7 +97366,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -97778,7 +97784,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -98301,7 +98307,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -171962,7 +171968,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/CTree.cc.orig	2013-10-03 16:02:43.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/CTree.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -90656,7 +90656,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -90794,6 +90794,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -91007,7 +91013,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -93496,7 +93502,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -93926,7 +93932,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -95519,7 +95525,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -122115,7 +122121,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/InstantiationParser.cc.orig	2013-10-03 16:02:15.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/InstantiationParser.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -26807,7 +26807,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -26945,6 +26945,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -27158,7 +27164,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -27576,7 +27582,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -28099,7 +28105,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -104066,7 +104072,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -245259,7 +245265,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/InstantiationSyntax.cc.orig	2013-10-03 16:02:25.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/InstantiationSyntax.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -79918,7 +79918,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -80056,6 +80056,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -80269,7 +80275,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -97840,7 +97846,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -98258,7 +98264,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -98781,7 +98787,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -230343,7 +230349,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/Parser.cc.orig	2013-10-03 16:04:00.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/Parser.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -26784,7 +26784,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -26922,6 +26922,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -27135,7 +27141,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -27553,7 +27559,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -28076,7 +28082,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -54909,7 +54915,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -94861,7 +94867,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/PreExprParser.cc.orig	2013-10-03 16:04:32.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/PreExprParser.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -2130,7 +2130,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -2336,7 +2336,7 @@ private:
+     PreExprLexer &_lexer;
+     LexerBuffer::ConstIterator _iter;
+     LexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<LexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<LexerBuffer::ConstIterator, std::size_t> _results;
+     bool _error;
+ 
+   public:
+--- ./aspectc++/Puma/gen-release/step2/src/PreFileIncluder.cc.orig	2013-10-03 16:00:32.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/PreFileIncluder.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -6073,7 +6073,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -6211,6 +6211,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -6424,7 +6430,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -6842,7 +6848,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -7365,7 +7371,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -15218,7 +15224,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -62091,7 +62097,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/PreParser.cc.orig	2013-10-03 16:04:40.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/PreParser.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -5799,7 +5799,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -5937,6 +5937,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -6150,7 +6156,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -6568,7 +6574,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -7091,7 +7097,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -20723,7 +20729,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -67486,7 +67492,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/PreprocessorParser.cc.orig	2013-10-03 16:00:40.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/PreprocessorParser.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -9191,7 +9191,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -9329,6 +9329,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -9542,7 +9548,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -9960,7 +9966,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -10483,7 +10489,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -17008,7 +17014,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -63881,7 +63887,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/gen-release/step2/src/RegComp.cc.orig	2012-01-04 07:35:06.000000000 -0700
++++ ./aspectc++/Puma/gen-release/step2/src/RegComp.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -65,7 +65,7 @@ bool RegComp::match (const string &str /
+   string input (str);
+   string::const_iterator iter = input.begin ();
+   string::const_iterator end = input.end ();
+-  lexertl::match_results results (iter, end);
++  lexertl::smatch results (iter, end);
+   try {
+     lexertl::lookup (_sm, results);
+   }
+--- ./aspectc++/Puma/gen-release/step2/src/Syntax.cc.orig	2013-10-03 16:03:52.000000000 -0600
++++ ./aspectc++/Puma/gen-release/step2/src/Syntax.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -39002,7 +39002,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+@@ -39140,6 +39140,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+@@ -39353,7 +39359,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -39771,7 +39777,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -40294,7 +40300,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -63310,7 +63316,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+@@ -103536,7 +103542,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/include/Puma/CLexerBuffer.h.orig	2013-10-03 16:04:50.000000000 -0600
++++ ./aspectc++/Puma/include/Puma/CLexerBuffer.h	2014-07-29 21:00:00.000000000 -0600
+@@ -174,6 +174,12 @@ private:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+--- ./aspectc++/Puma/include/Puma/CLexer.h.orig	2013-10-03 16:04:50.000000000 -0600
++++ ./aspectc++/Puma/include/Puma/CLexer.h	2014-08-18 21:00:00.000000000 -0600
+@@ -250,7 +250,7 @@ private:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/include/Puma/LexerBuffer.h.orig	2013-10-03 16:04:50.000000000 -0600
++++ ./aspectc++/Puma/include/Puma/LexerBuffer.h	2014-07-29 21:00:00.000000000 -0600
+@@ -170,7 +170,7 @@ private:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
+--- ./aspectc++/Puma/include/Puma/PreExprLexer.h.orig	2013-10-03 16:04:50.000000000 -0600
++++ ./aspectc++/Puma/include/Puma/PreExprLexer.h	2014-08-18 21:00:00.000000000 -0600
+@@ -172,7 +172,7 @@ private:
+     PreExprLexer &_lexer;
+     LexerBuffer::ConstIterator _iter;
+     LexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<LexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<LexerBuffer::ConstIterator, std::size_t> _results;
+     bool _error;
+ 
+   public:
+--- ./aspectc++/Puma/src/basics/RegComp.cc.orig	2012-01-04 07:35:06.000000000 -0700
++++ ./aspectc++/Puma/src/basics/RegComp.cc	2014-08-18 21:00:00.000000000 -0600
+@@ -65,7 +65,7 @@ bool RegComp::match (const string &str /
+   string input (str);
+   string::const_iterator iter = input.begin ();
+   string::const_iterator end = input.end ();
+-  lexertl::match_results results (iter, end);
++  lexertl::smatch results (iter, end);
+   try {
+     lexertl::lookup (_sm, results);
+   }
+--- ./aspectc++/Puma/src/cpp/PreExprLexer.h.orig	2012-01-14 14:27:22.000000000 -0700
++++ ./aspectc++/Puma/src/cpp/PreExprLexer.h	2014-08-18 21:00:00.000000000 -0600
+@@ -57,7 +57,7 @@ public:
+     PreExprLexer &_lexer;
+     LexerBuffer::ConstIterator _iter;
+     LexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<LexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<LexerBuffer::ConstIterator, std::size_t> _results;
+     bool _error;
+ 
+   public:
+--- ./aspectc++/Puma/src/scanner/CLexerBuffer.h.orig	2012-02-14 07:10:56.000000000 -0700
++++ ./aspectc++/Puma/src/scanner/CLexerBuffer.h	2014-07-29 21:00:00.000000000 -0600
+@@ -59,6 +59,12 @@ public:
+       LexerBuffer::ConstIterator (ptr), _continuations (0), _lines (0) {}
+     ConstIterator (const ConstIterator &r) :
+       LexerBuffer::ConstIterator (r), _continuations (r._continuations), _lines (r._lines) {}
++    ConstIterator &operator = (const ConstIterator &r) {
++      _ptr = r._ptr;
++      _continuations = r._continuations;
++      _lines = r._lines;
++      return *this;
++    }
+     ConstIterator &operator ++ () { next (); return *this; }
+     ConstIterator operator ++ (int) { ConstIterator res(*this); next (); return res; }
+     ConstIterator &adjust () { skip_nl (); return *this; }
+--- ./aspectc++/Puma/src/scanner/CLexer.h.orig	2013-06-09 09:43:16.000000000 -0600
++++ ./aspectc++/Puma/src/scanner/CLexer.h	2014-08-18 21:00:00.000000000 -0600
+@@ -70,7 +70,7 @@ public:
+     CLexerBuffer::ConstIterator _start;
+     CLexerBuffer::ConstIterator _iter;
+     CLexerBuffer::ConstIterator _end;
+-    lexertl::basic_match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
++    lexertl::match_results<CLexerBuffer::ConstIterator, std::size_t> _results;
+     enum { LM_NORMAL, LM_PRE, LM_DIR } _line_mode;
+     bool _error;
+     int _number;
+--- ./aspectc++/Puma/src/scanner/LexerBuffer.h.orig	2012-02-14 07:48:59.000000000 -0700
++++ ./aspectc++/Puma/src/scanner/LexerBuffer.h	2014-07-29 21:00:00.000000000 -0600
+@@ -55,7 +55,7 @@ public:
+ 
+     ConstIterator (const char *ptr = 0) : _ptr (ptr) {}
+     ConstIterator (const ConstIterator &r) : _ptr (r._ptr) {}
+-    ConstIterator &operator = (ConstIterator &r) { _ptr = r._ptr; return *this; }
++    ConstIterator &operator = (const ConstIterator &r) { _ptr = r._ptr; return *this; }
+     bool operator == (const ConstIterator &r) const { return _ptr == r._ptr; }
+     bool operator != (const ConstIterator &r) const { return _ptr != r._ptr; }
+     ConstIterator &operator ++ () { _ptr++; return *this; }
diff --git a/libpuma-shared.patch b/libpuma-shared.patch
new file mode 100644
index 0000000..c3a2801
--- /dev/null
+++ b/libpuma-shared.patch
@@ -0,0 +1,37 @@
+--- ./aspectc++/Ag++/Makefile.orig	2012-02-17 05:39:52.000000000 -0700
++++ ./aspectc++/Ag++/Makefile	2014-08-21 21:00:00.000000000 -0600
+@@ -33,7 +33,7 @@ ifneq ($(_TARGET),macosx)
+ 		LDFLAGS += -static
+ 	endif
+ 
+-LDFLAGS += -Wl,-Bstatic -L$(PUMA)/lib/$(TARGET) -lPuma
++LDFLAGS += -L$(PUMA)/lib/$(TARGET) -lPuma
+ 
+ ifneq ($(SHARED),)
+ LDFLAGS += -Wl,-Bdynamic
+--- ./aspectc++/AspectC++/Makefile.orig	2013-10-03 11:35:54.000000000 -0600
++++ ./aspectc++/AspectC++/Makefile	2014-08-21 21:00:00.000000000 -0600
+@@ -27,7 +27,7 @@ ifneq ($(_TARGET),macosx)
+         ifeq ($(SHARED),)
+                 LDFLAGS += -static
+         endif
+-	LDFLAGS += -Wl,-Bstatic -L$(PUMA)/lib/$(TARGET) -lPuma 
++	LDFLAGS += -L$(PUMA)/lib/$(TARGET) -lPuma 
+ ifneq ($(SHARED),)
+ 	LDFLAGS += -Wl,-Bdynamic
+ endif
+--- ./aspectc++/Puma/src/compile.mk.orig	2012-01-04 07:35:06.000000000 -0700
++++ ./aspectc++/Puma/src/compile.mk	2014-08-21 18:00:00.000000000 -0600
+@@ -27,10 +27,10 @@ DEPFILES   := $(addprefix $(DEPDIR)/, $(
+ 
+ LIBRARY    := $(LIBDIR)/libPuma.a
+ # disable building of shared library, we link statically
+-# SHARED     := $(LIBDIR)/libPuma.so
++SHARED     := $(LIBDIR)/libPuma.so
+ LIBRARIES  := $(LIBRARY)
+ ifeq ($(_TARGET),linux)
+-LIBRARIES  := $(LIBRARIES) $(SHARED)
++LIBRARIES  := $(SHARED)
+ endif
+ 
+ CPPFLAGS   += -I $(EXTDIR) -I $(STEP2)/inc
diff --git a/libpuma-test.patch b/libpuma-test.patch
new file mode 100644
index 0000000..6e8cf0e
--- /dev/null
+++ b/libpuma-test.patch
@@ -0,0 +1,26 @@
+--- ./aspectc++/AspectC++/tests/RepoInvalid/feature.ref.orig	2013-10-01 11:19:54.000000000 -0600
++++ ./aspectc++/AspectC++/tests/RepoInvalid/feature.ref	2014-08-28 22:00:00.000000000 -0600
+@@ -1,3 +1,4 @@
++make[2]: Entering directory '/builddir/build/BUILD/libpuma-1.2/aspectc++/AspectC++/tests/RepoInvalid'
+ Weaving main.cc
+ * Running ac++ 1.2
+ * Handling Translation Unit `main.cc'.
+@@ -16,4 +17,5 @@ Weaving main.cc
+     Aspect ordering ...
+     Updating project repository 'repo.inv'
+     Aborting
++make[2]: Leaving directory '/builddir/build/BUILD/libpuma-1.2/aspectc++/AspectC++/tests/RepoInvalid'
+ error: project repository 'repo.inv' cannot be opened or is invalid
+--- ./aspectc++/AspectC++/tests/RepoVersion/feature.ref.orig	2013-10-01 11:19:54.000000000 -0600
++++ ./aspectc++/AspectC++/tests/RepoVersion/feature.ref	2014-08-28 22:00:00.000000000 -0600
+@@ -1,3 +1,4 @@
++make[2]: Entering directory '/builddir/build/BUILD/libpuma-1.2/aspectc++/AspectC++/tests/RepoVersion'
+ Weaving main.cc
+ * Running ac++ 1.2
+ * Handling Translation Unit `main.cc'.
+@@ -33,4 +34,5 @@ Weaving main.cc
+ * Done
+ Compiling main.acc
+ Linking
++make[2]: Leaving directory '/builddir/build/BUILD/libpuma-1.2/aspectc++/AspectC++/tests/RepoVersion'
+ warning: project file version '0.0.1' differs from ac++ version
diff --git a/libpuma.spec b/libpuma.spec
new file mode 100644
index 0000000..7069548
--- /dev/null
+++ b/libpuma.spec
@@ -0,0 +1,230 @@
+%global gccver %(gcc --version | sed -n 's/gcc (GCC) \\([[:digit:].]*\\).*/\\1/p')
+
+Name:           libpuma
+Version:        1.2
+Release:        2%{?dist}
+Summary:        Library for parsing and manipulating C/C++ source code
+
+License:        GPLv2+
+URL:            http://aspectc.org/
+Source0:        http://aspectc.org/releases/%{version}/ac-woven-%{version}.tar.gz
+# Man pages from Debian
+Source1:        ac++.1
+Source2:        ag++.1
+# http://www.aspectc.org/bugzilla/show_bug.cgi?id=519
+Patch0:         %{name}-doxygen.patch
+# Fedora-specific: build a shared library instead of a static library.
+Patch1:         %{name}-shared.patch
+# Fedora-specific: fix a few tests
+Patch2:         %{name}-test.patch
+# Fedora-specific: adapt to the newer lexertl in Fedora.
+Patch3:         %{name}-lexertl.patch
+
+BuildRequires:  doxygen
+BuildRequires:  graphviz
+BuildRequires:  lexertl-devel
+BuildRequires:  libxml2-devel
+
+# The generated config depends on a specific version of gcc/g++
+Requires:       gcc-c++ = %{gccver}
+Requires:       libstdc++-devel%{?_isa}
+Requires:       glibc-devel%{?_isa}
+
+%description
+PUMA is a library of C++ classes for parsing and manipulating C/C++
+source code.  It provides different levels of analyzing source code,
+i.e. lexical, syntactical, and semantical analyses.  Additionally, PUMA
+contains its own C preprocessor following the macro language understood
+by the GNU C preprocessor (cpp).
+
+The parsers for C and C++ are based on an extensible recursive descent
+parser architecture that can be easily adapted for your own needs by
+inheriting from one of the parsers.  They are oriented on the ISO/IEC
+standards defined in ISO/IEC 9899:1999(E) and ISO/IEC 14882:1998(E) but
+also supporting a list of extensions to the C and C++ languages.  The
+information about the source code being analyzed is organized in an
+attributed syntax tree referring to a separate structure of semantic
+information.
+
+For the purpose of manipulating source code PUMA provides a syntax based
+mechanism for searching code structures.  Manipulations on the source
+code can be collected and validated before executing them in a single
+transaction.
+
+%package devel
+Summary:        Development files for %{name}
+Requires:       %{name}%{?_isa} = %{version}-%{release}
+
+%description devel
+Header files and library links for developing applications that use
+AspectC++.
+
+%package doc
+Summary:        Documentation for %{name}
+BuildArch:      noarch
+
+%description doc
+User and developer documentation for %{name}.
+
+%package -n aspectc++
+Summary:        Compiler for C/C++ with aspect-oriented extensions
+Requires:       %{name}%{?_isa} = %{version}-%{release}
+
+%description -n aspectc++
+AspectC++ extends the AspectJ approach to object-oriented programming to
+the C and C++ languages.  This package contains a compiler for
+extensions to the C and C++ languages that recognizees a set of aspect-
+oriented extensions.
+
+%prep
+%setup -q -c
+%patch0
+%patch1
+%patch2
+%patch3
+
+# Remove prebuilt objects
+rm -f aspectc++/Puma/tools/lemon/lemon
+
+# Show compiler flags
+sed -i 's/@\$(C/$(C/' aspectc++/Puma/src/compile.mk \
+    aspectc++/AspectC++/Makefile aspectc++/AspectC++/ACModel/Makefile \
+    aspectc++/Ag++/Makefile
+
+# Fix an install directory
+if [ "%{_libdir}" = "%{_prefix}/lib64" ]; then
+  sed -i 's,\$(PREFIX)/lib,$(PREFIX)/lib64,' aspectc++/Puma/Makefile
+fi
+
+# Use the system lexertl instead of the bundled version
+rm -fr aspectc++/Puma/extern/lexertl
+cp -a %{_includedir}/lexertl aspectc++/Puma/extern/lexertl
+
+# Pass build flags to the linker, and set an soname
+sed "s|-shared|& %{optflags} $RPM_LD_FLAGS -Wl,-h,libPuma.so.0 -Wl,--as-needed|" \
+    -i aspectc++/Puma/src/compile.mk
+
+# Change the default location of the config file, for multilib builds
+sed -i 's,/etc/puma.config,%{_libdir}/%{name}/puma.config,' \
+    aspectc++/Puma/gen-release/step1/src/Config.cc \
+    aspectc++/Puma/gen-release/step2/src/Config.cc \
+    aspectc++/Puma/src/common/Config.cc
+
+# Fix a test that is broken on 64-bit systems
+%if %{__isa_bits} == 64
+sed -i 's/unsigned int/unsigned long int/' \
+    aspectc++/AspectC++/tests/ExecAdviceNewDelete/feature.ref
+%endif
+
+# Do the initial build of the prewoven sources in a separate build dir
+cp -a aspectc++ aspectc++.prewoven
+
+%build
+# Phase 1: bootstrap by building the tools with the prewoven sources.
+pushd aspectc++.prewoven
+
+# Support __int128 if gcc supports it
+if gcc -dM -E - <<<'' | grep -Fq __SIZEOF_INT128__; then
+  export AC_OPTFLAGS=--gnu-int128
+fi
+BUILDFLAGS="%{optflags} -fsigned-char -Wno-unused-local-typedefs $RPM_LD_FLAGS"
+
+# Build the bootstrap binaries
+make %{?_smp_mflags} -C Puma compile CFLAGS="$BUILDFLAGS -fPIC"
+ln -s libPuma.so Puma/lib/linux-release/libPuma.so.0
+make %{?_smp_mflags} -C AspectC++ CFLAGS="$BUILDFLAGS" SHARED=1
+make %{?_smp_mflags} -C Ag++ CFLAGS="$BUILDFLAGS" SHARED=1
+
+# Generate a config for the binaries to use
+export LD_LIBRARY_PATH=$PWD/Puma/lib/linux-release
+AspectC++/bin/linux-release/ag++ --gen_config
+export PUMA_CONFIG=$PWD/puma.config
+ACPP=$PWD/AspectC++/bin/linux-release/ac++
+popd
+
+# Phase 2: use the bootstrap tools to do a full build from the unwoven sources
+pushd aspectc++
+
+# Weave Puma
+make %{?_smp_mflags} -C Puma clean
+make %{?_smp_mflags} -C Puma all CFLAGS="$BUILDFLAGS -fPIC" AC=$ACPP
+make %{?_smp_mflags} -C Puma doc CFLAGS="$BUILDFLAGS -fPIC" AC=$ACPP
+ln -s libPuma.so Puma/lib/linux-release/libPuma.so.0
+unset LD_LIBRARY_PATH
+
+# Rebuild ac++ and ag++ with the newly woven Puma
+make %{?_smp_mflags} -C AspectC++ CFLAGS="$BUILDFLAGS" SHARED=1
+make %{?_smp_mflags} -C Ag++ CFLAGS="$BUILDFLAGS" SHARED=1
+popd
+
+%install
+# Install the library
+make -C aspectc++/Puma install PREFIX=%{buildroot}%{_prefix}
+mv %{buildroot}%{_libdir}/libPuma.so %{buildroot}%{_libdir}/libPuma.so.0.0.0
+rm -f %{buildroot}%{_libdir}/libPuma.so.0
+ln -s libPuma.so.0.0.0 %{buildroot}%{_libdir}/libPuma.so.0
+ln -s libPuma.so.0 %{buildroot}%{_libdir}/libPuma.so
+
+# Install the binaries
+mkdir -p %{buildroot}%{_bindir}
+cp -p aspectc++/AspectC++/bin/linux-release/* %{buildroot}%{_bindir}
+cp -p aspectc++/Ag++/bin/linux-release/* %{buildroot}%{_bindir}
+
+# Install the man pages
+mkdir -p %{buildroot}%{_mandir}/man1
+cp -p %{SOURCE1} %{SOURCE2} %{buildroot}%{_mandir}/man1
+
+# Generate the default config
+mkdir -p %{buildroot}%{_libdir}/%{name}
+pushd %{buildroot}%{_libdir}/%{name}
+LD_LIBRARY_PATH=%{buildroot}%{_libdir} %{buildroot}%{_bindir}/ag++ --gen_config
+chmod 0644 puma.config
+popd
+
+# Fix permissions
+chmod 0755 %{buildroot}%{_libdir}/libPuma.so.0.0.0 %{buildroot}%{_bindir}/*
+
+%check
+export LD_LIBRARY_PATH=%{buildroot}%{_libdir}
+export PUMA_CONFIG=%{buildroot}%{_libdir}/%{name}/puma.config
+make -C aspectc++/Puma test
+make -C aspectc++/AspectC++ test SHARED=1
+make -C aspectc++/Ag++ test SHARED=1
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files
+%doc aspectc++/Puma/README
+%license aspectc++/Puma/COPYING
+%{_libdir}/libPuma.so.*
+%{_libdir}/%{name}/
+
+%files devel
+%{_includedir}/Puma/
+%{_libdir}/libPuma.so
+
+%files doc
+%doc aspectc++/Puma/doc/RefMan/html aspectc++/Puma/examples
+%doc aspectc++/Puma/doc/UsersManual/UsersManual.pdf
+%doc aspectc++/AspectC++/doc/CompilerManual/CompilerManual.pdf
+%doc aspectc++/AspectC++/doc/LanguageReference/*.pdf
+%doc aspectc++/AspectC++/doc/NoE_ExecModelSurvey/ac++exec-survey.pdf
+%doc aspectc++/AspectC++/doc/NoE_ShortSurvey/ac++lang-survey.pdf
+%doc aspectc++/AspectC++/doc/QuickRef/ac++quickref.pdf
+
+%files -n aspectc++
+%doc aspectc++/README
+%{_bindir}/*
+%{_mandir}/man1/*
+
+%changelog
+* Wed Oct 15 2014 Jerry James <loganjerry at gmail.com> - 1.2-2
+- Do not fix the FSF's address in the license file (or anywhere else)
+- Drop -doc subpackage dependencies
+- Add dependencies from main package to libstdc++-devel and glibc-devel
+- Move puma.config to the main package, and put it in _libdir/libpuma
+
+* Fri Aug 29 2014 Jerry James <loganjerry at gmail.com> - 1.2-1
+- Initial RPM
diff --git a/sources b/sources
index e69de29..f7a7223 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+b43cf409efd773395feba296be327773  ac-woven-1.2.tar.gz


More information about the scm-commits mailing list