Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision f083335cbb2dd1289b04076c0103786b484d1d20)
+++ src/Parser/DeclarationNode.cc	(revision 25bca423faf4c63a3235517f62afb359f11dbe6a)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 12:34:05 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 22 08:39:29 2018
-// Update Count     : 1074
+// Last Modified On : Wed Jun  6 15:57:50 2018
+// Update Count     : 1076
 //
 
@@ -174,5 +174,5 @@
 }
 
-DeclarationNode * DeclarationNode::newFunction( string * name, DeclarationNode * ret, DeclarationNode * param, StatementNode * body ) {
+DeclarationNode * DeclarationNode::newFunction( const string * name, DeclarationNode * ret, DeclarationNode * param, StatementNode * body ) {
 	DeclarationNode * newnode = new DeclarationNode;
 	newnode->name = name;
@@ -245,5 +245,5 @@
 } // DeclarationNode::newForall
 
-DeclarationNode * DeclarationNode::newFromTypedef( string * name ) {
+DeclarationNode * DeclarationNode::newFromTypedef( const string * name ) {
 	DeclarationNode * newnode = new DeclarationNode;
 	newnode->type = new TypeData( TypeData::SymbolicInst );
@@ -268,5 +268,5 @@
 } // DeclarationNode::newAggregate
 
-DeclarationNode * DeclarationNode::newEnum( string * name, DeclarationNode * constants, bool body ) {
+DeclarationNode * DeclarationNode::newEnum( const string * name, DeclarationNode * constants, bool body ) {
 	assert( name );
 	DeclarationNode * newnode = new DeclarationNode;
@@ -278,5 +278,5 @@
 } // DeclarationNode::newEnum
 
-DeclarationNode * DeclarationNode::newEnumConstant( string * name, ExpressionNode * constant ) {
+DeclarationNode * DeclarationNode::newEnumConstant( const string * name, ExpressionNode * constant ) {
 	DeclarationNode * newnode = new DeclarationNode;
 	newnode->name = name;
@@ -285,5 +285,5 @@
 } // DeclarationNode::newEnumConstant
 
-DeclarationNode * DeclarationNode::newName( string * name ) {
+DeclarationNode * DeclarationNode::newName( const string * name ) {
 	DeclarationNode * newnode = new DeclarationNode;
 	newnode->name = name;
@@ -291,5 +291,5 @@
 } // DeclarationNode::newName
 
-DeclarationNode * DeclarationNode::newFromTypeGen( string * name, ExpressionNode * params ) {
+DeclarationNode * DeclarationNode::newFromTypeGen( const string * name, ExpressionNode * params ) {
 	DeclarationNode * newnode = new DeclarationNode;
 	newnode->type = new TypeData( TypeData::SymbolicInst );
@@ -300,5 +300,5 @@
 } // DeclarationNode::newFromTypeGen
 
-DeclarationNode * DeclarationNode::newTypeParam( TypeClass tc, string * name ) {
+DeclarationNode * DeclarationNode::newTypeParam( TypeClass tc, const string * name ) {
 	DeclarationNode * newnode = new DeclarationNode;
 	newnode->type = nullptr;
@@ -331,5 +331,5 @@
 } // DeclarationNode::newTraitUse
 
-DeclarationNode * DeclarationNode::newTypeDecl( string * name, DeclarationNode * typeParams ) {
+DeclarationNode * DeclarationNode::newTypeDecl( const string * name, DeclarationNode * typeParams ) {
 	DeclarationNode * newnode = new DeclarationNode;
 	newnode->name = name;
@@ -406,5 +406,5 @@
 } // DeclarationNode::newBuiltinType
 
-DeclarationNode * DeclarationNode::newAttr( string * name, ExpressionNode * expr ) {
+DeclarationNode * DeclarationNode::newAttr( const string * name, ExpressionNode * expr ) {
 	DeclarationNode * newnode = new DeclarationNode;
 	newnode->type = nullptr;
@@ -415,5 +415,5 @@
 }
 
-DeclarationNode * DeclarationNode::newAttr( string * name, DeclarationNode * type ) {
+DeclarationNode * DeclarationNode::newAttr( const string * name, DeclarationNode * type ) {
 	DeclarationNode * newnode = new DeclarationNode;
 	newnode->type = nullptr;
@@ -424,5 +424,5 @@
 }
 
-DeclarationNode * DeclarationNode::newAttribute( string * name, ExpressionNode * expr ) {
+DeclarationNode * DeclarationNode::newAttribute( const string * name, ExpressionNode * expr ) {
 	DeclarationNode * newnode = new DeclarationNode;
 	newnode->type = nullptr;
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision f083335cbb2dd1289b04076c0103786b484d1d20)
+++ src/Parser/ParseNode.h	(revision 25bca423faf4c63a3235517f62afb359f11dbe6a)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Jun  4 22:21:04 2018
-// Update Count     : 832
+// Last Modified On : Wed Jun  6 16:17:18 2018
+// Update Count     : 843
 //
 
@@ -77,5 +77,5 @@
 
 	ParseNode * next = nullptr;
-	std::string * name = nullptr;
+	const std::string * name = nullptr;
 	CodeLocation location = yylloc;
 }; // ParseNode
@@ -171,8 +171,8 @@
 };
 
-Expression * build_constantInteger( std::string &str );
-Expression * build_constantFloat( std::string &str );
-Expression * build_constantChar( std::string &str );
-Expression * build_constantStr( std::string &str );
+Expression * build_constantInteger( std::string & str ); // these 4 routines modify the string
+Expression * build_constantFloat( std::string & str );
+Expression * build_constantChar( std::string & str );
+Expression * build_constantStr( std::string & str );
 Expression * build_field_name_FLOATING_FRACTIONconstant( const std::string & str );
 Expression * build_field_name_FLOATING_DECIMALconstant( const std::string & str );
@@ -230,15 +230,15 @@
 	static DeclarationNode * newBuiltinType( BuiltinType );
 	static DeclarationNode * newForall( DeclarationNode * );
-	static DeclarationNode * newFromTypedef( std::string * );
-	static DeclarationNode * newFunction( std::string * name, DeclarationNode * ret, DeclarationNode * param, StatementNode * body );
+	static DeclarationNode * newFromTypedef( const std::string * );
+	static DeclarationNode * newFunction( const std::string * name, DeclarationNode * ret, DeclarationNode * param, StatementNode * body );
 	static DeclarationNode * newAggregate( Aggregate kind, const std::string * name, ExpressionNode * actuals, DeclarationNode * fields, bool body );
-	static DeclarationNode * newEnum( std::string * name, DeclarationNode * constants, bool body );
-	static DeclarationNode * newEnumConstant( std::string * name, ExpressionNode * constant );
-	static DeclarationNode * newName( std::string * );
-	static DeclarationNode * newFromTypeGen( std::string *, ExpressionNode * params );
-	static DeclarationNode * newTypeParam( TypeClass, std::string * );
+	static DeclarationNode * newEnum( const std::string * name, DeclarationNode * constants, bool body );
+	static DeclarationNode * newEnumConstant( const std::string * name, ExpressionNode * constant );
+	static DeclarationNode * newName( const std::string * );
+	static DeclarationNode * newFromTypeGen( const std::string *, ExpressionNode * params );
+	static DeclarationNode * newTypeParam( TypeClass, const std::string * );
 	static DeclarationNode * newTrait( const std::string * name, DeclarationNode * params, DeclarationNode * asserts );
 	static DeclarationNode * newTraitUse( const std::string * name, ExpressionNode * params );
-	static DeclarationNode * newTypeDecl( std::string * name, DeclarationNode * typeParams );
+	static DeclarationNode * newTypeDecl( const std::string * name, DeclarationNode * typeParams );
 	static DeclarationNode * newPointer( DeclarationNode * qualifiers, OperKinds kind );
 	static DeclarationNode * newArray( ExpressionNode * size, DeclarationNode * qualifiers, bool isStatic );
@@ -247,7 +247,7 @@
 	static DeclarationNode * newTuple( DeclarationNode * members );
 	static DeclarationNode * newTypeof( ExpressionNode * expr );
-	static DeclarationNode * newAttr( std::string *, ExpressionNode * expr ); // @ attributes
-	static DeclarationNode * newAttr( std::string *, DeclarationNode * type ); // @ attributes
-	static DeclarationNode * newAttribute( std::string *, ExpressionNode * expr = nullptr ); // gcc attributes
+	static DeclarationNode * newAttr( const std::string *, ExpressionNode * expr ); // @ attributes
+	static DeclarationNode * newAttr( const std::string *, DeclarationNode * type ); // @ attributes
+	static DeclarationNode * newAttribute( const std::string *, ExpressionNode * expr = nullptr ); // gcc attributes
 	static DeclarationNode * newAsmStmt( StatementNode * stmt ); // gcc external asm statement
 	static DeclarationNode * newStaticAssert( ExpressionNode * condition, Expression * message );
