Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision e04ef3a33b7695190c509b61da6fe0cfcf46b265)
+++ src/Parser/ParseNode.h	(revision 0f8e4ac628ebde73ac11e8dfa6bd2e532f3627f6)
@@ -28,4 +28,5 @@
 //#include "SynTree/Declaration.h"
 #include "Common/UniqueName.h"
+#include "SynTree/Label.h"
 
 class ExpressionNode;
@@ -284,8 +285,8 @@
 	virtual void printOneLine( std::ostream &, int indent = 0) const;
 
-	const std::list< std::string > &get_labels() const { return labels; };
+	const std::list< Label > &get_labels() const { return labels; };
 	void append_label( std::string *label ) { labels.push_back( *label ); delete label; }
   private:
-	std::list< std::string > labels;
+	std::list< Label > labels;
 };
 
@@ -524,5 +525,5 @@
 	ExpressionNode *output, *input;
 	ConstantNode *clobber;
-	std::list<std::string> gotolabels;
+	std::list< Label > gotolabels;
 };
 
Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision e04ef3a33b7695190c509b61da6fe0cfcf46b265)
+++ src/Parser/StatementNode.cc	(revision 0f8e4ac628ebde73ac11e8dfa6bd2e532f3627f6)
@@ -5,5 +5,5 @@
 // file "LICENCE" distributed with Cforall.
 //
-// StatementNode.cc -- 
+// StatementNode.cc --
 //
 // Author           : Rodolfo G. Esteves
@@ -27,6 +27,6 @@
 
 const char *StatementNode::StType[] = {
-	"Exp",   "If",       "Switch", "Case",    "Default",  "Choose",   "Fallthru", 
-	"While", "Do",       "For", 
+	"Exp",   "If",       "Switch", "Case",    "Default",  "Choose",   "Fallthru",
+	"While", "Do",       "For",
 	"Goto",  "Continue", "Break",  "Return",  "Throw",
 	"Try",   "Catch",    "Finally", "Asm",
@@ -62,5 +62,5 @@
 StatementNode::StatementNode( Type t, ExpressionNode *ctrl_label, StatementNode *block ) : type( t ), control( ctrl_label ), block( block ), labels( 0 ), target( 0 ), decl( 0 ), isCatchRest ( false ) {
 	this->control = ( t == Default ) ? 0 : control;
-} 
+}
 
 StatementNode::StatementNode( Type t, string *target ) : type( t ), control( 0 ), block( 0 ), labels( 0 ), target( target ), decl( 0 ), isCatchRest ( false ) {}
@@ -74,5 +74,5 @@
 
 StatementNode * StatementNode::newCatchStmt( DeclarationNode *d, StatementNode *s, bool catchRestP ) {
-	StatementNode *ret = new StatementNode( StatementNode::Catch, 0, s ); 
+	StatementNode *ret = new StatementNode( StatementNode::Catch, 0, s );
 	ret->addDeclaration( d );
 	ret->setCatchRest( catchRestP );
@@ -101,5 +101,5 @@
 StatementNode *StatementNode::add_label( const std::string *l ) {
 	if ( l != 0 ) {
-		labels.push_front( *l ); 
+		labels.push_front( *l );
 		delete l;
 	} // if
@@ -156,5 +156,5 @@
 			control->print( os, indent );
 			os << endl;
-		} else 
+		} else
 			os << string( indent, ' ' ) << "Null Statement" << endl;
 		break;
@@ -177,5 +177,5 @@
 		if ( block ) {
 			os << string( indent + ParseNode::indent_by, ' ' ) << "Branches of execution: " << endl;
-			block->printList( os, indent + 2 * ParseNode::indent_by );  
+			block->printList( os, indent + 2 * ParseNode::indent_by );
 		} // if
 		if ( target ) {
@@ -258,5 +258,5 @@
 	  case Fallthru:
 		return new FallthruStmt( labs );
-	  case Case: 
+	  case Case:
 		return new CaseStmt( labs, maybeBuild<Expression>(get_control()), branches );
 	  case Default:
@@ -394,5 +394,5 @@
 		os << string( indent + ParseNode::indent_by, ' ' ) << "Goto Labels:" << endl;
 		os << string( indent + 2 * ParseNode::indent_by, ' ' );
-		for ( std::list<std::string>::const_iterator i = gotolabels.begin();; ) {
+		for ( std::list<Label>::const_iterator i = gotolabels.begin();; ) {
 			os << *i;
 			i++;
@@ -426,5 +426,5 @@
 }
 
-Statement *NullStmtNode::build() const { 
+Statement *NullStmtNode::build() const {
 	return new NullStmt;
 }
