Index: configure
===================================================================
--- configure	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ configure	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -1347,5 +1347,5 @@
   --disable-FEATURE       do not include FEATURE (same as --enable-FEATURE=no)
   --enable-FEATURE[=ARG]  include FEATURE [ARG=yes]
-  --enable-maintainer-mode  enable make rules and dependencies not useful
+  --disable-maintainer-mode  disable make rules and dependencies not useful
 			  (and sometimes confusing) to the casual installer
   --disable-dependency-tracking  speeds up one-time build
@@ -2895,5 +2895,5 @@
   enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
 else
-  USE_MAINTAINER_MODE=no
+  USE_MAINTAINER_MODE=yes
 fi
 
Index: configure.ac
===================================================================
--- configure.ac	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ configure.ac	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -9,5 +9,5 @@
 
 AM_INIT_AUTOMAKE
-AM_MAINTAINER_MODE(disable)
+AM_MAINTAINER_MODE(enable)	# may require auto* software to be installed
 
 # Installation paths
Index: src/CodeGen/CodeGenerator.cc
===================================================================
--- src/CodeGen/CodeGenerator.cc	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
+++ src/CodeGen/CodeGenerator.cc	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -0,0 +1,675 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// CodeGenerator2.cc -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Mon May 18 07:44:20 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Jun  3 11:53:32 2015
+// Update Count     : 13
+//
+
+#include <algorithm>
+#include <iostream>
+#include <cassert>
+#include <list>
+
+#include "SynTree/Type.h"
+#include "SynTree/Declaration.h"
+#include "SynTree/Statement.h"
+#include "SynTree/Expression.h"
+#include "SynTree/Initializer.h"
+
+#include "utility.h"
+#include "UnimplementedError.h"
+
+#include "CodeGenerator.h"
+#include "OperatorTable.h"
+#include "GenType.h"
+
+using namespace std;
+
+namespace CodeGen {
+	int CodeGenerator2::tabsize = 4;
+
+	CodeGenerator2::CodeGenerator2( std::ostream &os ) : cur_indent( 0 ), insideFunction( false ), before( os ), after() { }
+
+	CodeGenerator2::CodeGenerator2( std::ostream &os, std::string init, int indent, bool infunp )
+			: cur_indent( indent ), insideFunction( infunp ), before( os ) {
+		//before << std::string( init );
+	}
+
+	CodeGenerator2::CodeGenerator2( std::ostream &os, char *init, int indent, bool infunp )
+			: cur_indent( indent ), insideFunction( infunp ), before( os ) {
+		//before << std::string( init );
+	}
+
+	string mangleName( DeclarationWithType *decl ) {
+		if ( decl->get_mangleName() != "" ) {
+			return decl->get_mangleName();
+		} else {
+			return decl->get_name();
+		} // if
+	}
+  
+	//*** Declarations
+	void CodeGenerator2::visit( FunctionDecl *functionDecl ) {
+		handleStorageClass( functionDecl );
+		if ( functionDecl->get_isInline() ) {
+			before << "inline ";
+		} // if
+		before << genType( functionDecl->get_functionType(), mangleName( functionDecl ) );
+
+		// how to get this to the Functype?
+		std::list< Declaration * > olds = functionDecl->get_oldDecls();
+		if ( ! olds.empty() ) {
+			before << " /* function has old declaration */";
+		} // if
+
+		// acceptAll( functionDecl->get_oldDecls(), *this );
+		if ( functionDecl->get_statements() ) {
+			functionDecl->get_statements()->accept(*this );
+		} // if
+	}
+
+	void CodeGenerator2::visit( ObjectDecl *objectDecl ) {
+		handleStorageClass( objectDecl );
+		before << genType( objectDecl->get_type(), mangleName( objectDecl ) );
+	
+		if ( objectDecl->get_init() ) {
+			before << " = ";
+			objectDecl->get_init()->accept( *this );
+		} // if
+		if ( objectDecl->get_bitfieldWidth() ) {
+			before << ":";
+			objectDecl->get_bitfieldWidth()->accept( *this );
+		} // if
+	}
+
+	void CodeGenerator2::handleAggregate( AggregateDecl *aggDecl ) {
+		if ( aggDecl->get_name() != "" )
+			before << aggDecl->get_name();
+	
+		std::list< Declaration * > &memb = aggDecl->get_members();
+
+		if ( ! memb.empty() ) {
+			before << endl << string( cur_indent, ' ' ) << "{" << endl;
+
+			cur_indent += CodeGenerator2::tabsize; 
+			for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
+				before << string( cur_indent, ' ' ); 
+				(*i)->accept(*this );
+				before << ";" << endl;
+			}
+
+			cur_indent -= CodeGenerator2::tabsize; 
+
+			before << string( cur_indent, ' ' ) << "}";
+		} // if
+	}
+
+	void CodeGenerator2::visit( StructDecl *structDecl ) {
+		before << "struct ";
+		handleAggregate( structDecl );
+	}
+
+	void CodeGenerator2::visit( UnionDecl *aggregateDecl ) {
+		before << "union ";
+		handleAggregate( aggregateDecl );
+	}
+  
+	void CodeGenerator2::visit( EnumDecl *aggDecl ) {
+		before << "enum ";
+
+		if ( aggDecl->get_name() != "" )
+			before << aggDecl->get_name();
+	
+		std::list< Declaration* > &memb = aggDecl->get_members();
+
+		if ( ! memb.empty() ) {
+			before << endl << "{" << endl;
+
+			cur_indent += CodeGenerator2::tabsize; 
+			for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
+				ObjectDecl *obj = dynamic_cast< ObjectDecl* >( *i );
+				assert( obj );
+				before << string( cur_indent, ' ' ) << mangleName( obj ); 
+				if ( obj->get_init() ) {
+					before << " = ";
+					obj->get_init()->accept(*this );
+				} // if
+				before << "," << endl;
+			} // for
+
+			cur_indent -= CodeGenerator2::tabsize; 
+
+			before << "}" << endl;
+		} // if
+	}
+  
+	void CodeGenerator2::visit( ContextDecl *aggregateDecl ) {}
+  
+	void CodeGenerator2::visit( TypedefDecl *typeDecl ) {
+		before << "typedef ";
+		before << genType( typeDecl->get_base(), typeDecl->get_name() );
+	}
+  
+	void CodeGenerator2::visit( TypeDecl *typeDecl ) {
+		// really, we should mutate this into something that isn't a TypeDecl but that requires large-scale changes,
+		// still to be done
+		before << "extern unsigned long " << typeDecl->get_name();
+		if ( typeDecl->get_base() ) {
+			before << " = sizeof( " << genType( typeDecl->get_base(), "" ) << " )";
+		} // if
+	}
+
+	void CodeGenerator2::visit( SingleInit *init ) {
+		init->get_value()->accept( *this );
+	}
+
+	void CodeGenerator2::visit( ListInit *init ) {
+		before << "{ ";
+		genCommaList( init->begin_initializers(), init->end_initializers() );
+		before << " }";
+	}
+
+	void CodeGenerator2::visit( Constant *constant ) { 
+		before << constant->get_value() ;
+	}
+
+	//*** Expressions
+	void CodeGenerator2::visit( ApplicationExpr *applicationExpr ) {
+		if ( VariableExpr *varExpr = dynamic_cast< VariableExpr* >( applicationExpr->get_function() ) ) {
+			OperatorInfo opInfo;
+			if ( varExpr->get_var()->get_linkage() == LinkageSpec::Intrinsic && operatorLookup( varExpr->get_var()->get_name(), opInfo ) ) {
+				std::list< Expression* >::iterator arg = applicationExpr->get_args().begin();
+				switch ( opInfo.type ) {
+				  case OT_PREFIXASSIGN:
+				  case OT_POSTFIXASSIGN:
+				  case OT_INFIXASSIGN:
+					{
+						assert( arg != applicationExpr->get_args().end() );
+						if ( AddressExpr *addrExpr = dynamic_cast< AddressExpr * >( *arg ) ) {
+	        
+							*arg = addrExpr->get_arg();
+						} else {
+							UntypedExpr *newExpr = new UntypedExpr( new NameExpr( "*?" ) );
+							newExpr->get_args().push_back( *arg );
+							*arg = newExpr;
+						} // if
+						break;
+					}
+	      
+				  default:
+					// do nothing
+					;
+				}
+	    
+				switch ( opInfo.type ) {
+				  case OT_INDEX:
+					assert( applicationExpr->get_args().size() == 2 );
+					(*arg++)->accept( *this );
+					before << "[";
+					(*arg)->accept( *this );
+					before << "]";
+					break;
+	      
+				  case OT_CALL:
+					// there are no intrinsic definitions of the function call operator
+					assert( false );
+					break;
+	      
+				  case OT_PREFIX:
+				  case OT_PREFIXASSIGN:
+					assert( applicationExpr->get_args().size() == 1 );
+					before << "(";
+					before << opInfo.symbol;
+					(*arg)->accept( *this );
+					before << ")";
+					break;
+	      
+				  case OT_POSTFIX:
+				  case OT_POSTFIXASSIGN:
+					assert( applicationExpr->get_args().size() == 1 );
+					(*arg)->accept( *this );
+					before << opInfo.symbol;
+					break;
+
+				  case OT_INFIX:
+				  case OT_INFIXASSIGN:
+					assert( applicationExpr->get_args().size() == 2 );
+					before << "(";
+					(*arg++)->accept( *this );
+					before << opInfo.symbol;
+					(*arg)->accept( *this );
+					before << ")";
+					break;
+	      
+				  case OT_CONSTANT:
+					// there are no intrinsic definitions of 0 or 1 as functions
+					assert( false );
+				}
+			} else {
+				varExpr->accept( *this );
+				before << "(";
+				genCommaList( applicationExpr->get_args().begin(), applicationExpr->get_args().end() );
+				before << ")";
+			} // if
+		} else {
+			applicationExpr->get_function()->accept( *this );
+			before << "(";
+			genCommaList( applicationExpr->get_args().begin(), applicationExpr->get_args().end() );
+			before << ")";
+		} // if
+	}
+  
+	void CodeGenerator2::visit( UntypedExpr *untypedExpr ) {
+		if ( NameExpr *nameExpr = dynamic_cast< NameExpr* >( untypedExpr->get_function() ) ) {
+			OperatorInfo opInfo;
+			if ( operatorLookup( nameExpr->get_name(), opInfo ) ) {
+				std::list< Expression* >::iterator arg = untypedExpr->get_args().begin();
+				switch ( opInfo.type ) {
+				  case OT_INDEX:
+					assert( untypedExpr->get_args().size() == 2 );
+					(*arg++)->accept( *this );
+					before << "[";
+					(*arg)->accept( *this );
+					before << "]";
+					break;
+	      
+				  case OT_CALL:
+					assert( false );
+					break;
+	      
+				  case OT_PREFIX:
+				  case OT_PREFIXASSIGN:
+					assert( untypedExpr->get_args().size() == 1 );
+					before << "(";
+					before << opInfo.symbol;
+					(*arg)->accept( *this );
+					before << ")";
+					break;
+	      
+				  case OT_POSTFIX:
+				  case OT_POSTFIXASSIGN:
+					assert( untypedExpr->get_args().size() == 1 );
+					(*arg)->accept( *this );
+					before << opInfo.symbol;
+					break;
+  
+				  case OT_INFIX:
+				  case OT_INFIXASSIGN:
+					assert( untypedExpr->get_args().size() == 2 );
+					before << "(";
+					(*arg++)->accept( *this );
+					before << opInfo.symbol;
+					(*arg)->accept( *this );
+					before << ")";
+					break;
+	      
+				  case OT_CONSTANT:
+					// there are no intrinsic definitions of 0 or 1 as functions
+					assert( false );
+				}
+			} else {
+				nameExpr->accept( *this );
+				before << "(";
+				genCommaList( untypedExpr->get_args().begin(), untypedExpr->get_args().end() );
+				before << ")";
+			} // if
+		} else {
+			untypedExpr->get_function()->accept( *this );
+			before << "(";
+			genCommaList( untypedExpr->get_args().begin(), untypedExpr->get_args().end() );
+			before << ")";
+		} // if
+	}
+  
+	void CodeGenerator2::visit( NameExpr *nameExpr ) {
+		OperatorInfo opInfo;
+		if ( operatorLookup( nameExpr->get_name(), opInfo ) ) {
+			assert( opInfo.type == OT_CONSTANT );
+			before << opInfo.symbol;
+		} else {
+			before << nameExpr->get_name();
+		} // if
+	}
+  
+	void CodeGenerator2::visit( AddressExpr *addressExpr ) {
+		before << "(&";
+		// this hack makes sure that we don't convert "constant_zero" to "0" if we're taking its address
+		if ( VariableExpr *variableExpr = dynamic_cast< VariableExpr* >( addressExpr->get_arg() ) ) {
+			before << mangleName( variableExpr->get_var() );
+		} else {
+			addressExpr->get_arg()->accept( *this );
+		} // if
+		before << ")";
+	}
+
+	void CodeGenerator2::visit( CastExpr *castExpr ) {
+		before << "((";
+		if ( castExpr->get_results().empty() ) {
+			before << "void" ;
+		} else {
+			before << genType( castExpr->get_results().front(), "" );
+		} // if
+		before << ")";
+		castExpr->get_arg()->accept( *this );
+		before << ")";
+	}
+  
+	void CodeGenerator2::visit( UntypedMemberExpr *memberExpr ) {
+		assert( false );
+	}
+  
+	void CodeGenerator2::visit( MemberExpr *memberExpr ) {
+		memberExpr->get_aggregate()->accept( *this );
+		before << "." << mangleName( memberExpr->get_member() );
+	}
+  
+	void CodeGenerator2::visit( VariableExpr *variableExpr ) {
+		OperatorInfo opInfo;
+		if ( variableExpr->get_var()->get_linkage() == LinkageSpec::Intrinsic && operatorLookup( variableExpr->get_var()->get_name(), opInfo ) && opInfo.type == OT_CONSTANT ) {
+			before << opInfo.symbol;
+		} else {
+			before << mangleName( variableExpr->get_var() );
+		} // if
+	}
+  
+	void CodeGenerator2::visit( ConstantExpr *constantExpr ) {
+		assert( constantExpr->get_constant() );
+		constantExpr->get_constant()->accept( *this );
+	}
+  
+	void CodeGenerator2::visit( SizeofExpr *sizeofExpr ) {
+		before << "sizeof(";
+		if ( sizeofExpr->get_isType() ) {
+			before << genType( sizeofExpr->get_type(), "" );
+		} else {
+			sizeofExpr->get_expr()->accept( *this );
+		} // if
+		before << ")";
+	}
+  
+	void CodeGenerator2::visit( LogicalExpr *logicalExpr ) {
+		before << "(";
+		logicalExpr->get_arg1()->accept( *this );
+		if ( logicalExpr->get_isAnd() ) {
+			before << " && ";
+		} else {
+			before << " || ";
+		} // if
+		logicalExpr->get_arg2()->accept( *this );
+		before << ")";
+	}
+  
+	void CodeGenerator2::visit( ConditionalExpr *conditionalExpr ) {
+		before << "(";
+		conditionalExpr->get_arg1()->accept( *this );
+		before << " ? ";
+		conditionalExpr->get_arg2()->accept( *this );
+		before << " : ";
+		conditionalExpr->get_arg3()->accept( *this );
+		before << ")";
+	}
+  
+	void CodeGenerator2::visit( CommaExpr *commaExpr ) {
+		before << "(";
+		commaExpr->get_arg1()->accept( *this );
+		before << " , ";
+		commaExpr->get_arg2()->accept( *this );
+		before << ")";
+	}
+  
+	void CodeGenerator2::visit( TupleExpr *tupleExpr ) {}
+  
+	void CodeGenerator2::visit( TypeExpr *typeExpr ) {}
+  
+  
+	//*** Statements
+	void CodeGenerator2::visit( CompoundStmt *compoundStmt ) {
+		std::list<Statement*> ks = compoundStmt->get_kids();
+
+		before << endl << string( cur_indent, ' ' ) << "{" << endl;
+
+		cur_indent += CodeGenerator2::tabsize; 
+
+		for ( std::list<Statement *>::iterator i = ks.begin(); i != ks.end();  i++) {
+			before << string( cur_indent, ' ' ) << printLabels( (*i)->get_labels() )  ;
+			(*i)->accept(*this );
+			shift_left();
+			before << endl;
+		}
+		cur_indent -= CodeGenerator2::tabsize; 
+
+		before << string( cur_indent, ' ' ) << "}" << endl;
+	}
+
+	void CodeGenerator2::visit( ExprStmt *exprStmt ) {
+		if ( exprStmt != 0 ) {
+			exprStmt->get_expr()->accept( *this );
+			shift_left();
+			before << ";" ;
+		} // if
+	}
+
+	void CodeGenerator2::visit( IfStmt *ifStmt ) {
+		before << "if (";
+		ifStmt->get_condition()->accept(*this );
+		after += ")\n";
+		shift_left(); 
+
+		cur_indent += CodeGenerator2::tabsize;
+		before << string( cur_indent, ' ' );
+		ifStmt->get_thenPart()->accept(*this );
+		cur_indent -= CodeGenerator2::tabsize; 
+		shift_left(); before << endl;
+
+		if ( ifStmt->get_elsePart() != 0) {
+			before << string( cur_indent, ' ' ) << " else " << endl ;
+
+			cur_indent += CodeGenerator2::tabsize; 
+			ifStmt->get_elsePart()->accept(*this );
+			cur_indent -= CodeGenerator2::tabsize; 
+		} // if
+	}
+
+	void CodeGenerator2::visit( SwitchStmt *switchStmt ) {
+		//before << /* "\r" << */ string( cur_indent, ' ' ) << CodeGenerator2::printLabels( switchStmt->get_labels() ) 
+		before << "switch (" ;
+		switchStmt->get_condition()->accept(*this );
+		after += ")\n";
+		shift_left();
+
+		before << string( cur_indent, ' ' ) << "{" << std::endl;
+		cur_indent += CodeGenerator2::tabsize;
+
+		std::list< Statement * > stmts = switchStmt->get_branches();
+		bool lastBreak = false; 
+
+		// horrible, horrible hack
+		if ( dynamic_cast<BranchStmt *>( stmts.back() ) != 0 ) {
+			lastBreak = true;
+			stmts.pop_back();
+		} // if
+		acceptAll( stmts, *this );
+		if ( lastBreak ) {
+			Statement *st = switchStmt->get_branches().back();
+			before << CodeGenerator2::printLabels( st->get_labels());
+			st->accept( *this );
+		} // if
+	  
+		cur_indent -= CodeGenerator2::tabsize; 
+
+		before << /* "\r" << */ string( cur_indent, ' ' ) << "}" << endl ;
+	}
+
+	void CodeGenerator2::visit( CaseStmt *caseStmt ) {
+		before << string( cur_indent, ' ' );
+		if ( caseStmt->isDefault()) 
+			before << "default "  ;
+		else {
+			before << "case "  ;
+			caseStmt->get_condition()->accept(*this );
+		} // if
+		after += ":\n";
+		shift_left();
+
+		std::list<Statement *> sts = caseStmt->get_statements();
+
+		cur_indent += CodeGenerator2::tabsize;
+		for ( std::list<Statement *>::iterator i = sts.begin(); i != sts.end();  i++) {
+			before << /* "\r" << */ string( cur_indent, ' ' ) << printLabels( (*i)->get_labels() )  ;
+			(*i)->accept(*this );
+			shift_left();
+			before << ";" << endl;
+		}
+		cur_indent -= CodeGenerator2::tabsize;
+	}
+
+	void CodeGenerator2::visit( BranchStmt *branchStmt ) {
+		switch ( branchStmt->get_type()) {
+		  case BranchStmt::Goto:
+			if ( ! branchStmt->get_target().empty() )
+				before << "goto " << branchStmt->get_target();
+			else { 
+				if ( branchStmt->get_computedTarget() != 0 ) {
+					before << "goto *";
+					branchStmt->get_computedTarget()->accept( *this );
+				} // if
+			} // if
+			break;
+		  case BranchStmt::Break:
+			before << "break";
+			break;
+		  case BranchStmt::Continue:
+			before << "continue";
+			break;
+		}
+		before << ";";
+	}
+
+
+	void CodeGenerator2::visit( ReturnStmt *returnStmt ) {
+		before << "return ";
+
+		// xxx -- check for null expression;
+		if ( returnStmt->get_expr() ) {
+			returnStmt->get_expr()->accept( *this );
+		} // if
+		after += ";";
+	}
+
+	void CodeGenerator2::visit( WhileStmt *whileStmt ) {
+		if ( whileStmt->get_isDoWhile() )
+			before << "do" ;
+		else {
+			before << "while (" ;
+			whileStmt->get_condition()->accept(*this );
+			after += ")";
+		} // if
+		after += "{\n";
+		shift_left();
+
+		whileStmt->get_body()->accept( *this );
+
+		before << /* "\r" << */ string( cur_indent, ' ' ) << "}" ;
+
+		if ( whileStmt->get_isDoWhile() ) {
+			before << " while (" ;
+			whileStmt->get_condition()->accept(*this );
+			after += ");";
+		} // if
+
+		after += "\n";
+	}
+
+	void CodeGenerator2::visit( ForStmt *forStmt ) {
+		before << "for (";
+
+		if ( forStmt->get_initialization() != 0 )
+			forStmt->get_initialization()->accept( *this );
+		else
+			before << ";";
+		shift_left();
+
+		if ( forStmt->get_condition() != 0 )
+			forStmt->get_condition()->accept( *this );
+		shift_left(); before << ";";
+
+		if ( forStmt->get_increment() != 0 )
+			forStmt->get_increment()->accept( *this );
+		shift_left(); before << ")" << endl;
+
+		if ( forStmt->get_body() != 0 ) {
+			cur_indent += CodeGenerator2::tabsize; 
+			before << string( cur_indent, ' ' ) << CodeGenerator2::printLabels( forStmt->get_body()->get_labels() );
+			forStmt->get_body()->accept( *this );
+			cur_indent -= CodeGenerator2::tabsize; 
+		} // if
+	}
+
+	void CodeGenerator2::visit( NullStmt *nullStmt ) {
+		//before << /* "\r" << */ string( cur_indent, ' ' ) << CodeGenerator2::printLabels( nullStmt->get_labels() );
+		before << "/* null statement */ ;";
+	}
+
+	void CodeGenerator2::visit( DeclStmt *declStmt ) {
+		declStmt->get_decl()->accept( *this );
+	
+		if ( doSemicolon( declStmt->get_decl() ) ) {
+			after += ";";
+		} // if
+		shift_left();
+	}
+
+	std::string CodeGenerator2::printLabels( std::list< Label > &l ) {
+		std::string str( "" );
+		l.unique();
+
+		for ( std::list< Label >::iterator i = l.begin(); i != l.end(); i++ )
+			str += *i + ": ";
+
+		return str;
+	}
+
+	void CodeGenerator2::shift_left() {
+		before << after;
+		after = "";
+	}
+
+	void CodeGenerator2::handleStorageClass( Declaration *decl ) {
+		switch ( decl->get_storageClass() ) {
+		  case Declaration::NoStorageClass:
+			break;
+		  case Declaration::Extern:
+			before << "extern ";
+			break;
+		  case Declaration::Static:
+			before << "static ";
+			break;
+		  case Declaration::Auto:
+			// silently drop storage class
+			break;
+		  case Declaration::Register:
+			before << "register ";
+			break;
+		  case Declaration::Inline:
+			// handled as special via isInline flag (FIX)
+			break;
+		  case Declaration::Fortran:
+			// not handled
+			break;
+		} // switch
+	}
+} // namespace CodeGen
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: src/CodeGen/CodeGenerator.h
===================================================================
--- src/CodeGen/CodeGenerator.h	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
+++ src/CodeGen/CodeGenerator.h	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -0,0 +1,126 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// CodeGenerator2.h -- 
+//
+// Author           : Richard C. Bilson
+// Created On       : Mon May 18 07:44:20 2015
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Mon May 18 23:35:37 2015
+// Update Count     : 2
+//
+
+#ifndef CODEGENV_H
+#define CODEGENV_H
+
+#include <strstream>
+#include <list>
+
+#include "SynTree/SynTree.h"
+#include "SynTree/Visitor.h"
+#include "SymTab/Indexer.h"
+
+namespace CodeGen {
+	class CodeGenerator2 : public Visitor {
+	  public:
+		static int tabsize;
+
+		CodeGenerator2( std::ostream &os );
+		CodeGenerator2( std::ostream &os, std::string, int indent = 0, bool infun = false );
+		CodeGenerator2( std::ostream &os, char *, int indent = 0, bool infun = false );
+
+		CodeGenerator2( CodeGenerator2 & );
+
+		//*** Declaration
+		virtual void visit( StructDecl * );
+		virtual void visit( FunctionDecl * );
+		virtual void visit( ObjectDecl * );
+		virtual void visit( UnionDecl *aggregateDecl );
+		virtual void visit( EnumDecl *aggregateDecl );
+		virtual void visit( ContextDecl *aggregateDecl );
+		virtual void visit( TypedefDecl *typeDecl );
+		virtual void visit( TypeDecl *typeDecl );
+
+		//*** Initializer
+		virtual void visit( SingleInit * );
+		virtual void visit( ListInit * );
+
+		//*** Constant
+		virtual void visit( Constant * );
+
+		//*** Expression
+		virtual void visit( ApplicationExpr *applicationExpr );
+		virtual void visit( UntypedExpr *untypedExpr );
+		virtual void visit( NameExpr *nameExpr );
+		virtual void visit( AddressExpr *addressExpr );
+		virtual void visit( CastExpr *castExpr );
+		virtual void visit( UntypedMemberExpr *memberExpr );
+		virtual void visit( MemberExpr *memberExpr );
+		virtual void visit( VariableExpr *variableExpr );
+		virtual void visit( ConstantExpr *constantExpr ); 
+		virtual void visit( SizeofExpr *sizeofExpr );
+		virtual void visit( LogicalExpr *logicalExpr );
+		virtual void visit( ConditionalExpr *conditionalExpr );
+		virtual void visit( CommaExpr *commaExpr );
+		virtual void visit( TupleExpr *tupleExpr );
+		virtual void visit( TypeExpr *typeExpr );
+
+		//*** Statements
+		virtual void visit( CompoundStmt * );
+		virtual void visit( ExprStmt * );
+		virtual void visit( IfStmt * );
+		virtual void visit( SwitchStmt * );
+		virtual void visit( CaseStmt * );
+		virtual void visit( BranchStmt * );
+		virtual void visit( ReturnStmt * );
+		virtual void visit( WhileStmt * );
+		virtual void visit( ForStmt * );
+		virtual void visit( NullStmt * );
+		virtual void visit( DeclStmt * ); 
+
+		std::string get_string( void );
+		void add_string_left( std::string s ) { before << s; }
+		void shift_left();
+		template< class Iterator > void genCommaList( Iterator begin, Iterator end );
+	  private:
+		int cur_indent;
+		bool insideFunction;
+		std::ostream &before;
+		std::string after;
+
+		static std::string printLabels ( std::list < Label > & );
+		void handleStorageClass( Declaration *decl );
+		void handleAggregate( AggregateDecl *aggDecl );
+		void handleTypedef( NamedTypeDecl *namedType );
+
+	};
+	
+	template< class Iterator >
+	void CodeGenerator2::genCommaList( Iterator begin, Iterator end ) {
+		if ( begin == end ) return;
+
+		for ( ;; ) {
+			(*begin++)->accept( *this );
+			if ( begin == end ) return;
+			before << ", ";
+		} // for
+	}
+  
+	inline bool doSemicolon( Declaration* decl ) {
+		if ( FunctionDecl* func = dynamic_cast< FunctionDecl* >( decl ) ) {
+			return ! func->get_statements();
+		} // if
+		return true;
+	}
+} // namespace CodeGen
+
+#endif // CODEGENV_H
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: c/CodeGen/CodeGenerator2.cc
===================================================================
--- src/CodeGen/CodeGenerator2.cc	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ 	(revision )
@@ -1,675 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// CodeGenerator2.cc -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sun May 24 20:43:16 2015
-// Update Count     : 11
-//
-
-#include <algorithm>
-#include <iostream>
-#include <cassert>
-#include <list>
-
-#include "SynTree/Type.h"
-#include "SynTree/Declaration.h"
-#include "SynTree/Statement.h"
-#include "SynTree/Expression.h"
-#include "SynTree/Initializer.h"
-
-#include "utility.h"
-#include "UnimplementedError.h"
-
-#include "CodeGenerator2.h"
-#include "OperatorTable.h"
-#include "GenType.h"
-
-using namespace std;
-
-namespace CodeGen {
-	int CodeGenerator2::tabsize = 4;
-
-	CodeGenerator2::CodeGenerator2( std::ostream &os ) : cur_indent( 0 ), insideFunction( false ), before( os ), after() { }
-
-	CodeGenerator2::CodeGenerator2( std::ostream &os, std::string init, int indent, bool infunp )
-			: cur_indent( indent ), insideFunction( infunp ), before( os ) {
-		//before << std::string( init );
-	}
-
-	CodeGenerator2::CodeGenerator2( std::ostream &os, char *init, int indent, bool infunp )
-			: cur_indent( indent ), insideFunction( infunp ), before( os ) {
-		//before << std::string( init );
-	}
-
-	string mangleName( DeclarationWithType *decl ) {
-		if ( decl->get_mangleName() != "" ) {
-			return decl->get_mangleName();
-		} else {
-			return decl->get_name();
-		} // if
-	}
-  
-	//*** Declarations
-	void CodeGenerator2::visit( FunctionDecl *functionDecl ) {
-		handleStorageClass( functionDecl );
-		if ( functionDecl->get_isInline() ) {
-			before << "inline ";
-		} // if
-		before << genType( functionDecl->get_functionType(), mangleName( functionDecl ) );
-
-		// how to get this to the Functype?
-		std::list< Declaration * > olds = functionDecl->get_oldDecls();
-		if ( ! olds.empty() ) {
-			before << " /* function has old declaration */";
-		} // if
-
-		// acceptAll( functionDecl->get_oldDecls(), *this );
-		if ( functionDecl->get_statements() ) {
-			functionDecl->get_statements()->accept(*this );
-		} // if
-	}
-
-	void CodeGenerator2::visit( ObjectDecl *objectDecl ) {
-		handleStorageClass( objectDecl );
-		before << genType( objectDecl->get_type(), mangleName( objectDecl ) );
-	
-		if ( objectDecl->get_init() ) {
-			before << " = ";
-			objectDecl->get_init()->accept( *this );
-		} // if
-		if ( objectDecl->get_bitfieldWidth() ) {
-			before << ":";
-			objectDecl->get_bitfieldWidth()->accept( *this );
-		} // if
-	}
-
-	void CodeGenerator2::handleAggregate( AggregateDecl *aggDecl ) {
-		if ( aggDecl->get_name() != "" )
-			before << aggDecl->get_name();
-	
-		std::list< Declaration * > &memb = aggDecl->get_members();
-
-		if ( ! memb.empty() ) {
-			before << endl << string( cur_indent, ' ' ) << "{" << endl;
-
-			cur_indent += CodeGenerator2::tabsize; 
-			for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
-				before << string( cur_indent, ' ' ); 
-				(*i)->accept(*this );
-				before << ";" << endl;
-			}
-
-			cur_indent -= CodeGenerator2::tabsize; 
-
-			before << string( cur_indent, ' ' ) << "}";
-		} // if
-	}
-
-	void CodeGenerator2::visit( StructDecl *structDecl ) {
-		before << "struct ";
-		handleAggregate( structDecl );
-	}
-
-	void CodeGenerator2::visit( UnionDecl *aggregateDecl ) {
-		before << "union ";
-		handleAggregate( aggregateDecl );
-	}
-  
-	void CodeGenerator2::visit( EnumDecl *aggDecl ) {
-		before << "enum ";
-
-		if ( aggDecl->get_name() != "" )
-			before << aggDecl->get_name();
-	
-		std::list< Declaration* > &memb = aggDecl->get_members();
-
-		if ( ! memb.empty() ) {
-			before << endl << "{" << endl;
-
-			cur_indent += CodeGenerator2::tabsize; 
-			for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
-				ObjectDecl *obj = dynamic_cast< ObjectDecl* >( *i );
-				assert( obj );
-				before << string( cur_indent, ' ' ) << mangleName( obj ); 
-				if ( obj->get_init() ) {
-					before << " = ";
-					obj->get_init()->accept(*this );
-				} // if
-				before << "," << endl;
-			} // for
-
-			cur_indent -= CodeGenerator2::tabsize; 
-
-			before << "}" << endl;
-		} // if
-	}
-  
-	void CodeGenerator2::visit( ContextDecl *aggregateDecl ) {}
-  
-	void CodeGenerator2::visit( TypedefDecl *typeDecl ) {
-		before << "typedef ";
-		before << genType( typeDecl->get_base(), typeDecl->get_name() );
-	}
-  
-	void CodeGenerator2::visit( TypeDecl *typeDecl ) {
-		// really, we should mutate this into something that isn't a TypeDecl but that requires large-scale changes,
-		// still to be done
-		before << "extern unsigned long " << typeDecl->get_name();
-		if ( typeDecl->get_base() ) {
-			before << " = sizeof( " << genType( typeDecl->get_base(), "" ) << " )";
-		} // if
-	}
-
-	void CodeGenerator2::visit( SingleInit *init ) {
-		init->get_value()->accept( *this );
-	}
-
-	void CodeGenerator2::visit( ListInit *init ) {
-		before << "{ ";
-		genCommaList( init->begin_initializers(), init->end_initializers() );
-		before << " }";
-	}
-
-	void CodeGenerator2::visit( Constant *constant ) { 
-		before << constant->get_value() ;
-	}
-
-	//*** Expressions
-	void CodeGenerator2::visit( ApplicationExpr *applicationExpr ) {
-		if ( VariableExpr *varExpr = dynamic_cast< VariableExpr* >( applicationExpr->get_function() ) ) {
-			OperatorInfo opInfo;
-			if ( varExpr->get_var()->get_linkage() == LinkageSpec::Intrinsic && operatorLookup( varExpr->get_var()->get_name(), opInfo ) ) {
-				std::list< Expression* >::iterator arg = applicationExpr->get_args().begin();
-				switch ( opInfo.type ) {
-				  case OT_PREFIXASSIGN:
-				  case OT_POSTFIXASSIGN:
-				  case OT_INFIXASSIGN:
-					{
-						assert( arg != applicationExpr->get_args().end() );
-						if ( AddressExpr *addrExpr = dynamic_cast< AddressExpr * >( *arg ) ) {
-	        
-							*arg = addrExpr->get_arg();
-						} else {
-							UntypedExpr *newExpr = new UntypedExpr( new NameExpr( "*?" ) );
-							newExpr->get_args().push_back( *arg );
-							*arg = newExpr;
-						} // if
-						break;
-					}
-	      
-				  default:
-					// do nothing
-					;
-				}
-	    
-				switch ( opInfo.type ) {
-				  case OT_INDEX:
-					assert( applicationExpr->get_args().size() == 2 );
-					(*arg++)->accept( *this );
-					before << "[";
-					(*arg)->accept( *this );
-					before << "]";
-					break;
-	      
-				  case OT_CALL:
-					// there are no intrinsic definitions of the function call operator
-					assert( false );
-					break;
-	      
-				  case OT_PREFIX:
-				  case OT_PREFIXASSIGN:
-					assert( applicationExpr->get_args().size() == 1 );
-					before << "(";
-					before << opInfo.symbol;
-					(*arg)->accept( *this );
-					before << ")";
-					break;
-	      
-				  case OT_POSTFIX:
-				  case OT_POSTFIXASSIGN:
-					assert( applicationExpr->get_args().size() == 1 );
-					(*arg)->accept( *this );
-					before << opInfo.symbol;
-					break;
-
-				  case OT_INFIX:
-				  case OT_INFIXASSIGN:
-					assert( applicationExpr->get_args().size() == 2 );
-					before << "(";
-					(*arg++)->accept( *this );
-					before << opInfo.symbol;
-					(*arg)->accept( *this );
-					before << ")";
-					break;
-	      
-				  case OT_CONSTANT:
-					// there are no intrinsic definitions of 0 or 1 as functions
-					assert( false );
-				}
-			} else {
-				varExpr->accept( *this );
-				before << "(";
-				genCommaList( applicationExpr->get_args().begin(), applicationExpr->get_args().end() );
-				before << ")";
-			} // if
-		} else {
-			applicationExpr->get_function()->accept( *this );
-			before << "(";
-			genCommaList( applicationExpr->get_args().begin(), applicationExpr->get_args().end() );
-			before << ")";
-		} // if
-	}
-  
-	void CodeGenerator2::visit( UntypedExpr *untypedExpr ) {
-		if ( NameExpr *nameExpr = dynamic_cast< NameExpr* >( untypedExpr->get_function() ) ) {
-			OperatorInfo opInfo;
-			if ( operatorLookup( nameExpr->get_name(), opInfo ) ) {
-				std::list< Expression* >::iterator arg = untypedExpr->get_args().begin();
-				switch ( opInfo.type ) {
-				  case OT_INDEX:
-					assert( untypedExpr->get_args().size() == 2 );
-					(*arg++)->accept( *this );
-					before << "[";
-					(*arg)->accept( *this );
-					before << "]";
-					break;
-	      
-				  case OT_CALL:
-					assert( false );
-					break;
-	      
-				  case OT_PREFIX:
-				  case OT_PREFIXASSIGN:
-					assert( untypedExpr->get_args().size() == 1 );
-					before << "(";
-					before << opInfo.symbol;
-					(*arg)->accept( *this );
-					before << ")";
-					break;
-	      
-				  case OT_POSTFIX:
-				  case OT_POSTFIXASSIGN:
-					assert( untypedExpr->get_args().size() == 1 );
-					(*arg)->accept( *this );
-					before << opInfo.symbol;
-					break;
-  
-				  case OT_INFIX:
-				  case OT_INFIXASSIGN:
-					assert( untypedExpr->get_args().size() == 2 );
-					before << "(";
-					(*arg++)->accept( *this );
-					before << opInfo.symbol;
-					(*arg)->accept( *this );
-					before << ")";
-					break;
-	      
-				  case OT_CONSTANT:
-					// there are no intrinsic definitions of 0 or 1 as functions
-					assert( false );
-				}
-			} else {
-				nameExpr->accept( *this );
-				before << "(";
-				genCommaList( untypedExpr->get_args().begin(), untypedExpr->get_args().end() );
-				before << ")";
-			} // if
-		} else {
-			untypedExpr->get_function()->accept( *this );
-			before << "(";
-			genCommaList( untypedExpr->get_args().begin(), untypedExpr->get_args().end() );
-			before << ")";
-		} // if
-	}
-  
-	void CodeGenerator2::visit( NameExpr *nameExpr ) {
-		OperatorInfo opInfo;
-		if ( operatorLookup( nameExpr->get_name(), opInfo ) ) {
-			assert( opInfo.type == OT_CONSTANT );
-			before << opInfo.symbol;
-		} else {
-			before << nameExpr->get_name();
-		} // if
-	}
-  
-	void CodeGenerator2::visit( AddressExpr *addressExpr ) {
-		before << "(&";
-		// this hack makes sure that we don't convert "constant_zero" to "0" if we're taking its address
-		if ( VariableExpr *variableExpr = dynamic_cast< VariableExpr* >( addressExpr->get_arg() ) ) {
-			before << mangleName( variableExpr->get_var() );
-		} else {
-			addressExpr->get_arg()->accept( *this );
-		} // if
-		before << ")";
-	}
-
-	void CodeGenerator2::visit( CastExpr *castExpr ) {
-		before << "((";
-		if ( castExpr->get_results().empty() ) {
-			before << "void" ;
-		} else {
-			before << genType( castExpr->get_results().front(), "" );
-		} // if
-		before << ")";
-		castExpr->get_arg()->accept( *this );
-		before << ")";
-	}
-  
-	void CodeGenerator2::visit( UntypedMemberExpr *memberExpr ) {
-		assert( false );
-	}
-  
-	void CodeGenerator2::visit( MemberExpr *memberExpr ) {
-		memberExpr->get_aggregate()->accept( *this );
-		before << "." << mangleName( memberExpr->get_member() );
-	}
-  
-	void CodeGenerator2::visit( VariableExpr *variableExpr ) {
-		OperatorInfo opInfo;
-		if ( variableExpr->get_var()->get_linkage() == LinkageSpec::Intrinsic && operatorLookup( variableExpr->get_var()->get_name(), opInfo ) && opInfo.type == OT_CONSTANT ) {
-			before << opInfo.symbol;
-		} else {
-			before << mangleName( variableExpr->get_var() );
-		} // if
-	}
-  
-	void CodeGenerator2::visit( ConstantExpr *constantExpr ) {
-		assert( constantExpr->get_constant() );
-		constantExpr->get_constant()->accept( *this );
-	}
-  
-	void CodeGenerator2::visit( SizeofExpr *sizeofExpr ) {
-		before << "sizeof(";
-		if ( sizeofExpr->get_isType() ) {
-			before << genType( sizeofExpr->get_type(), "" );
-		} else {
-			sizeofExpr->get_expr()->accept( *this );
-		} // if
-		before << ")";
-	}
-  
-	void CodeGenerator2::visit( LogicalExpr *logicalExpr ) {
-		before << "(";
-		logicalExpr->get_arg1()->accept( *this );
-		if ( logicalExpr->get_isAnd() ) {
-			before << " && ";
-		} else {
-			before << " || ";
-		} // if
-		logicalExpr->get_arg2()->accept( *this );
-		before << ")";
-	}
-  
-	void CodeGenerator2::visit( ConditionalExpr *conditionalExpr ) {
-		before << "(";
-		conditionalExpr->get_arg1()->accept( *this );
-		before << " ? ";
-		conditionalExpr->get_arg2()->accept( *this );
-		before << " : ";
-		conditionalExpr->get_arg3()->accept( *this );
-		before << ")";
-	}
-  
-	void CodeGenerator2::visit( CommaExpr *commaExpr ) {
-		before << "(";
-		commaExpr->get_arg1()->accept( *this );
-		before << " , ";
-		commaExpr->get_arg2()->accept( *this );
-		before << ")";
-	}
-  
-	void CodeGenerator2::visit( TupleExpr *tupleExpr ) {}
-  
-	void CodeGenerator2::visit( TypeExpr *typeExpr ) {}
-  
-  
-	//*** Statements
-	void CodeGenerator2::visit( CompoundStmt *compoundStmt ) {
-		std::list<Statement*> ks = compoundStmt->get_kids();
-
-		before << endl << string( cur_indent, ' ' ) << "{" << endl;
-
-		cur_indent += CodeGenerator2::tabsize; 
-
-		for ( std::list<Statement *>::iterator i = ks.begin(); i != ks.end();  i++) {
-			before << string( cur_indent, ' ' ) << printLabels( (*i)->get_labels() )  ;
-			(*i)->accept(*this );
-			shift_left();
-			before << endl;
-		}
-		cur_indent -= CodeGenerator2::tabsize; 
-
-		before << string( cur_indent, ' ' ) << "}" << endl;
-	}
-
-	void CodeGenerator2::visit( ExprStmt *exprStmt ) {
-		if ( exprStmt != 0 ) {
-			exprStmt->get_expr()->accept( *this );
-			shift_left();
-			before << ";" ;
-		} // if
-	}
-
-	void CodeGenerator2::visit( IfStmt *ifStmt ) {
-		before << "if (";
-		ifStmt->get_condition()->accept(*this );
-		after += ")\n";
-		shift_left(); 
-
-		cur_indent += CodeGenerator2::tabsize;
-		before << string( cur_indent, ' ' );
-		ifStmt->get_thenPart()->accept(*this );
-		cur_indent -= CodeGenerator2::tabsize; 
-		shift_left(); before << endl;
-
-		if ( ifStmt->get_elsePart() != 0) {
-			before << string( cur_indent, ' ' ) << " else " << endl ;
-
-			cur_indent += CodeGenerator2::tabsize; 
-			ifStmt->get_elsePart()->accept(*this );
-			cur_indent -= CodeGenerator2::tabsize; 
-		} // if
-	}
-
-	void CodeGenerator2::visit( SwitchStmt *switchStmt ) {
-		//before << /* "\r" << */ string( cur_indent, ' ' ) << CodeGenerator2::printLabels( switchStmt->get_labels() ) 
-		before << "switch (" ;
-		switchStmt->get_condition()->accept(*this );
-		after += ")\n";
-		shift_left();
-
-		before << string( cur_indent, ' ' ) << "{" << std::endl;
-		cur_indent += CodeGenerator2::tabsize;
-
-		std::list< Statement * > stmts = switchStmt->get_branches();
-		bool lastBreak = false; 
-
-		// horrible, horrible hack
-		if ( dynamic_cast<BranchStmt *>( stmts.back() ) != 0 ) {
-			lastBreak = true;
-			stmts.pop_back();
-		} // if
-		acceptAll( stmts, *this );
-		if ( lastBreak ) {
-			Statement *st = switchStmt->get_branches().back();
-			before << CodeGenerator2::printLabels( st->get_labels());
-			st->accept( *this );
-		} // if
-	  
-		cur_indent -= CodeGenerator2::tabsize; 
-
-		before << /* "\r" << */ string( cur_indent, ' ' ) << "}" << endl ;
-	}
-
-	void CodeGenerator2::visit( CaseStmt *caseStmt ) {
-		before << string( cur_indent, ' ' );
-		if ( caseStmt->isDefault()) 
-			before << "default "  ;
-		else {
-			before << "case "  ;
-			caseStmt->get_condition()->accept(*this );
-		} // if
-		after += ":\n";
-		shift_left();
-
-		std::list<Statement *> sts = caseStmt->get_statements();
-
-		cur_indent += CodeGenerator2::tabsize;
-		for ( std::list<Statement *>::iterator i = sts.begin(); i != sts.end();  i++) {
-			before << /* "\r" << */ string( cur_indent, ' ' ) << printLabels( (*i)->get_labels() )  ;
-			(*i)->accept(*this );
-			shift_left();
-			before << ";" << endl;
-		}
-		cur_indent -= CodeGenerator2::tabsize;
-	}
-
-	void CodeGenerator2::visit( BranchStmt *branchStmt ) {
-		switch ( branchStmt->get_type()) {
-		  case BranchStmt::Goto:
-			if ( ! branchStmt->get_target().empty() )
-				before << "goto " << branchStmt->get_target();
-			else { 
-				if ( branchStmt->get_computedTarget() != 0 ) {
-					before << "goto *";
-					branchStmt->get_computedTarget()->accept( *this );
-				} // if
-			} // if
-			break;
-		  case BranchStmt::Break:
-			before << "break";
-			break;
-		  case BranchStmt::Continue:
-			before << "continue";
-			break;
-		}
-		before << ";";
-	}
-
-
-	void CodeGenerator2::visit( ReturnStmt *returnStmt ) {
-		before << "return ";
-
-		// xxx -- check for null expression;
-		if ( returnStmt->get_expr() ) {
-			returnStmt->get_expr()->accept( *this );
-		} // if
-		after += ";";
-	}
-
-	void CodeGenerator2::visit( WhileStmt *whileStmt ) {
-		if ( whileStmt->get_isDoWhile() )
-			before << "do" ;
-		else {
-			before << "while (" ;
-			whileStmt->get_condition()->accept(*this );
-			after += ")";
-		} // if
-		after += "{\n";
-		shift_left();
-
-		whileStmt->get_body()->accept( *this );
-
-		before << /* "\r" << */ string( cur_indent, ' ' ) << "}" ;
-
-		if ( whileStmt->get_isDoWhile() ) {
-			before << " while (" ;
-			whileStmt->get_condition()->accept(*this );
-			after += ");";
-		} // if
-
-		after += "\n";
-	}
-
-	void CodeGenerator2::visit( ForStmt *forStmt ) {
-		before << "for (";
-
-		if ( forStmt->get_initialization() != 0 )
-			forStmt->get_initialization()->accept( *this );
-		else
-			before << ";";
-		shift_left();
-
-		if ( forStmt->get_condition() != 0 )
-			forStmt->get_condition()->accept( *this );
-		shift_left(); before << ";";
-
-		if ( forStmt->get_increment() != 0 )
-			forStmt->get_increment()->accept( *this );
-		shift_left(); before << ")" << endl;
-
-		if ( forStmt->get_body() != 0 ) {
-			cur_indent += CodeGenerator2::tabsize; 
-			before << string( cur_indent, ' ' ) << CodeGenerator2::printLabels( forStmt->get_body()->get_labels() );
-			forStmt->get_body()->accept( *this );
-			cur_indent -= CodeGenerator2::tabsize; 
-		} // if
-	}
-
-	void CodeGenerator2::visit( NullStmt *nullStmt ) {
-		//before << /* "\r" << */ string( cur_indent, ' ' ) << CodeGenerator2::printLabels( nullStmt->get_labels() );
-		before << "/* null statement */ ;";
-	}
-
-	void CodeGenerator2::visit( DeclStmt *declStmt ) {
-		declStmt->get_decl()->accept( *this );
-	
-		if ( doSemicolon( declStmt->get_decl() ) ) {
-			after += ";";
-		} // if
-		shift_left();
-	}
-
-	std::string CodeGenerator2::printLabels( std::list< Label > &l ) {
-		std::string str( "" );
-		l.unique();
-
-		for ( std::list< Label >::iterator i = l.begin(); i != l.end(); i++ )
-			str += *i + ": ";
-
-		return str;
-	}
-
-	void CodeGenerator2::shift_left() {
-		before << after;
-		after = "";
-	}
-
-	void CodeGenerator2::handleStorageClass( Declaration *decl ) {
-		switch ( decl->get_storageClass() ) {
-		  case Declaration::NoStorageClass:
-			break;
-		  case Declaration::Extern:
-			before << "extern ";
-			break;
-		  case Declaration::Static:
-			before << "static ";
-			break;
-		  case Declaration::Auto:
-			// silently drop storage class
-			break;
-		  case Declaration::Register:
-			before << "register ";
-			break;
-		  case Declaration::Inline:
-			// handled as special via isInline flag (FIX)
-			break;
-		  case Declaration::Fortran:
-			// not handled
-			break;
-		} // switch
-	}
-} // namespace CodeGen
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: c/CodeGen/CodeGenerator2.h
===================================================================
--- src/CodeGen/CodeGenerator2.h	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ 	(revision )
@@ -1,126 +1,0 @@
-//
-// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
-//
-// The contents of this file are covered under the licence agreement in the
-// file "LICENCE" distributed with Cforall.
-//
-// CodeGenerator2.h -- 
-//
-// Author           : Richard C. Bilson
-// Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 23:35:37 2015
-// Update Count     : 2
-//
-
-#ifndef CODEGENV_H
-#define CODEGENV_H
-
-#include <strstream>
-#include <list>
-
-#include "SynTree/SynTree.h"
-#include "SynTree/Visitor.h"
-#include "SymTab/Indexer.h"
-
-namespace CodeGen {
-	class CodeGenerator2 : public Visitor {
-	  public:
-		static int tabsize;
-
-		CodeGenerator2( std::ostream &os );
-		CodeGenerator2( std::ostream &os, std::string, int indent = 0, bool infun = false );
-		CodeGenerator2( std::ostream &os, char *, int indent = 0, bool infun = false );
-
-		CodeGenerator2( CodeGenerator2 & );
-
-		//*** Declaration
-		virtual void visit( StructDecl * );
-		virtual void visit( FunctionDecl * );
-		virtual void visit( ObjectDecl * );
-		virtual void visit( UnionDecl *aggregateDecl );
-		virtual void visit( EnumDecl *aggregateDecl );
-		virtual void visit( ContextDecl *aggregateDecl );
-		virtual void visit( TypedefDecl *typeDecl );
-		virtual void visit( TypeDecl *typeDecl );
-
-		//*** Initializer
-		virtual void visit( SingleInit * );
-		virtual void visit( ListInit * );
-
-		//*** Constant
-		virtual void visit( Constant * );
-
-		//*** Expression
-		virtual void visit( ApplicationExpr *applicationExpr );
-		virtual void visit( UntypedExpr *untypedExpr );
-		virtual void visit( NameExpr *nameExpr );
-		virtual void visit( AddressExpr *addressExpr );
-		virtual void visit( CastExpr *castExpr );
-		virtual void visit( UntypedMemberExpr *memberExpr );
-		virtual void visit( MemberExpr *memberExpr );
-		virtual void visit( VariableExpr *variableExpr );
-		virtual void visit( ConstantExpr *constantExpr ); 
-		virtual void visit( SizeofExpr *sizeofExpr );
-		virtual void visit( LogicalExpr *logicalExpr );
-		virtual void visit( ConditionalExpr *conditionalExpr );
-		virtual void visit( CommaExpr *commaExpr );
-		virtual void visit( TupleExpr *tupleExpr );
-		virtual void visit( TypeExpr *typeExpr );
-
-		//*** Statements
-		virtual void visit( CompoundStmt * );
-		virtual void visit( ExprStmt * );
-		virtual void visit( IfStmt * );
-		virtual void visit( SwitchStmt * );
-		virtual void visit( CaseStmt * );
-		virtual void visit( BranchStmt * );
-		virtual void visit( ReturnStmt * );
-		virtual void visit( WhileStmt * );
-		virtual void visit( ForStmt * );
-		virtual void visit( NullStmt * );
-		virtual void visit( DeclStmt * ); 
-
-		std::string get_string( void );
-		void add_string_left( std::string s ) { before << s; }
-		void shift_left();
-		template< class Iterator > void genCommaList( Iterator begin, Iterator end );
-	  private:
-		int cur_indent;
-		bool insideFunction;
-		std::ostream &before;
-		std::string after;
-
-		static std::string printLabels ( std::list < Label > & );
-		void handleStorageClass( Declaration *decl );
-		void handleAggregate( AggregateDecl *aggDecl );
-		void handleTypedef( NamedTypeDecl *namedType );
-
-	};
-	
-	template< class Iterator >
-	void CodeGenerator2::genCommaList( Iterator begin, Iterator end ) {
-		if ( begin == end ) return;
-
-		for ( ;; ) {
-			(*begin++)->accept( *this );
-			if ( begin == end ) return;
-			before << ", ";
-		} // for
-	}
-  
-	inline bool doSemicolon( Declaration* decl ) {
-		if ( FunctionDecl* func = dynamic_cast< FunctionDecl* >( decl ) ) {
-			return ! func->get_statements();
-		} // if
-		return true;
-	}
-} // namespace CodeGen
-
-#endif // CODEGENV_H
-
-// Local Variables: //
-// tab-width: 4 //
-// mode: c++ //
-// compile-command: "make install" //
-// End: //
Index: src/CodeGen/GenType.cc
===================================================================
--- src/CodeGen/GenType.cc	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/CodeGen/GenType.cc	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 23:38:22 2015
-// Update Count     : 2
+// Last Modified On : Tue Jun  2 11:21:32 2015
+// Update Count     : 3
 //
 
@@ -18,5 +18,5 @@
 
 #include "GenType.h"
-#include "CodeGenerator2.h"
+#include "CodeGenerator.h"
 #include "SynTree/Visitor.h"
 #include "SynTree/Type.h"
Index: src/CodeGen/Generate.cc
===================================================================
--- src/CodeGen/Generate.cc	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/CodeGen/Generate.cc	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -10,6 +10,6 @@
 // Created On       : Mon May 18 07:44:20 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon May 18 23:39:24 2015
-// Update Count     : 1
+// Last Modified On : Tue Jun  2 11:21:06 2015
+// Update Count     : 2
 //
 
@@ -21,6 +21,5 @@
 #include "Generate.h"
 #include "SynTree/Declaration.h"
-
-#include "CodeGenerator2.h"
+#include "CodeGenerator.h"
 
 using namespace std;
Index: src/CodeGen/module.mk
===================================================================
--- src/CodeGen/module.mk	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/CodeGen/module.mk	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -11,6 +11,6 @@
 ## Created On       : Mon Jun  1 17:49:17 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Mon Jun  1 17:50:52 2015
-## Update Count     : 2
+## Last Modified On : Tue Jun  2 11:17:02 2015
+## Update Count     : 3
 ###############################################################################
 
@@ -19,5 +19,5 @@
 
 SRC +=  CodeGen/Generate.cc \
-	CodeGen/CodeGenerator2.cc \
+	CodeGen/CodeGenerator.cc \
 	CodeGen/GenType.cc \
 	CodeGen/FixNames.cc \
Index: src/Makefile.in
===================================================================
--- src/Makefile.in	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/Makefile.in	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -98,5 +98,5 @@
 am__objects_1 = cfa_cpp-main.$(OBJEXT) cfa_cpp-MakeLibCfa.$(OBJEXT) \
 	CodeGen/cfa_cpp-Generate.$(OBJEXT) \
-	CodeGen/cfa_cpp-CodeGenerator2.$(OBJEXT) \
+	CodeGen/cfa_cpp-CodeGenerator.$(OBJEXT) \
 	CodeGen/cfa_cpp-GenType.$(OBJEXT) \
 	CodeGen/cfa_cpp-FixNames.$(OBJEXT) \
@@ -335,5 +335,5 @@
 AUTOMAKE_OPTIONS = subdir-objects
 SRC = main.cc MakeLibCfa.cc CodeGen/Generate.cc \
-	CodeGen/CodeGenerator2.cc CodeGen/GenType.cc \
+	CodeGen/CodeGenerator.cc CodeGen/GenType.cc \
 	CodeGen/FixNames.cc CodeGen/OperatorTable.cc \
 	Common/SemanticError.cc Common/UniqueName.cc \
@@ -475,5 +475,5 @@
 CodeGen/cfa_cpp-Generate.$(OBJEXT): CodeGen/$(am__dirstamp) \
 	CodeGen/$(DEPDIR)/$(am__dirstamp)
-CodeGen/cfa_cpp-CodeGenerator2.$(OBJEXT): CodeGen/$(am__dirstamp) \
+CodeGen/cfa_cpp-CodeGenerator.$(OBJEXT): CodeGen/$(am__dirstamp) \
 	CodeGen/$(DEPDIR)/$(am__dirstamp)
 CodeGen/cfa_cpp-GenType.$(OBJEXT): CodeGen/$(am__dirstamp) \
@@ -760,5 +760,5 @@
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
-	-rm -f CodeGen/cfa_cpp-CodeGenerator2.$(OBJEXT)
+	-rm -f CodeGen/cfa_cpp-CodeGenerator.$(OBJEXT)
 	-rm -f CodeGen/cfa_cpp-FixNames.$(OBJEXT)
 	-rm -f CodeGen/cfa_cpp-GenType.$(OBJEXT)
@@ -868,5 +868,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfa_cpp-MakeLibCfa.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfa_cpp-main.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator2.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/cfa_cpp-FixNames.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@CodeGen/$(DEPDIR)/cfa_cpp-GenType.Po@am__quote@
@@ -1029,17 +1029,17 @@
 @am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-Generate.obj `if test -f 'CodeGen/Generate.cc'; then $(CYGPATH_W) 'CodeGen/Generate.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/Generate.cc'; fi`
 
-CodeGen/cfa_cpp-CodeGenerator2.o: CodeGen/CodeGenerator2.cc
-@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-CodeGenerator2.o -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator2.Tpo -c -o CodeGen/cfa_cpp-CodeGenerator2.o `test -f 'CodeGen/CodeGenerator2.cc' || echo '$(srcdir)/'`CodeGen/CodeGenerator2.cc
-@am__fastdepCXX_TRUE@	$(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator2.Tpo CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator2.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='CodeGen/CodeGenerator2.cc' object='CodeGen/cfa_cpp-CodeGenerator2.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-CodeGenerator2.o `test -f 'CodeGen/CodeGenerator2.cc' || echo '$(srcdir)/'`CodeGen/CodeGenerator2.cc
-
-CodeGen/cfa_cpp-CodeGenerator2.obj: CodeGen/CodeGenerator2.cc
-@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-CodeGenerator2.obj -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator2.Tpo -c -o CodeGen/cfa_cpp-CodeGenerator2.obj `if test -f 'CodeGen/CodeGenerator2.cc'; then $(CYGPATH_W) 'CodeGen/CodeGenerator2.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/CodeGenerator2.cc'; fi`
-@am__fastdepCXX_TRUE@	$(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator2.Tpo CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator2.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='CodeGen/CodeGenerator2.cc' object='CodeGen/cfa_cpp-CodeGenerator2.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-CodeGenerator2.obj `if test -f 'CodeGen/CodeGenerator2.cc'; then $(CYGPATH_W) 'CodeGen/CodeGenerator2.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/CodeGenerator2.cc'; fi`
+CodeGen/cfa_cpp-CodeGenerator.o: CodeGen/CodeGenerator.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-CodeGenerator.o -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Tpo -c -o CodeGen/cfa_cpp-CodeGenerator.o `test -f 'CodeGen/CodeGenerator.cc' || echo '$(srcdir)/'`CodeGen/CodeGenerator.cc
+@am__fastdepCXX_TRUE@	$(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Tpo CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='CodeGen/CodeGenerator.cc' object='CodeGen/cfa_cpp-CodeGenerator.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-CodeGenerator.o `test -f 'CodeGen/CodeGenerator.cc' || echo '$(srcdir)/'`CodeGen/CodeGenerator.cc
+
+CodeGen/cfa_cpp-CodeGenerator.obj: CodeGen/CodeGenerator.cc
+@am__fastdepCXX_TRUE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -MT CodeGen/cfa_cpp-CodeGenerator.obj -MD -MP -MF CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Tpo -c -o CodeGen/cfa_cpp-CodeGenerator.obj `if test -f 'CodeGen/CodeGenerator.cc'; then $(CYGPATH_W) 'CodeGen/CodeGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/CodeGenerator.cc'; fi`
+@am__fastdepCXX_TRUE@	$(am__mv) CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Tpo CodeGen/$(DEPDIR)/cfa_cpp-CodeGenerator.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='CodeGen/CodeGenerator.cc' object='CodeGen/cfa_cpp-CodeGenerator.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@	$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(cfa_cpp_CXXFLAGS) $(CXXFLAGS) -c -o CodeGen/cfa_cpp-CodeGenerator.obj `if test -f 'CodeGen/CodeGenerator.cc'; then $(CYGPATH_W) 'CodeGen/CodeGenerator.cc'; else $(CYGPATH_W) '$(srcdir)/CodeGen/CodeGenerator.cc'; fi`
 
 CodeGen/cfa_cpp-GenType.o: CodeGen/GenType.cc
Index: src/Parser/DeclarationNode.cc
===================================================================
--- src/Parser/DeclarationNode.cc	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/Parser/DeclarationNode.cc	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 12:34:05 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu May 21 09:28:54 2015
-// Update Count     : 13
+// Last Modified On : Wed Jun  3 11:54:32 2015
+// Update Count     : 14
 //
 
@@ -756,5 +756,5 @@
 }
 
-void buildList( const DeclarationNode *firstNode, std::list< Declaration* > &outputList ) {
+void buildList( const DeclarationNode *firstNode, std::list< Declaration * > &outputList ) {
 	SemanticError errors;
 	std::back_insert_iterator< std::list< Declaration* > > out( outputList );
Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/Parser/ExpressionNode.cc	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:17:07 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 13:19:35 2015
-// Update Count     : 2
+// Last Modified On : Wed Jun  3 11:28:56 2015
+// Update Count     : 7
 // 
 
@@ -633,5 +633,5 @@
 		ExpressionNode *exp;
 
-		if (( decl = dynamic_cast<DeclarationNode *>( init_)) != 0)
+		if (( decl = dynamic_cast<DeclarationNode *>(init_) ) != 0)
 			init = new StatementNode( decl );
 		else if (( exp = dynamic_cast<ExpressionNode *>( init_)) != 0)
@@ -659,16 +659,16 @@
 
 void ForCtlExprNode::print( std::ostream &os, int indent ) const{
-	os << string( indent,' ') << "For Control Expression -- : " << endl;
-
-	os << "\r" << string( indent + 2,' ') << "initialization: ";
-	if ( init != 0)
-		init->print( os, indent + 4);
-
-	os << "\n\r" << string( indent + 2,' ') << "condition: ";
-	if ( condition != 0)
-		condition->print( os, indent + 4);
-	os << "\n\r" << string( indent + 2,' ') << "increment: ";
-	if ( change != 0)
-		change->print( os, indent + 4);
+	os << string( indent,' ') << "For Control Expression -- :" << endl;
+
+	os << string( indent + 2,' ' ) << "initialization:" << endl;
+	if ( init != 0 )
+		init->printList( os, indent + 4 );
+
+	os << string( indent + 2, ' ' ) << "condition: " << endl;
+	if ( condition != 0 )
+		condition->print( os, indent + 4 );
+	os << string( indent + 2,' ' ) << "increment: " << endl;
+	if ( change != 0 )
+		change->print( os, indent + 4 );
 }
 
Index: src/Parser/ParseNode.cc
===================================================================
--- src/Parser/ParseNode.cc	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/Parser/ParseNode.cc	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:26:29 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue May 19 16:48:30 2015
-// Update Count     : 3
+// Last Modified On : Wed Jun  3 11:17:58 2015
+// Update Count     : 4
 // 
 
@@ -56,5 +56,5 @@
 }
 
-ParseNode *ParseNode::set_link(ParseNode *_next) {
+ParseNode *ParseNode::set_link( ParseNode *_next ) {
 	ParseNode *follow;
 
@@ -67,9 +67,9 @@
 }
 
-const string ParseNode::get_name(void) const {
+const string ParseNode::get_name( void ) const {
 	return name;
 }
 
-void ParseNode::print(std::ostream &os, int indent) const {}
+void ParseNode::print( std::ostream &os, int indent ) const {}
 
 
@@ -78,5 +78,5 @@
 
 	if ( next ) {
-	next->printList( os, indent );
+		next->printList( os, indent );
 	}
 }
Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/Parser/StatementNode.cc	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 14:59:41 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 15:10:45 2015
-// Update Count     : 7
+// Last Modified On : Wed Jun  3 11:55:01 2015
+// Update Count     : 8
 //
 
Index: src/Parser/lex.cc
===================================================================
--- src/Parser/lex.cc	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/Parser/lex.cc	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -391,5 +391,5 @@
 	flex_int32_t yy_nxt;
 	};
-static yyconst flex_int16_t yy_accept[821] =
+static yyconst flex_int16_t yy_accept[822] =
     {   0,
         0,    0,    0,    0,    0,    0,  108,  108,  111,  111,
@@ -407,80 +407,81 @@
       102,  102,  102,    0,  102,  127,  128,  126,  148,  150,
       146,  151,  149,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   96,    0,  110,
-      107,   95,    0,    0,  162,   95,   95,   95,   95,   95,
+        0,    0,    0,    0,    0,    0,    0,    0,   96,    0,
+      110,  107,   95,    0,    0,  162,   95,   95,   95,   95,
        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
-       95,   36,   95,   95,   95,   95,   95,   95,   95,   95,
-       95,   95,   53,   95,   95,   95,   95,   95,   95,   95,
-       95,   95,   95,   95,   95,   95,   95,  161,  153,    7,
-        0,    0,    0,    2,    0,    5,   98,    0,    0,    0,
-
-      108,  113,  113,    0,    0,    0,  111,    0,    0,    0,
+       95,   95,   36,   95,   95,   95,   95,   95,   95,   95,
+       95,   95,   95,   53,   95,   95,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,  161,  153,
+        7,    0,    0,    0,    2,    0,    5,   98,    0,    0,
+
+        0,  108,  113,  113,    0,    0,    0,  111,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  125,  105,    0,  105,    0,    0,    6,    0,
-      103,    0,    0,    0,  105,    0,  103,  103,  103,  103,
-        0,  104,    0,    0,  102,  102,  102,  102,    0,  163,
-      164,    0,  167,  166,    0,    0,    0,   96,    0,    0,
-        0,    0,    0,    0,    0,   95,   95,   95,   95,   95,
+        0,    0,    0,  125,  105,    0,  105,    0,    0,    6,
+        0,  103,    0,    0,    0,  105,    0,  103,  103,  103,
+      103,    0,  104,    0,    0,  102,  102,  102,  102,    0,
+      163,  164,    0,  167,  166,    0,    0,    0,   96,    0,
+        0,    0,    0,    0,    0,    0,   95,   95,   95,   95,
        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
-       95,   95,   95,   95,   14,   95,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   14,   95,   95,   95,   95,
        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
 
-       95,   47,   95,   95,   95,   60,   95,   95,   95,   95,
-       95,   95,   95,   95,   95,   95,   95,   95,   82,   95,
-       95,   95,   95,   95,   95,    0,    0,    0,    0,    0,
-        0,    0,    0,  113,    0,    0,    0,    0,    0,  113,
-        0,    0,  168,    0,    0,    0,    0,    0,    0,    0,
-        0,  105,    0,    0,    0,  105,    0,  103,  103,    0,
-        0,  104,  104,    0,  104,    0,  104,  102,  102,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   95,
+       95,   95,   47,   95,   95,   95,   60,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   95,   95,   95,   82,
+       95,   95,   95,   95,   95,   95,    0,    0,    0,    0,
+        0,    0,    0,    0,  113,    0,    0,    0,    0,    0,
+      113,    0,    0,  168,    0,    0,    0,    0,    0,    0,
+        0,    0,  105,    0,    0,    0,  105,    0,  103,  103,
+        0,    0,  104,  104,    0,  104,    0,  104,  102,  102,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
 
-       95,   20,   95,   23,   95,   25,   95,   95,   95,   95,
-       95,   95,   39,   40,   95,   95,   95,   95,   95,   95,
-       95,   52,   95,   63,   95,   95,   95,   95,   95,   95,
-       95,   95,   95,   95,   95,   83,   95,   95,   90,   95,
-       95,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  113,    0,    0,    0,    0,
-        0,  105,    0,    0,    0,    0,    0,    0,  104,  104,
-        0,  106,    0,  104,  104,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   95,   95,
-       21,   95,   95,   95,   95,   95,   95,   95,   15,   95,
+       95,   95,   20,   95,   23,   95,   25,   95,   95,   95,
+       95,   95,   95,   39,   40,   95,   95,   95,   95,   95,
+       95,   95,   52,   95,   63,   95,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   95,   83,   95,   95,   90,
+       95,   95,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  113,    0,    0,    0,
+        0,    0,  105,    0,    0,    0,    0,    0,    0,  104,
+      104,    0,  106,    0,  104,  104,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   95,
+       95,   21,   95,   95,   95,   95,   95,   95,   95,   15,
 
        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
-       95,   95,   22,   24,   95,   30,   95,   95,   95,   95,
-       38,   95,   95,   95,   45,   95,   95,   50,   95,   95,
-       95,   95,   95,   71,   95,   95,   95,   95,   95,   81,
-       95,   95,   88,   95,   95,   94,    0,    0,    0,    0,
+       95,   95,   95,   22,   24,   95,   30,   95,   95,   95,
+       95,   38,   95,   95,   95,   45,   95,   95,   50,   95,
+       95,   95,   95,   95,   71,   95,   95,   95,   95,   95,
+       81,   95,   95,   88,   95,   95,   94,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,  106,    0,    0,  104,  106,
-      106,    0,  104,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,   95,    0,   95,   95,   95,   95,   95,
+        0,    0,    0,    0,    0,    0,  106,    0,    0,  104,
+      106,  106,    0,  104,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,   95,    0,   95,   95,   95,   95,
        95,   95,   95,   95,   95,   95,   95,   95,   95,   95,
 
-       55,   95,   95,   95,   95,   95,   95,   95,   26,   95,
-       95,   95,   37,   42,   95,   95,   48,   95,   57,   64,
-       95,   95,   70,   72,   75,   76,   78,   79,   95,   85,
-       95,   95,    0,    1,    0,    0,    0,    0,    0,    0,
-       98,    0,    0,    0,  113,    0,    0,    0,    0,  106,
-        0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-       95,   95,   17,   95,   95,   95,   95,   95,   95,   95,
-       16,   95,   95,   31,   95,   95,   95,   95,   95,   95,
-       95,   95,   95,   95,   33,   95,   35,   95,   44,   49,
-       95,   95,   84,   95,   95,    0,    0,    0,    0,    0,
-
-        0,    0,    0,    0,    0,    0,    0,    0,   10,   11,
-       27,   51,   95,   95,   95,   95,   95,   95,   95,   95,
-       95,   95,   56,   58,   61,   95,   95,   73,   86,   95,
-       34,   43,   66,   67,   89,   91,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,    0,   95,   65,
-       95,   95,   12,   95,   28,   32,   95,   95,   95,   62,
-       95,   95,   95,   95,    0,    0,    0,    0,    0,    0,
-        0,    0,    0,    0,    0,    0,    0,   54,   95,   95,
-       95,   95,   95,   95,   46,   59,   68,   74,   87,   92,
-        0,    0,    0,    0,    0,    0,    0,    0,   95,   95,
-
-       13,   18,   29,   95,   95,   95,    0,    0,   95,   95,
-       95,   95,   69,   93,   95,   80,   19,   41,   77,    0
+       95,   55,   95,   95,   95,   95,   95,   95,   95,   26,
+       95,   95,   95,   37,   42,   95,   95,   48,   95,   57,
+       64,   95,   95,   70,   72,   75,   76,   78,   79,   95,
+       85,   95,   95,    0,    1,    0,    0,    0,    0,    0,
+        0,   98,    0,    0,    0,  113,    0,    0,    0,    0,
+      106,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+        0,   95,   95,   17,   95,   95,   95,   95,   95,   95,
+       95,   16,   95,   95,   31,   95,   95,   95,   95,   95,
+       95,   95,   95,   95,   95,   33,   95,   35,   95,   44,
+       49,   95,   95,   84,   95,   95,    0,    0,    0,    0,
+
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   10,
+       11,   27,   51,   95,   95,   95,   95,   95,   95,   95,
+       95,   95,   95,   56,   58,   61,   95,   95,   73,   86,
+       95,   34,   43,   66,   67,   89,   91,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,    0,   95,
+       65,   95,   95,   12,   95,   28,   32,   95,   95,   95,
+       62,   95,   95,   95,   95,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,   54,   95,
+       95,   95,   95,   95,   95,   46,   59,   68,   74,   87,
+       92,    0,    0,    0,    0,    0,    0,    0,    0,   95,
+
+       95,   13,   18,   29,   95,   95,   95,    0,    0,   95,
+       95,   95,   95,   69,   93,   95,   80,   19,   41,   77,
+        0
     } ;
 
@@ -530,233 +531,233 @@
     } ;
 
-static yyconst flex_int16_t yy_base[995] =
+static yyconst flex_int16_t yy_base[996] =
     {   0,
-        0,   83, 2183, 2181,   93,    0,  175,  176,  177,  178,
-     2193, 3518,  189, 3518,  195,   54, 3518, 2140,   59,  171,
-     3518, 3518, 3518,   55,  186, 3518,  189,  187,  202,  214,
-      272,    0, 2158, 3518,  214, 2158,  150,  340, 2136,  222,
-     3518,  157, 3518, 2152,  277, 3518,  192,  133,  196,  198,
+        0,   83, 2185, 2183,   93,    0,  175,  176,  177,  178,
+     2195, 3520,  189, 3520,  195,   54, 3520, 2142,   59,  171,
+     3520, 3520, 3520,   55,  186, 3520,  189,  187,  202,  214,
+      272,    0, 2160, 3520,  214, 2160,  150,  340, 2138,  222,
+     3520,  157, 3520, 2154,  277, 3520,  192,  133,  196,  198,
       204,  271,  155,  218,  181,  200,  266,  238,  210,  224,
-      282, 3518,  223, 3518, 2149,  372,  361, 3518, 2160, 3518,
-     2129,  229, 3518,    0, 3518,  372,    0, 3518,  397, 3518,
-      403,  409, 3518,  443, 2128,  234, 3518, 3518, 3518, 3518,
-     3518, 2144, 3518, 2139, 3518, 3518, 2151,  503, 3518, 2168,
-
-     3518,  548,  394,  403,  414,  262,  240,  280,  402,  387,
-        0,  305,  241,  335,  404, 3518, 3518, 3518, 2138, 3518,
-     3518, 3518, 2136, 2132,  215,  310, 2147,  327,  333,  349,
-      401,  414,  434,  449, 2128,  452,  453, 2109,  317, 3518,
-     3518,  464, 2105, 2103, 3518,  425,  418,  437,  439,  438,
-      441,  443,  444,  555,  446,  449,  451,  461,  452,  450,
-      453,  251,  458,  466,  318,  468,  469,  472,  480,  481,
-      488,  486, 2101,  494,  493,  497,  517,  496,  531,  525,
-      533,  507,  499,  529,  553,  534,  541, 3518, 3518,  630,
-      636, 2149,  642, 3518,  648, 3518, 2099,  538, 2095, 2093,
-
-        0, 3518,  654, 2089, 2088, 2087,    0, 2109,  523,  570,
-      587,  624,  661,  591,  651,  614,  620, 2106,  652,  655,
-     2083, 2078, 3518,  687,  674, 3518, 2077, 2128, 3518,  663,
-        0,  404,  695,  713,  734,  745,  641, 3518, 2086, 2061,
-        0,  753, 2103,  756,  642, 3518, 2079, 2055,  767, 3518,
-     3518, 2087, 3518, 3518,  674,  700, 2067, 2066,  677, 2058,
-     2057, 2056,    0, 2055,    0,  543,  681,  694,  735,  572,
-      748,  695,  752,  714,  758,  736,  755,  746,  766,  760,
-      644,  762,  763,  767, 2056,  769,  784,  692,  504,  771,
-      774,  703,  788,  794,  777,  786,  797,  798,  799,  801,
-
-      803,  804,  802,  805,  811, 2051,  816,  810,  815,  812,
-      817,  818,  578,  820,  819,  822,  830,  831, 2050,  833,
-      832,  835,  836,  846,  839,  905,  886, 2046, 2045, 2043,
-        0, 2038,    0,  892,  896, 2037,    0, 2036,    0, 2035,
-        0, 2054, 3518,  711,  877, 1990, 1985,    0, 1984,    0,
-      900,  907,  918,  929,  940,  952,  962, 3518, 3518,  926,
-      927,  979,  955, 1013,  893, 1011,  934, 3518, 3518, 1981,
-     1980, 1979,    0, 1978,    0, 1977,    0, 1975,    0,  847,
-      861,  953,  887,  888,  898,  950,  918,  960,  961,  942,
-      970,  983,  975,  991,  990,  996, 1001, 1004, 1006,  993,
-
-     1013, 1973,  764, 1972,  532, 1971, 1010, 1015, 1020, 1019,
-     1021, 1023, 1970, 1968,  919, 1022, 1024, 1027, 1035, 1038,
-     1043, 1964, 1040, 1963, 1041, 1045, 1047, 1048, 1051, 1046,
-     1053, 1056,  956, 1054, 1059, 1062, 1060, 1063, 1962, 1065,
-     1072, 1125, 1958,    0, 1957,    0, 1955,    0, 1950,    0,
-     1117, 1949,    0, 1948,    0, 1947, 1945, 1940,    0, 1939,
-        0, 1121, 1127, 1172, 1114, 1183, 1115, 1085, 1088, 3518,
-     1189, 1195, 1206, 1949, 1925, 1935, 1930,    0, 1929,    0,
-     1928,    0, 1927,    0, 1925,    0, 1921,    0, 1105, 1107,
-     1923, 1106, 1112, 1114, 1128, 1125, 1078, 1075, 1123, 1115,
-
-     1173, 1176, 1185, 1183, 1129, 1139,  164, 1190, 1189, 1191,
-     1193, 1195, 1922, 1921, 1203, 1920, 1196, 1201, 1204, 1206,
-     1918, 1207, 1141, 1213, 1912, 1214, 1216, 1907, 1217, 1223,
-     1209, 1220, 1225, 1902, 1227, 1230, 1234, 1236, 1237, 1901,
-     1238, 1243, 1900, 1239, 1244, 1899, 1947, 1893,    0, 1871,
-        0, 1870,    0, 1869,    0, 1868,    0, 1866,    0, 1861,
-        0, 1860,    0, 1288, 1294, 1300, 1311, 1859, 3518, 1322,
-     3518, 1346, 3518, 1858,    0, 1856,    0, 1851,    0, 1850,
-        0,    0,    0, 1852,    0, 1308, 1245, 1246, 1288, 1290,
-     1281, 1299, 1316, 1312, 1248, 1323, 1327, 1278, 1328, 1280,
-
-     1330, 1331, 1366, 1340, 1334, 1341, 1344, 1343, 1851, 1346,
-     1347, 1351, 1849, 1844, 1352, 1353, 1843, 1357, 1842, 1841,
-     1358, 1364, 1839, 1834, 1833, 1832, 1831, 1829, 1359, 1824,
-     1375, 1363, 1872, 3518, 1819,    0, 1818,    0,    0,    0,
-     1819,    0,    0,    0, 3518,    0,    0,    0,    0, 1414,
-     1420, 1465, 1811,    0, 1810,    0,    0,    0,    0, 1809,
-     1360, 1397, 1811, 1376, 1398, 1377, 1379, 1401, 1408, 1400,
-     1809, 1410, 1413, 1425, 1421, 1443, 1431, 1444, 1445, 1446,
-     1414, 1447, 1448, 1419, 1804, 1450, 1803, 1433, 1802, 1801,
-     1451, 1452, 1799, 1454, 1457,    0,    0, 1791, 1790, 1789,
-
-     1788, 1504,    0, 1786, 1775, 1772, 1771, 1767, 1769, 1768,
-     1767, 1765, 1461, 1465, 1464, 1470, 1463, 1460, 1467, 1484,
-     1486, 1515, 1741, 1489, 1730, 1491, 1490, 1495, 1500, 1496,
-     1729, 1725, 1722, 1721, 1720, 1718, 1713, 1711, 1706, 1697,
-     1694, 1684, 1681, 1680, 1653, 1652, 1651, 1650, 1501, 1652,
-     1502, 1504, 1505, 1509, 1510, 1642, 1506, 1537, 1514, 1639,
-     1516, 1518, 1526, 1525, 1635, 1581, 1580, 1579, 1578, 1577,
-     1576, 1575, 1573, 1571, 1570, 1569, 1568, 1570, 1519, 1520,
-     1530, 1532, 1536, 1535, 1569, 1568, 1542, 1567, 1566, 1543,
-     1469, 1423, 1380, 1306, 1302, 1251, 1247,  963, 1544, 1549,
-
-      964, 1547,  907, 1548, 1555, 1556,  850,  730, 1557, 1560,
-     1561, 1562,  636,  500, 1563,  415,  298,  236,  165, 3518,
-     1637, 1654, 1671, 1685, 1699, 1716, 1730, 1747, 1762, 1779,
-     1796, 1808, 1821, 1832, 1842, 1852, 1862, 1872, 1882, 1892,
-     1902, 1912, 1928, 1939, 1950, 1961, 1971, 1981, 1991, 2001,
-     2011, 2021, 2034, 2051, 2068, 2079, 2089, 2099, 2109, 2119,
-     2129, 2139, 2149, 2159, 2169, 2179, 2189, 2199, 2209, 2219,
-     2229, 2239, 2249, 2260, 2270, 2280, 2290, 2300, 2310, 2320,
-     2330, 2340, 2350, 2360, 2373, 2390, 2401, 2411, 2421, 2431,
-     2441, 2451, 2461, 2471, 2481, 2491, 2501, 2511, 2521, 2531,
-
-     2541, 2551, 2561, 2571, 2581, 2591, 2601, 2611, 2621, 2631,
-     2641, 2651, 2661, 2671, 2681, 2691, 2701, 2714, 2731, 2742,
-     2752, 2762, 2772, 2782, 2792, 2802, 2812, 2822, 2832, 2842,
-     2852, 2862, 2872, 2882, 2892, 2902, 2912, 2922, 2932, 2942,
-     2952, 2962, 2972, 2982, 2992, 3002, 3015, 3026, 3042, 3053,
-     3063, 3073, 3083, 3093, 3103, 3116, 3127, 3137, 3147, 3157,
-     3167, 3177, 3187, 3197, 3207, 3217, 3227, 3237, 3247, 3257,
-     3267, 3280, 3291, 3301, 3311, 3321, 3331, 3341, 3351, 3361,
-     3371, 3381, 3391, 3401, 3411, 3421, 3431, 3441, 3451, 3461,
-     3471, 3481, 3491, 3501
+      282, 3520,  223, 3520, 2151,  372,  361, 3520, 2162, 3520,
+     2131,  229, 3520,    0, 3520,  374,    0, 3520,  399, 3520,
+      405,  411, 3520,  445, 2130,  234, 3520, 3520, 3520, 3520,
+     3520, 2146, 3520, 2141, 3520, 3520, 2153,  505, 3520, 2170,
+
+     3520,  550,  401,  414,  462,  262,  240,  280,  443,  380,
+        0,  305,  241,  335,  399, 3520, 3520, 3520, 2140, 3520,
+     3520, 3520, 2138, 2134,  215,  310, 2149,  327,  333,  349,
+      361,  399,  400,  411, 2130,  427, 2080,  436, 2110,  317,
+     3520, 3520,  483, 2105, 2100, 3520,  439,  376,  431,  420,
+      368,  432,  421,  448,  557,  442,  451,  453,  463,  452,
+      455,  398,  251,  459,  466,  344,  467,  456,  474,  464,
+      298,  468,  488, 2102,  490,  492,  496,  506,  498,  502,
+      499,  518,  529,  507,  532,  533,  535,  543, 3520, 3520,
+      632,  625, 2150,  638, 3520,  665, 3520, 2100,  514, 2095,
+
+     2091,    0, 3520,  631, 2090, 2089, 2088,    0, 2110,  565,
+      581,  589,  626,  639,  643,  647,  648,  651, 2106,  662,
+      663, 2080, 2079, 3520,  675,  686, 3520, 2078, 2129, 3520,
+      677,    0,  571,  700,  722,  739,  750,  571, 3520, 2086,
+     2059,    0,  738, 2104,  772,  594, 3520, 2080, 2056,  791,
+     3520, 3520, 2088, 3520, 3520,  673,  688, 2067, 2063,  659,
+     2059, 2058, 2057,    0, 2055,    0,  691,  555,  681,  536,
+      541,  700,  717,  701,  719,  755,  702,  708,  736,  752,
+      733,  750,  727,  729,  760, 2053,  771,  774,  772,  773,
+      782,  783,  784,  785,  618,  788,  786,  787,  791,  793,
+
+      792,  799,  809,  796,  798,  810, 2052,  811,  812,  813,
+      817,  818,  820,  819,  821,  824,  825,  828,  829, 2051,
+      833,  834,  832,  835,  844,  838,  904,  726, 2047, 2045,
+     2040,    0, 2039,    0,  891,  895, 2038,    0, 2037,    0,
+     2035,    0, 2011, 3520,  876,  890, 1989, 1986,    0, 1983,
+        0,  902,  908,  930,  914,  953,  959,  965, 3520, 3520,
+      952,  958,  973,  922, 1027,  845, 1012,  898, 3520, 3520,
+     1982, 1981, 1980,    0, 1979,    0, 1977,    0, 1972,    0,
+      899,  891,  893,  944,  949,  909,  950,  960,  964,  953,
+      978,  983,  991,  989,  972,  979,  997,  851,  871, 1010,
+
+     1013, 1014, 1974, 1020, 1973, 1016, 1972,  922, 1017, 1024,
+     1018, 1023, 1036, 1970, 1966, 1022, 1025, 1040, 1026, 1043,
+     1044, 1050, 1965, 1046, 1964, 1049, 1052, 1051, 1054, 1053,
+     1056, 1060, 1057, 1061, 1062, 1066, 1076, 1079, 1077, 1963,
+     1067, 1081, 1129, 1959,    0, 1957,    0, 1952,    0, 1951,
+        0, 1126, 1950,    0, 1949,    0, 1947, 1942, 1941,    0,
+     1940,    0, 1130, 1136, 1181, 1123, 1192, 1124, 1101, 1090,
+     3520, 1198, 1204, 1215, 1950, 1925, 1932, 1931,    0, 1930,
+        0, 1929,    0, 1927,    0, 1923,    0, 1922,    0, 1114,
+     1116, 1924, 1115, 1121, 1123, 1137, 1134, 1144, 1082,  500,
+
+     1162, 1185, 1192, 1083, 1194, 1124, 1148,  164, 1197, 1198,
+     1200, 1201, 1203, 1923, 1922, 1202, 1920, 1205, 1209, 1212,
+     1215, 1914, 1216, 1138, 1221, 1909, 1222, 1218, 1904, 1225,
+     1229, 1228, 1230, 1232, 1903, 1239, 1235, 1241, 1240, 1242,
+     1902, 1244, 1246, 1901, 1251, 1252, 1900, 1947, 1873,    0,
+     1872,    0, 1871,    0, 1870,    0, 1868,    0, 1863,    0,
+     1862,    0, 1861,    0, 1298, 1304, 1310, 1321, 1860, 3520,
+     1332, 3520, 1356, 3520, 1858,    0, 1853,    0, 1852,    0,
+     1851,    0,    0,    0, 1853,    0, 1318, 1257, 1258, 1298,
+     1300, 1291, 1259, 1255, 1309,  912, 1333, 1319, 1288, 1322,
+
+     1290, 1337, 1338, 1343, 1341, 1344, 1349, 1350, 1351, 1851,
+     1352, 1353, 1357, 1846, 1845, 1360, 1354, 1844, 1361, 1843,
+     1841, 1363, 1362, 1836, 1835, 1834, 1833, 1831, 1826, 1365,
+     1825, 1377, 1367, 1873, 3520, 1820,    0, 1818,    0,    0,
+        0, 1816,    0,    0,    0, 3520,    0,    0,    0,    0,
+     1416, 1422, 1467, 1812,    0, 1811,    0,    0,    0,    0,
+     1810, 1383, 1399, 1811, 1384, 1400, 1401, 1402, 1412, 1413,
+     1385, 1806, 1417, 1418, 1421, 1428, 1448, 1430, 1435, 1454,
+     1447, 1445, 1451, 1436, 1452, 1805, 1453, 1804, 1434, 1803,
+     1801, 1455, 1456, 1796, 1460, 1463,    0,    0, 1792, 1791,
+
+     1790, 1788, 1508,    0, 1777, 1774, 1773, 1769, 1768, 1770,
+     1769, 1767, 1743, 1466, 1471, 1464, 1461, 1467, 1473, 1474,
+     1487, 1485, 1516, 1732, 1491, 1731, 1492, 1497, 1499, 1503,
+     1493, 1727, 1724, 1723, 1722, 1720, 1718, 1713, 1708, 1699,
+     1696, 1686, 1683, 1682, 1655, 1654, 1653, 1652, 1651, 1501,
+     1644, 1505, 1507, 1509, 1510, 1514, 1641, 1513, 1540, 1518,
+     1640, 1519, 1520, 1524, 1529, 1583, 1582, 1581, 1580, 1579,
+     1578, 1577, 1576, 1575, 1574, 1573, 1572, 1571, 1573, 1522,
+     1530, 1533, 1535, 1539, 1534, 1571, 1570, 1545, 1370, 1315,
+     1546, 1258, 1257, 1129, 1082,  984,  983,  982,  944, 1547,
+
+     1550,  916, 1554,  758, 1558, 1559, 1560,  677,  676, 1552,
+     1553, 1564, 1566,  635,  595, 1565,  544,  419,  236,  165,
+     3520, 1639, 1656, 1673, 1687, 1701, 1718, 1732, 1749, 1764,
+     1781, 1798, 1810, 1823, 1834, 1844, 1854, 1864, 1874, 1884,
+     1894, 1904, 1914, 1930, 1941, 1952, 1963, 1973, 1983, 1993,
+     2003, 2013, 2023, 2036, 2053, 2070, 2081, 2091, 2101, 2111,
+     2121, 2131, 2141, 2151, 2161, 2171, 2181, 2191, 2201, 2211,
+     2221, 2231, 2241, 2251, 2262, 2272, 2282, 2292, 2302, 2312,
+     2322, 2332, 2342, 2352, 2362, 2375, 2392, 2403, 2413, 2423,
+     2433, 2443, 2453, 2463, 2473, 2483, 2493, 2503, 2513, 2523,
+
+     2533, 2543, 2553, 2563, 2573, 2583, 2593, 2603, 2613, 2623,
+     2633, 2643, 2653, 2663, 2673, 2683, 2693, 2703, 2716, 2733,
+     2744, 2754, 2764, 2774, 2784, 2794, 2804, 2814, 2824, 2834,
+     2844, 2854, 2864, 2874, 2884, 2894, 2904, 2914, 2924, 2934,
+     2944, 2954, 2964, 2974, 2984, 2994, 3004, 3017, 3028, 3044,
+     3055, 3065, 3075, 3085, 3095, 3105, 3118, 3129, 3139, 3149,
+     3159, 3169, 3179, 3189, 3199, 3209, 3219, 3229, 3239, 3249,
+     3259, 3269, 3282, 3293, 3303, 3313, 3323, 3333, 3343, 3353,
+     3363, 3373, 3383, 3393, 3403, 3413, 3423, 3433, 3443, 3453,
+     3463, 3473, 3483, 3493, 3503
 
     } ;
 
-static yyconst flex_int16_t yy_def[995] =
+static yyconst flex_int16_t yy_def[996] =
     {   0,
-      820,    1,  821,  821,  820,    5,  822,  822,  823,  823,
-      820,  820,  820,  820,  820,  820,  820,  824,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,   31,  820,  820,  820,  820,  820,  820,  825,  824,
-      820,  820,  820,  820,  824,  820,  824,  824,  824,  824,
-      824,  824,  824,  824,  824,  824,  824,  824,  824,  824,
-      824,  820,  820,  820,  820,  820,  826,  820,  820,  820,
-      827,  820,  820,  828,  820,  829,  830,  820,  820,  820,
-      820,  820,  820,  820,  824,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  831,
-
-      820,  820,   30,  820,  820,  820,  820,  832,   30,  820,
-       31,  820,  820,   31,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  833,  820,  820,
-      820,  824,  834,  835,  820,  824,  824,  824,  824,  824,
-      824,  824,  824,  824,  824,  824,  824,  824,  824,  824,
-      824,  824,  824,  824,  824,  824,  824,  824,  824,  824,
-      824,  824,  824,  824,  824,  824,  824,  824,  824,  824,
-      824,  824,  824,  824,  824,  824,  824,  820,  820,  820,
-      826,  826,  826,  820,  826,  820,  827,  820,  836,  837,
-
-      828,  820,  820,  838,  839,  840,  830,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      841,  842,  820,  820,  820,  820,  224,  843,  820,  820,
-      103,  103,  820,  820,  820,  820,  820,  820,  820,  820,
-      844,  845,  846,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  833,  820,  847,
-      848,  849,  850,  851,  852,  853,  853,  853,  853,  853,
-      853,  853,  853,  853,  853,  853,  853,  853,  853,  853,
-      853,  853,  853,  853,  853,  853,  853,  853,  853,  853,
-      853,  853,  853,  853,  853,  853,  853,  853,  853,  853,
-
-      853,  853,  853,  853,  853,  853,  853,  853,  853,  853,
-      853,  853,  853,  853,  853,  853,  853,  853,  853,  853,
-      853,  853,  853,  853,  853,  854,  855,  856,  857,  858,
-      859,  860,  861,  820,  820,  862,  863,  864,  865,  866,
-      867,  820,  820,  820,  820,  820,  868,  869,  870,  871,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  872,
-      873,  874,  820,  820,  820,  874,  820,  820,  820,  875,
+      821,    1,  822,  822,  821,    5,  823,  823,  824,  824,
+      821,  821,  821,  821,  821,  821,  821,  825,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,   31,  821,  821,  821,  821,  821,  821,  826,  825,
+      821,  821,  821,  821,  825,  821,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  821,  821,  821,  821,  821,  827,  821,  821,  821,
+      828,  821,  821,  829,  821,  830,  831,  821,  821,  821,
+      821,  821,  821,  821,  825,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  832,
+
+      821,  821,   30,  821,  821,  821,  821,  833,   30,  821,
+       31,  821,  821,   31,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  834,  821,
+      821,  821,  825,  835,  836,  821,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  825,  825,
+      825,  825,  825,  825,  825,  825,  825,  825,  821,  821,
+      821,  827,  827,  827,  821,  827,  821,  828,  821,  837,
+
+      838,  829,  821,  821,  839,  840,  841,  831,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  842,  843,  821,  821,  821,  821,  225,  844,  821,
+      821,  103,  103,  821,  821,  821,  821,  821,  821,  821,
+      821,  845,  846,  847,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  834,  821,
+      848,  849,  850,  851,  852,  853,  854,  854,  854,  854,
+      854,  854,  854,  854,  854,  854,  854,  854,  854,  854,
+      854,  854,  854,  854,  854,  854,  854,  854,  854,  854,
+      854,  854,  854,  854,  854,  854,  854,  854,  854,  854,
+
+      854,  854,  854,  854,  854,  854,  854,  854,  854,  854,
+      854,  854,  854,  854,  854,  854,  854,  854,  854,  854,
+      854,  854,  854,  854,  854,  854,  855,  856,  857,  858,
+      859,  860,  861,  862,  821,  821,  863,  864,  865,  866,
+      867,  868,  821,  821,  821,  821,  821,  869,  870,  871,
+      872,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      873,  874,  875,  821,  821,  821,  875,  821,  821,  821,
       876,  877,  878,  879,  880,  881,  882,  883,  884,  885,
-      885,  885,  885,  885,  885,  885,  885,  885,  885,  885,
-      885,  885,  885,  885,  885,  885,  885,  885,  885,  885,
-
-      885,  885,  885,  885,  885,  885,  885,  885,  885,  885,
-      885,  885,  885,  885,  885,  885,  885,  885,  885,  885,
-      885,  885,  885,  885,  885,  885,  885,  885,  885,  885,
-      885,  885,  885,  885,  885,  885,  885,  885,  885,  885,
-      885,  886,  887,  888,  889,  890,  891,  892,  893,  894,
-      820,  895,  896,  897,  898,  899,  899,  900,  901,  902,
-      903,  820,  820,  820,  904,  820,  904,  820,  820,  820,
-      820,  820,  820,  820,  820,  905,  906,  907,  908,  909,
-      910,  911,  912,  913,  914,  915,  916,  917,  918,  918,
-      918,  918,  918,  918,  918,  918,  918,  918,  918,  918,
-
-      918,  918,  918,  918,  918,  918,  918,  918,  918,  918,
-      918,  918,  918,  918,  918,  918,  918,  918,  918,  918,
-      918,  918,  918,  918,  918,  918,  918,  918,  918,  918,
-      918,  918,  918,  918,  918,  918,  918,  918,  918,  918,
-      918,  918,  918,  918,  918,  918,  919,  920,  921,  922,
+      886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
+      886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
+
+      886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
+      886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
+      886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
+      886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
+      886,  886,  887,  888,  889,  890,  891,  892,  893,  894,
+      895,  821,  896,  897,  898,  899,  900,  900,  901,  902,
+      903,  904,  821,  821,  821,  905,  821,  905,  821,  821,
+      821,  821,  821,  821,  821,  821,  906,  907,  908,  909,
+      910,  911,  912,  913,  914,  915,  916,  917,  918,  919,
+      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
+
+      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
+      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
+      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
+      919,  919,  919,  919,  919,  919,  919,  919,  919,  919,
+      919,  919,  919,  919,  919,  919,  919,  920,  921,  922,
       923,  924,  925,  926,  927,  928,  929,  930,  931,  932,
-      933,  934,  935,  820,  820,  820,  820,  936,  820,  820,
-      820,  820,  820,  937,  938,  939,  940,  941,  942,  943,
-      944,  945,  946,  947,  948,  947,  947,  947,  947,  947,
-      947,  947,  947,  947,  947,  947,  947,  947,  947,  947,
-
-      947,  947,  947,  947,  947,  947,  947,  947,  947,  947,
-      947,  947,  947,  947,  947,  947,  947,  947,  947,  947,
-      947,  947,  947,  947,  947,  947,  947,  947,  947,  947,
-      947,  947,  949,  820,  950,  951,  952,  953,  954,  955,
-      956,  957,  958,  959,  820,  960,  961,  962,  963,  820,
-      820,  820,  964,  965,  966,  967,  968,  969,  970,  971,
-      972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
-      972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
-      972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
-      972,  972,  972,  972,  972,  973,  974,  952,  975,  976,
-
-      977,  820,  978,  964,  966,  979,  980,  971,  972,  972,
-      972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
-      972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
-      972,  972,  972,  972,  972,  972,  981,  982,  975,  983,
-      976,  984,  977,  985,  986,  979,  987,  980,  972,  972,
-      972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
-      972,  972,  972,  972,  988,  981,  989,  982,  990,  983,
-      991,  984,  992,  985,  993,  986,  987,  972,  972,  972,
-      972,  972,  972,  972,  972,  972,  972,  972,  972,  972,
-      994,  988,  989,  990,  991,  966,  992,  993,  972,  972,
-
-      972,  972,  972,  972,  972,  972,  994,  966,  972,  972,
-      972,  972,  972,  972,  972,  972,  972,  972,  972,    0,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820
+      933,  934,  935,  936,  821,  821,  821,  821,  937,  821,
+      821,  821,  821,  821,  938,  939,  940,  941,  942,  943,
+      944,  945,  946,  947,  948,  949,  948,  948,  948,  948,
+      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
+
+      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
+      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
+      948,  948,  948,  948,  948,  948,  948,  948,  948,  948,
+      948,  948,  948,  950,  821,  951,  952,  953,  954,  955,
+      956,  957,  958,  959,  960,  821,  961,  962,  963,  964,
+      821,  821,  821,  965,  966,  967,  968,  969,  970,  971,
+      972,  973,  973,  973,  973,  973,  973,  973,  973,  973,
+      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
+      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
+      973,  973,  973,  973,  973,  973,  974,  975,  953,  976,
+
+      977,  978,  821,  979,  965,  967,  980,  981,  972,  973,
+      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
+      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
+      973,  973,  973,  973,  973,  973,  973,  982,  983,  976,
+      984,  977,  985,  978,  986,  987,  980,  988,  981,  973,
+      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
+      973,  973,  973,  973,  973,  989,  982,  990,  983,  991,
+      984,  992,  985,  993,  986,  994,  987,  988,  973,  973,
+      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
+      973,  995,  989,  990,  991,  992,  967,  993,  994,  973,
+
+      973,  973,  973,  973,  973,  973,  973,  995,  967,  973,
+      973,  973,  973,  973,  973,  973,  973,  973,  973,  973,
+        0,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821
 
     } ;
 
-static yyconst flex_int16_t yy_nxt[3603] =
+static yyconst flex_int16_t yy_nxt[3605] =
     {   0,
        12,   13,   14,   15,   15,   15,   13,   16,   17,   12,
@@ -779,385 +780,385 @@
        71,   71,   71,   71,   71,   71,   71,   71,   71,   71,
        71,   71,   71,   70,   70,   70,   70,   75,   75,   78,
-       78,  122,  123,   89,   86,   78,   78,  603,   75,   75,
+       78,  122,  123,   89,   86,   78,   78,  604,   75,   75,
        79,   80,   81,   81,   81,   79,   81,   80,   82,   82,
 
-       82,   81,   90,   92,  157,  143,   86,   97,   94,   98,
+       82,   81,   90,   92,  158,  144,   86,   97,   94,   98,
        98,   98,   98,   98,   98,   86,   86,   93,   99,   84,
-       95,   96,   84,  100,  172,  117,   76,   76,   76,   76,
-      140,  144,   86,  101,  102,  141,  103,  103,  103,  103,
-      104,  104,  118,   86,  119,  120,  252,   86,  253,   86,
-      175,   86,  158,  105,  188,   86,  176,  106,  161,  159,
-      177,   86,  107,  108,  155,  160,  156,  162,  109,   86,
-      164,  163,  165,   86,  105,   86,  142,  199,  185,  173,
-      110,  166,  221,  239,  247,  140,  174,   86,  107,   86,
-      141,  108,  102,  186,  111,  111,  111,  111,  111,  111,
-
-      241,  182,   86,  200,  189,  237,  240,  248,  222,  183,
-      238,  105,  146,  147,  148,  112,  184,   86,  149,  150,
-      113,  151,   86,  152,  153,  294,  114,  167,   86,  178,
-      179,  154,  105,   86,  243,  168,  238,  169,  115,  180,
-      170,  252,  181,  253,  171,  187,  113,  124,  245,   86,
-      254,  125,  126,  246,  127,  820,  128,  129,  252,  130,
-      253,  131,  193,  194,  252,  260,  253,  193,  254,   86,
-      132,  133,  134,  190,   80,   81,   81,   81,  190,  246,
-      252,  191,  253,  195,  195,  195,  195,  195,  195,  249,
-      135,  261,  297,  136,  203,  203,  203,  203,   79,   80,
-
-       81,   81,   81,   79,   81,   80,   81,   81,   81,   81,
-       81,   80,   82,   82,   82,   81,  231,  231,  231,  231,
-      204,  137,  820,  102,  820,  104,  104,  104,  104,  104,
-      104,  234,  252,  234,  253,  238,  235,  235,  235,  235,
-      235,  235,  105,  820,  255,  252,  205,  253,  232,  206,
-      208,  820,  246,  237,  209,  210,  244,  233,  355,  211,
-      212,  238,  213,  105,  214,  252,   86,  253,  236,   86,
-      245,  820,  140,  215,  216,  217,   86,  141,  246,  820,
-      252,  256,  253,  252,  252,  253,  253,  268,   86,   86,
-       86,  266,   86,  218,   86,   86,  219,   86,  267,  270,
-
-       86,   86,   86,   86,   86,  271,  269,  274,  290,   86,
-      272,  287,   86,  285,  293,   86,  273,   86,  292,   86,
-       86,  291,  286,   86,  220,  224,  224,  224,  224,  224,
-      224,   86,   86,  288,  289,  299,  295,   86,  296,   86,
-      300,  298,  225,  226,   86,   86,  226,   86,   86,  301,
-       86,   86,  302,  308,  342,   86,  343,  227,   86,  304,
-      305,  307,  405,  225,  226,  312,  303,  306,   86,  226,
-       98,   98,   98,   98,   98,   98,   86,  319,  318,  309,
-       86,  315,   86,   86,   86,   86,  328,  225,  226,  310,
-      311,  226,   86,  313,   86,  514,  316,  317,  323,  320,
-
-      324,  342,  230,  343,   86,  325,   86,  380,  225,  226,
-      314,  275,  329,  276,  226,  277,  278,  321,  342,  279,
-      343,  280,  342,   86,  343,  322,  281,  282,  283,   86,
-      284,  190,   80,   81,   81,   81,  190,  193,  194,  191,
-      384,  343,  193,  193,  194,  342,  430,  343,  193,  326,
-      194,  342,  345,  343,  326,  342,  327,  343,  195,  195,
-      195,  195,  195,  195,  195,  195,  195,  195,  195,  195,
-      195,  195,  195,  195,  195,  195,  334,  334,  334,  334,
-      343,  344,  342,  342,  343,  343,  342,   86,  343,  358,
-      368,  351,  342,  351,  343,   86,  352,  352,  352,  352,
-
-      352,  352,  225,  226,  398,  252,  226,  253,  335,  224,
-      224,  224,  224,  224,  224,  358,  368,  104,  104,  104,
-      104,  104,  104,  225,  226,  370,  225,  226,  353,  226,
-      226,  252,   86,  253,  105,  235,  235,  235,  235,  235,
-      235,  227,  342,   86,  343,   86,   86,  225,  226,  244,
-      381,  371,  404,  226,   86,  105,  356,  356,  356,  356,
-      356,  356,  234,  382,  234,   86,  386,  235,  235,  235,
-      235,  235,  235,  361,  226,  408,  409,  226,  104,  104,
-      104,  104,  104,  104,  820,  388,   86,   86,  357,  111,
-      111,  111,  111,  111,  111,  226,  363,   86,  364,   86,
-
-      226,  365,  383,   86,  385,  392,   86,  366,  387,   86,
-      244,   86,  394,   86,   86,   86,  397,   86,   86,  367,
-       86,  249,   86,  364,  389,   86,  399,  365,   86,  513,
-      390,  391,  393,  395,  396,   86,  401,   86,  402,   86,
-      403,  400,  406,  407,  410,   86,  413,  412,   86,   86,
-       86,  411,   86,   86,   86,   86,   86,  417,  415,  418,
-      419,   86,   86,   86,  414,  416,   86,   86,   86,   86,
-       86,   86,  421,   86,  422,  423,  425,  420,  424,  426,
-      431,   86,   86,   86,   86,  427,   86,   86,  194,  429,
-       86,  428,  432,  436,  192,  439,  433,   86,   86,  438,
-
-      435,  437,  440,  434,  820,  441,  326,  194,  342,  489,
-      343,  326,   86,  327,  202,  202,  202,  202,  334,  334,
-      334,  334,  352,  352,  352,  352,  352,  352,  490,  462,
-      462,  462,  462,  462,  462,  351,  474,  351,   86,   86,
-      352,  352,  352,  352,  352,  352,  451,  226,  493,   86,
-      226,  224,  224,  224,  224,  224,  224,  492,   86,  475,
-      494,  463,  231,  231,  231,  231,  104,  104,  226,   86,
-       86,  466,  466,  226,  356,  356,  356,  356,  356,  356,
-      467,  468,  470,  354,  356,  356,  356,  356,  356,  356,
-      522,  496,  226,   86,  355,  226,  466,  466,  469,  361,
-
-      469,   86,  226,  470,   86,  226,  357,   86,  470,  499,
-      495,   86,   86,  226,  538,   86,  464,  820,  226,  491,
-      497,   86,  363,  226,  364,  498,   86,  365,  226,  470,
-      471,  820,  471,  366,   86,  472,  472,  472,  472,  472,
-      472,   86,   86,  500,   86,  367,  505,   86,  503,  364,
-      501,  502,   86,  365,  363,   86,  364,   86,  508,  365,
-      504,   86,  506,  511,   86,  476,   86,  473,  510,  507,
-       86,   86,   86,   86,   86,   86,  509,  367,   86,  512,
-      517,  364,  515,  521,  518,  365,   86,  520,  516,   86,
-      524,   86,   86,  519,   86,  523,   86,   86,   86,   86,
-
-      525,  526,   86,  528,   86,   86,  535,   86,  529,  527,
-       86,   86,  539,   86,   86,  530,   86,  531,  532,  533,
-      537,  541,  536,   86,  534,  544,   86,  194,  543,   86,
-      466,  542,  546,  547,  593,  540,  569,  594,  545,  202,
-      202,  202,  202,  462,  462,  462,  462,  462,  462,  462,
-      462,  462,  462,  462,  462,  466,   86,   86,   86,  466,
-      466,  226,  569,   86,  226,   86,   86,  226,  467,  568,
-      226,  587,  588,  586,   86,  463,   86,  595,  590,   86,
-       86,  564,  226,  589,  466,  466,  596,  226,  226,  592,
-       86,  601,   86,  226,  356,  356,  356,  356,  356,  356,
-
-      565,  591,  565,  602,  615,  566,  566,  566,  566,  566,
-      566,  472,  472,  472,  472,  472,  472,  570,  570,  570,
-      570,  570,  570,  471,   86,  471,  464,   86,  472,  472,
-      472,  472,  472,  472,   86,  571,   86,  567,  571,  600,
-       86,   86,   86,  597,   86,  599,   86,   86,  598,  572,
-      604,  608,   86,  607,   86,   86,  571,   86,   86,  606,
-       86,  571,  605,  609,   86,   86,  613,   86,   86,  611,
-      612,   86,  618,  610,   86,  614,   86,  619,   86,  616,
-      617,   86,  621,  620,  622,   86,  624,   86,   86,   86,
-       86,  625,  626,  623,   86,   86,   86,   86,  629,   86,
-
-      628,  820,  671,  663,  630,  808,  664,  631,  632,  627,
-      462,  462,  462,  462,  462,  462,  566,  566,  566,  566,
-      566,  566,  650,  650,  650,  650,  650,  650,  565,   86,
-      565,   86,   86,  566,  566,  566,  566,  566,  566,   86,
-      571,   86,  564,  571,  570,  570,  570,  570,  570,  570,
-       86,  674,  665,  676,  651,  667,  820,  668,  666,   86,
-      820,  571,  571,   86,  661,  571,  571,   86,  570,  570,
-      570,  570,  570,  570,   86,  669,  572,  662,   86,   86,
-      670,   86,   86,  571,  677,   86,  571,  672,  571,  571,
-      679,   86,   86,  673,   86,   86,  675,   86,   86,  678,
-
-      652,  682,   86,   86,   86,  681,  680,  571,   86,   86,
-       86,   86,  571,  683,   86,   86,  684,   86,  691,  685,
-      693,  686,  692,  688,  687,  690,   86,   86,   86,  695,
-       86,  689,  709,  713,  820,  694,  650,  650,  650,  650,
-      650,  650,  650,  650,  650,  650,  650,  650,   86,   86,
-      714,   86,   86,  711,  571,  715,  712,  571,  710,   86,
-      571,   86,  716,  571,   86,   86,  722,  718,  651,  717,
-       86,  725,   86,  719,  702,  571,   86,  820,  727,  720,
-      571,  571,   86,  730,   86,  723,  571,  570,  570,  570,
-      570,  570,  570,  721,   86,   86,   86,   86,   86,   86,
-
-      726,   86,   86,   86,  724,   86,  728,  732,   86,  729,
-      731,   86,   86,  735,   86,   86,   86,  736,   86,  652,
-      751,   86,  733,  807,  753,  734,  650,  650,  650,  650,
-      650,  650,  749,  750,  754,   86,  752,   86,  756,  758,
-       86,   86,   86,  759,  755,  760,   86,   86,  761,  762,
-      757,   86,   86,   86,  763,   86,   86,   86,  702,  781,
-       86,   86,  764,  785,  783,   86,   86,   86,  786,   86,
-       86,   86,  788,  780,  779,  784,   86,   86,  800,  778,
-      789,   86,  782,   86,  801,  790,   86,   86,   86,  787,
-      803,  799,  802,   86,   86,   86,  805,  806,   86,   86,
-
-       86,  811,  812,  804,  809,  810,   86,   86,   86,  813,
-      814,   86,   86,   86,   86,  817,  818,   86,   86,   86,
-       86,   86,  820,  820,  798,  820,  816,  797,  815,  820,
-      795,  820,  794,  820,  793,  820,  819,   68,   68,   68,
+       95,   96,   84,  100,  173,  117,   76,   76,   76,   76,
+      141,  145,   86,  101,  102,  142,  103,  103,  103,  103,
+      104,  104,  118,   86,  119,  120,  253,   86,  254,   86,
+      176,   86,  159,  105,  189,   86,  177,  106,  162,  160,
+      178,   86,  107,  108,  156,  161,  157,  163,  109,   86,
+      165,  164,  166,   86,  105,   86,  143,  200,  186,  174,
+      110,  167,  222,  240,  248,  141,  175,   86,  107,   86,
+      142,  108,  102,  187,  111,  111,  111,  111,  111,  111,
+
+      242,  183,   86,  201,  190,  238,  241,  249,  223,  184,
+      239,  105,  147,  148,  149,  112,  185,   86,  150,  151,
+      113,  152,   86,  153,  154,  295,  114,  168,   86,  179,
+      180,  155,  105,   86,  244,  169,  239,  170,  115,  181,
+      171,  253,  182,  254,  172,  188,  113,  124,  246,   86,
+      255,  125,  126,  247,  127,  821,  128,  129,  253,  130,
+      254,  131,  194,  195,  253,  261,  254,  194,  255,  303,
+      132,  133,  134,  191,   80,   81,   81,   81,  191,  247,
+      253,  192,  254,  196,  196,  196,  196,  196,  196,  250,
+      135,  262,  253,  136,  254,   86,  204,  204,  204,  204,
+
+       79,   80,   81,   81,   81,   79,   81,   80,   81,   81,
+       81,   81,   81,   80,   82,   82,   82,   81,  298,   86,
+      137,  138,  205,  232,  232,  232,  232,   86,  239,  256,
+      253,  253,  254,  254,  102,  272,  104,  104,  104,  104,
+      104,  104,  253,  257,  254,  269,  238,  247,  206,   86,
+      821,  207,  209,  105,  239,  233,  210,  211,  253,  294,
+      254,  212,  213,  821,  214,  246,  215,  253,  234,  254,
+       86,   86,   86,  247,  105,  216,  217,  218,  821,  235,
+      271,  235,   86,   86,  236,  236,  236,  236,  236,  236,
+       86,  141,  821,   86,  274,  219,  142,  245,  220,   86,
+
+      270,  273,   86,   86,   86,  267,   86,   86,  291,  286,
+       86,  275,  268,  288,   86,   86,  237,   86,   86,   86,
+      821,  292,  300,  293,  287,   86,  221,  225,  225,  225,
+      225,  225,  225,  302,   86,  289,  290,  296,  297,   86,
+      299,   86,  301,   86,  226,  227,  304,   86,  227,   86,
+       86,   86,  309,   86,  596,  316,  306,   86,   86,  228,
+      308,  305,  329,  307,  314,  226,  227,  313,  310,   86,
+      317,  227,   98,   98,   98,   98,   98,   98,  311,  312,
+       86,  315,  318,   86,   86,  320,   86,   86,  330,  226,
+      227,  821,   86,  227,   86,   86,  343,  322,  344,  324,
+
+      319,  325,  321,  384,  231,  323,   86,  326,   86,  385,
+      226,  227,  343,  276,  344,  277,  227,  278,  279,  359,
+      343,  280,  344,  281,  382,  356,  194,  195,  282,  283,
+      284,  194,  285,  191,   80,   81,   81,   81,  191,  194,
+      195,  192,  369,  344,  194,  359,   86,  196,  196,  196,
+      196,  196,  196,  335,  335,  335,  335,  343,  344,  344,
+      196,  196,  196,  196,  196,  196,  327,  195,  369,   86,
+      343,  327,  344,  328,  343,  412,  344,  345,  343,  343,
+      344,  344,  343,  346,  344,  336,   86,  196,  196,  196,
+      196,  196,  196,  343,  343,  344,  344,  225,  225,  225,
+
+      225,  225,  225,  352,  253,  352,  254,  371,  353,  353,
+      353,  353,  353,  353,  226,  227,  226,  227,  227,  253,
+      227,  254,  104,  104,  104,  104,  104,  104,  195,  228,
+      821,  821,   86,  372,  193,  226,  227,  226,  227,  105,
+      354,  227,   86,  227,  236,  236,  236,  236,  236,  236,
+      383,   86,   86,   86,  245,  381,  386,  388,  362,   86,
+      105,  357,  357,  357,  357,  357,  357,  235,   86,  235,
+       86,  393,  236,  236,  236,  236,  236,  236,   86,  227,
+       86,  364,  227,  365,   86,  394,  366,   86,  387,  398,
+      389,  400,  367,  358,  104,  104,  104,  104,  104,  104,
+
+      227,   86,  395,   86,  368,  227,   86,  401,  365,   86,
+      399,   86,  366,  111,  111,  111,  111,  111,  111,  396,
+      397,  390,   86,   86,   86,   86,  245,  391,  392,  402,
+      404,  406,  405,   86,   86,   86,   86,   86,   86,   86,
+      403,  411,   86,   86,   86,  250,  414,   86,  418,   86,
+       86,  416,  408,  407,  415,  419,  409,  410,  413,  417,
+       86,   86,   86,   86,   86,  420,  422,  423,   86,   86,
+       86,   86,   86,  425,  424,   86,   86,  427,  426,   86,
+       86,  432,  421,   86,   86,   86,   86,  431,  475,   86,
+      428,  430,  429,  437,  440,   86,  439,  433,  436,  434,
+
+      441,  435,   86,  438,  442,  327,  195,  343,  509,  344,
+      327,  476,  328,  203,  203,  203,  203,  335,  335,  335,
+      335,  343,   86,  344,  353,  353,  353,  353,  353,  353,
+      463,  463,  463,  463,  463,  463,  225,  225,  225,  225,
+      225,  225,   86,  510,   86,  452,  471,  352,  227,  352,
+       86,  227,  353,  353,  353,  353,  353,  353,  491,  492,
+       86,  490,  464,   86,  470,  470,  672,   86,  355,  227,
+      471,  495,  471,   86,  227,  232,  232,  232,  232,  104,
+      104,  357,  357,  357,  357,  357,  357,  357,  357,  357,
+      357,  357,  357,  362,  516,   86,  471,  467,  821,  227,
+
+       86,   86,  227,  467,   86,  227,  468,  356,  227,  494,
+      496,   86,  469,  358,  493,   86,  364,  499,  365,  465,
+      227,  366,  467,   86,  498,  227,  227,  367,  467,   86,
+       86,  227,  821,  497,   86,  506,  821,  809,  821,  368,
+       86,  505,   86,  365,  472,  500,  472,  366,   86,  473,
+      473,  473,  473,  473,  473,  364,  501,  365,  502,  503,
+      366,   86,  504,  507,   86,   86,  477,   86,   86,   86,
+      508,   86,  511,   86,   86,   86,   86,   86,  368,  515,
+      513,  474,  365,  512,  518,  514,  366,   86,  519,  521,
+      517,   86,  520,  523,   86,   86,  522,   86,  524,  526,
+
+       86,   86,   86,   86,   86,   86,  525,   86,   86,  527,
+      529,   86,   86,   86,  530,  528,  536,   86,   86,  539,
+      540,  538,  533,  531,  532,  534,  535,   86,   86,  537,
+       86,  195,   86,   86,   86,  542,  821,  548,  570,  545,
+      546,  547,  541,  600,  595,  543,  467,  544,  203,  203,
+      203,  203,  463,  463,  463,  463,  463,  463,  463,  463,
+      463,  463,  463,  463,  570,   86,   86,   86,  467,  467,
+      227,  467,   86,  227,   86,   86,  227,  468,  569,  227,
+      588,  589,  587,  821,  464,   86,  602,  591,   86,   86,
+      565,  227,  590,  467,  467,   86,  227,  227,  593,   86,
+
+      594,  616,  227,  357,  357,  357,  357,  357,  357,  566,
+      592,  566,  603,   86,  567,  567,  567,  567,  567,  567,
+      473,  473,  473,  473,  473,  473,  571,  571,  571,  571,
+      571,  571,  472,  597,  472,  465,   86,  473,  473,  473,
+      473,  473,  473,   86,  572,   86,  568,  572,   86,   86,
+      601,   86,   86,   86,   86,  598,   86,  605,  573,  609,
+       86,  608,  610,   86,  599,  572,   86,   86,  607,   86,
+      572,  606,   86,   86,  619,  614,   86,  612,  613,   86,
+       86,   86,  611,   86,  615,  620,   86,  617,  618,  621,
+       86,   86,   86,   86,  623,   86,  626,   86,  625,  627,
+
+      624,  622,   86,   86,  630,  629,   86,  631,   86,   86,
+       86,  821,  808,  628,  670,  664,  633,  669,  665,  632,
+      463,  463,  463,  463,  463,  463,  567,  567,  567,  567,
+      567,  567,  651,  651,  651,  651,  651,  651,  566,   86,
+      566,   86,   86,  567,  567,  567,  567,  567,  567,   86,
+      572,   86,  565,  572,  571,  571,  571,  571,  571,  571,
+       86,  675,  666,  677,  652,  668,   86,  680,  667,   86,
+       86,  572,  572,   86,  662,  572,  572,  671,  571,  571,
+      571,  571,  571,  571,   86,  674,  573,  663,   86,   86,
+      676,  678,   86,  572,   86,   86,  572,  673,  572,  572,
+
+       86,   86,   86,   86,   86,   86,  679,  681,   86,  683,
+      653,   86,   86,   86,   86,  682,   86,  572,   86,  684,
+      693,   86,  572,  692,  685,  686,  694,  687,   86,  691,
+      688,  689,  690,  696,   86,   86,   86,  695,  651,  651,
+      651,  651,  651,  651,  651,  651,  651,  651,  651,  651,
+       86,   86,   86,   86,  718,  710,  572,  714,  713,  572,
+      711,  712,  572,   86,   86,  572,  716,  717,   86,   86,
+      652,  723,   86,  715,  719,  721,  703,  572,  720,   86,
+      726,   86,  572,  572,  724,   86,   86,   86,  572,  571,
+      571,  571,  571,  571,  571,  725,   86,  730,   86,   86,
+
+      722,  727,   86,   86,   86,   86,   86,   86,  733,  728,
+      729,   86,   86,  732,   86,   86,  731,   86,   86,  736,
+      752,  653,   86,  737,   86,   86,  734,  753,  754,  735,
+      651,  651,  651,  651,  651,  651,   86,  750,   86,  751,
+      759,  757,   86,   86,   86,  760,  761,  755,   86,  758,
+       86,  756,   86,  763,   86,  762,   86,  764,   86,  765,
+       86,   86,  703,  782,   86,   86,  786,   86,  784,   86,
+       86,   86,  787,   86,  789,   86,  781,  780,  790,  779,
+       86,   86,  785,  783,   86,   86,   86,  802,  801,  791,
+       86,   86,  788,  804,  800,  803,   86,   86,   86,  806,
+
+      807,   86,  805,   86,   86,   86,  811,  810,  812,   86,
+       86,   86,  813,  814,  815,   86,   86,   86,  818,  817,
+      819,   86,   86,  816,   86,  821,  821,  799,  821,  798,
+      821,  796,  821,  795,  821,  794,  821,  793,  820,   68,
        68,   68,   68,   68,   68,   68,   68,   68,   68,   68,
-       68,   68,   68,   68,   74,   74,   74,   74,   74,   74,
+       68,   68,   68,   68,   68,   68,   74,   74,   74,   74,
        74,   74,   74,   74,   74,   74,   74,   74,   74,   74,
-       74,   77,   77,   77,   77,   77,   77,   77,   77,   77,
-       77,   77,   77,   77,   77,   77,   77,   77,   85,  792,
-       86,   85,   85,   86,   85,   85,   85,   85,   85,   85,
-
-       85,   85,  138,   86,  820,  777,  820,  776,  138,  138,
-      138,  138,  138,  138,  138,  138,  192,  192,  192,  192,
-      192,  192,  192,  192,  192,  192,  192,  192,  192,  192,
-      192,  192,  192,  197,  774,  820,  197,  197,  772,  197,
-      197,  197,  197,  197,  197,  197,  197,  201,  820,  201,
-      201,  770,  201,  201,  201,  201,  201,  201,  201,  201,
-      820,  201,  201,  201,  202,  768,  202,  766,  202,   86,
-      202,   86,   86,   86,  202,  202,   86,  202,  202,  207,
-       86,   86,  207,  207,  207,  207,  207,  207,  207,  207,
-      207,  207,   86,  207,  207,  207,  228,  228,  228,  228,
-
-      228,  228,  228,  228,  228,  228,  228,  228,  228,  228,
-      228,  228,  228,  242,  242,  242,   86,  242,   86,   86,
-       86,  820,  242,  242,  258,  748,  746,  258,  258,  820,
-      258,  258,  258,  258,  258,  258,  258,  258,  262,  262,
-      820,  262,  743,  741,  739,  820,  262,  262,  264,  264,
-       86,  264,   86,   86,   86,   86,  264,  264,  330,  330,
-       86,  330,   86,  708,  705,  704,  330,  330,  332,  332,
-      198,  332,  698,  697,  634,   86,  332,  332,  336,  336,
-       86,  336,   86,   86,   86,   86,  336,  336,  338,  338,
-       86,  338,   86,   86,   86,   86,  338,  338,  340,  340,
-
-       86,  340,   86,   86,  659,  658,  340,  340,  347,  347,
-      656,  347,  654,  568,  649,  648,  347,  347,  349,  349,
-      646,  349,  644,  642,  640,  638,  349,  349,  228,  228,
-      228,  228,  228,  228,  228,  228,  228,  228,  228,  228,
-      228,  228,  228,  228,  228,  360,  360,  636,  360,  634,
-       86,   86,   86,   86,  360,  362,  362,  362,   86,  362,
-      362,  362,  362,   86,  362,  362,  242,  242,  242,   86,
-      242,   86,   86,   86,   86,  585,  242,  372,  372,  583,
-      372,  581,  579,  577,  575,  372,  372,  374,  374,  476,
-      374,  573,  573,  563,  561,  374,  374,  376,  376,  457,
-
-      376,  457,  559,  557,  555,  376,  376,  262,  262,  553,
-      262,  551,  549,   86,   86,   86,  262,  378,  378,   86,
-      378,   86,   86,   86,   86,  378,  378,  264,  264,  488,
-      264,  486,  484,  482,  480,  478,  264,   85,  461,  459,
-       85,   85,  343,   85,   85,   85,   85,   85,   85,   85,
-       85,  192,  192,  192,  192,  192,  192,  192,  192,  192,
-      192,  192,  192,  192,  192,  192,  192,  192,  442,  442,
-      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
-      442,  442,  442,  442,  442,  443,  443,  343,  443,  457,
-      455,  453,  450,  443,  443,  445,  445,  448,  445,  446,
-
-      444,   86,   86,  445,  445,  447,  447,   86,  447,  379,
-      377,  375,  373,  447,  447,  330,  330,  259,  330,  254,
-      253,  369,  369,  241,  330,  449,  449,  359,  449,  359,
-      229,  354,  350,  449,  449,  332,  332,  348,  332,  346,
-      342,  341,  339,  337,  332,  452,  452,  333,  452,  331,
-      198,  194,   86,  452,  452,  336,  336,  265,  336,  263,
-      259,  257,  254,  252,  336,  454,  454,  251,  454,  250,
-      229,  223,   84,  454,  454,  338,  338,   84,  338,   86,
-      198,  196,   84,  145,  338,  456,  456,  139,  456,  121,
-      116,   86,  820,  456,  456,  340,  340,   69,  340,   69,
-
-      820,  820,  820,  820,  340,  458,  458,  820,  458,  820,
-      820,  820,  820,  458,  458,  347,  347,  820,  347,  820,
-      820,  820,  820,  820,  347,  460,  460,  820,  460,  820,
-      820,  820,  820,  460,  460,  349,  349,  820,  349,  820,
-      820,  820,  820,  820,  349,  465,  465,  820,  465,  820,
-      465,  820,  820,  465,  465,  360,  360,  820,  360,  820,
-      360,  820,  820,  360,  360,  362,  362,  362,  820,  362,
-      362,  362,  362,  820,  362,  362,  477,  477,  820,  477,
-      820,  820,  820,  820,  477,  477,  479,  479,  820,  479,
-      820,  820,  820,  820,  479,  479,  481,  481,  820,  481,
-
-      820,  820,  820,  820,  481,  481,  372,  372,  820,  372,
-      820,  820,  820,  820,  820,  372,  483,  483,  820,  483,
-      820,  820,  820,  820,  483,  483,  374,  374,  820,  374,
-      820,  820,  820,  820,  820,  374,  485,  485,  820,  485,
-      820,  820,  820,  820,  485,  485,  376,  376,  820,  376,
-      820,  820,  820,  820,  820,  376,  487,  487,  820,  487,
-      820,  820,  820,  820,  487,  487,  378,  378,  820,  378,
-      820,  820,  820,  820,  820,  378,   85,  820,  820,   85,
-       85,  820,   85,   85,   85,   85,   85,   85,   85,   85,
-      442,  442,  442,  442,  442,  442,  442,  442,  442,  442,
-
-      442,  442,  442,  442,  442,  442,  442,  548,  548,  820,
-      548,  820,  820,  820,  820,  548,  548,  443,  443,  820,
-      443,  820,  820,  820,  820,  820,  443,  550,  550,  820,
-      550,  820,  820,  820,  820,  550,  550,  445,  445,  820,
-      445,  820,  820,  820,  820,  820,  445,  552,  552,  820,
-      552,  820,  820,  820,  820,  552,  552,  447,  447,  820,
-      447,  820,  820,  820,  820,  820,  447,  554,  554,  820,
-      554,  820,  820,  820,  820,  554,  554,  449,  449,  820,
-      449,  820,  820,  820,  820,  820,  449,  556,  556,  820,
-      556,  820,  820,  820,  820,  556,  556,  452,  452,  820,
-
-      452,  820,  820,  820,  820,  820,  452,  558,  558,  820,
-      558,  820,  820,  820,  820,  558,  558,  454,  454,  820,
-      454,  820,  820,  820,  820,  820,  454,  456,  456,  820,
-      456,  820,  820,  820,  820,  456,  456,  560,  560,  820,
-      560,  820,  820,  820,  820,  560,  560,  458,  458,  820,
-      458,  820,  820,  820,  820,  820,  458,  562,  562,  820,
-      562,  820,  820,  820,  820,  562,  562,  460,  460,  820,
-      460,  820,  820,  820,  820,  820,  460,  465,  465,  820,
-      465,  820,  465,  820,  820,  465,  465,  362,  362,  820,
-      362,  820,  820,  820,  820,  362,  362,  574,  574,  820,
-
-      574,  820,  820,  820,  820,  574,  574,  477,  477,  820,
-      477,  820,  820,  820,  820,  820,  477,  576,  576,  820,
-      576,  820,  820,  820,  820,  576,  576,  479,  479,  820,
-      479,  820,  820,  820,  820,  820,  479,  578,  578,  820,
-      578,  820,  820,  820,  820,  578,  578,  481,  481,  820,
-      481,  820,  820,  820,  820,  820,  481,  580,  580,  820,
-      580,  820,  820,  820,  820,  580,  580,  483,  483,  820,
-      483,  820,  820,  820,  820,  820,  483,  582,  582,  820,
-      582,  820,  820,  820,  820,  582,  582,  485,  485,  820,
-      485,  820,  820,  820,  820,  820,  485,  584,  584,  820,
-
-      584,  820,  820,  820,  820,  584,  584,  487,  487,  820,
-      487,  820,  820,  820,  820,  820,  487,   85,  820,  820,
-       85,   85,  820,   85,   85,   85,   85,   85,   85,   85,
-       85,  633,  633,  633,  633,  633,  633,  633,  633,  633,
-      633,  633,  633,  633,  633,  633,  633,  633,  635,  635,
-      820,  635,  820,  820,  820,  820,  635,  635,  548,  548,
-      820,  548,  820,  820,  820,  820,  820,  548,  637,  637,
-      820,  637,  820,  820,  820,  820,  637,  637,  550,  550,
-      820,  550,  820,  820,  820,  820,  820,  550,  639,  639,
-      820,  639,  820,  820,  820,  820,  639,  639,  552,  552,
-
-      820,  552,  820,  820,  820,  820,  820,  552,  641,  641,
-      820,  641,  820,  820,  820,  820,  641,  641,  554,  554,
-      820,  554,  820,  820,  820,  820,  820,  554,  643,  643,
-      820,  643,  820,  820,  820,  820,  643,  643,  556,  556,
-      820,  556,  820,  820,  820,  820,  820,  556,  645,  645,
-      820,  645,  820,  820,  820,  820,  645,  645,  558,  558,
-      820,  558,  820,  820,  820,  820,  820,  558,  647,  647,
-      820,  647,  820,  820,  820,  820,  647,  647,  560,  560,
-      820,  560,  820,  820,  820,  820,  820,  560,   85,   85,
-      820,   85,  820,  820,  820,  820,   85,   85,  562,  562,
-
-      820,  562,  820,  820,  820,  820,  820,  562,  465,  465,
-      820,  465,  820,  820,  820,  820,  465,  465,  653,  653,
-      820,  653,  820,  820,  820,  820,  653,  653,  574,  574,
-      820,  574,  820,  820,  820,  820,  820,  574,  655,  655,
-      820,  655,  820,  820,  820,  820,  655,  655,  576,  576,
-      820,  576,  820,  820,  820,  820,  820,  576,  657,  657,
-      820,  657,  820,  820,  820,  820,  657,  657,  578,  578,
-      820,  578,  820,  820,  820,  820,  820,  578,  138,  138,
-      820,  138,  820,  820,  820,  820,  138,  138,  580,  580,
-      820,  580,  820,  820,  820,  820,  820,  580,  660,  660,
-
-      820,  660,  820,  820,  820,  820,  820,  660,  582,  582,
-      820,  582,  820,  820,  820,  820,  820,  582,   85,  820,
-      820,   85,   85,  820,   85,   85,   85,   85,   85,   85,
-       85,   85,  584,  584,  820,  584,  820,  820,  820,  820,
-      820,  584,  633,  633,  633,  633,  633,  633,  633,  633,
-      633,  633,  633,  633,  633,  633,  633,  633,  633,  696,
-      696,  820,  696,  820,  820,  820,  820,  696,  696,  635,
-      635,  820,  635,  820,  820,  820,  820,  820,  635,  197,
-      197,  820,  197,  820,  820,  820,  820,  197,  197,  637,
-      637,  820,  637,  820,  820,  820,  820,  820,  637,  699,
-
-      699,  820,  699,  820,  820,  820,  820,  820,  699,  639,
-      639,  820,  639,  820,  820,  820,  820,  820,  639,  197,
-      820,  820,  197,  197,  820,  197,  197,  197,  197,  197,
-      197,  197,  197,  641,  641,  820,  641,  820,  820,  820,
-      820,  820,  641,  700,  700,  820,  700,  820,  820,  820,
-      820,  820,  700,  643,  643,  820,  643,  820,  820,  820,
-      820,  820,  643,  645,  645,  820,  645,  820,  820,  820,
-      820,  820,  645,  701,  701,  820,  701,  820,  820,  820,
-      820,  820,  701,  647,  647,  820,  647,  820,  820,  820,
-      820,  820,  647,   85,   85,  820,   85,  820,  820,  820,
-
-      820,  820,   85,  703,  703,  820,  703,  820,  820,  820,
-      820,  703,  703,  653,  653,  820,  653,  820,  820,  820,
-      820,  820,  653,  258,  258,  820,  258,  820,  820,  820,
-      820,  258,  258,  655,  655,  820,  655,  820,  820,  820,
-      820,  820,  655,  706,  706,  820,  706,  820,  820,  820,
-      820,  820,  706,  657,  657,  820,  657,  820,  820,  820,
-      820,  820,  657,  138,  138,  820,  138,  820,  820,  820,
-      820,  820,  138,  707,  707,  820,  707,  820,  820,  820,
-      820,  707,  707,   85,  820,  820,   85,   85,  820,   85,
-       85,   85,   85,   85,   85,   85,   85,  737,  737,  820,
-
-      737,  820,  820,  820,  820,  820,  737,  696,  696,  820,
-      696,  820,  820,  820,  820,  820,  696,  738,  738,  820,
-      738,  820,  820,  820,  820,  738,  738,  740,  740,  820,
-      740,  820,  820,  820,  820,  740,  740,  742,  742,  820,
-      742,  820,  820,  820,  820,  742,  742,  744,  744,  820,
-      744,  820,  820,  820,  820,  820,  744,  745,  745,  820,
-      745,  820,  820,  820,  820,  745,  745,  747,  747,  820,
-      747,  820,  820,  820,  820,  747,  747,  765,  765,  820,
-      765,  820,  820,  820,  820,  765,  765,  767,  767,  820,
-      767,  820,  820,  820,  820,  767,  767,  769,  769,  820,
-
-      769,  820,  820,  820,  820,  769,  769,  771,  771,  820,
-      771,  820,  820,  820,  820,  771,  771,  773,  773,  820,
-      773,  820,  820,  820,  820,  773,  773,  775,  775,  820,
-      775,  820,  820,  820,  820,  775,  775,  584,  584,  820,
-      584,  820,  820,  820,  820,  584,  584,  791,  791,  820,
-      791,  820,  820,  820,  820,  791,  791,  641,  641,  820,
-      641,  820,  820,  820,  820,  641,  641,  645,  645,  820,
-      645,  820,  820,  820,  820,  645,  645,   85,   85,  820,
-       85,  820,  820,  820,  820,   85,   85,  796,  796,  820,
-      796,  820,  820,  820,  820,  796,  796,  138,  138,  820,
-
-      138,  820,  820,  820,  820,  138,  138,  197,  197,  820,
-      197,  820,  820,  820,  820,  197,  197,   11,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-
-      820,  820
+       74,   74,   74,   77,   77,   77,   77,   77,   77,   77,
+       77,   77,   77,   77,   77,   77,   77,   77,   77,   77,
+       85,   86,   86,   85,   85,   86,   85,   85,   85,   85,
+
+       85,   85,   85,   85,  139,  821,  778,  821,  777,  775,
+      139,  139,  139,  139,  139,  139,  139,  139,  193,  193,
+      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
+      193,  193,  193,  193,  193,  198,  821,  773,  198,  198,
+      821,  198,  198,  198,  198,  198,  198,  198,  198,  202,
+      771,  202,  202,  821,  202,  202,  202,  202,  202,  202,
+      202,  202,  769,  202,  202,  202,  203,  767,  203,   86,
+      203,   86,  203,   86,   86,   86,  203,  203,   86,  203,
+      203,  208,   86,   86,  208,  208,  208,  208,  208,  208,
+      208,  208,  208,  208,   86,  208,  208,  208,  229,  229,
+
+      229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
+      229,  229,  229,  229,  229,  243,  243,  243,   86,  243,
+       86,   86,  821,  749,  243,  243,  259,  747,  821,  259,
+      259,  821,  259,  259,  259,  259,  259,  259,  259,  259,
+      263,  263,  744,  263,  742,  740,  821,   86,  263,  263,
+      265,  265,   86,  265,   86,   86,   86,   86,  265,  265,
+      331,  331,   86,  331,  709,  706,  705,  199,  331,  331,
+      333,  333,  699,  333,  698,  635,   86,   86,  333,  333,
+      337,  337,   86,  337,   86,   86,   86,   86,  337,  337,
+      339,  339,   86,  339,   86,   86,   86,   86,  339,  339,
+
+      341,  341,   86,  341,   86,  660,  659,  657,  341,  341,
+      348,  348,  655,  348,  569,  650,  649,  647,  348,  348,
+      350,  350,  645,  350,  643,  641,  639,  637,  350,  350,
+      229,  229,  229,  229,  229,  229,  229,  229,  229,  229,
+      229,  229,  229,  229,  229,  229,  229,  361,  361,  635,
+      361,   86,   86,   86,   86,   86,  361,  363,  363,  363,
+       86,  363,  363,  363,  363,   86,  363,  363,  243,  243,
+      243,   86,  243,   86,   86,   86,  586,  584,  243,  373,
+      373,  582,  373,  580,  578,  576,  477,  373,  373,  375,
+      375,  574,  375,  574,  564,  562,  458,  375,  375,  377,
+
+      377,  458,  377,  560,  558,  556,  554,  377,  377,  263,
+      263,  552,  263,  550,   86,   86,   86,   86,  263,  379,
+      379,   86,  379,   86,   86,   86,  489,  379,  379,  265,
+      265,  487,  265,  485,  483,  481,  479,  462,  265,   85,
+      460,  344,   85,   85,  344,   85,   85,   85,   85,   85,
+       85,   85,   85,  193,  193,  193,  193,  193,  193,  193,
+      193,  193,  193,  193,  193,  193,  193,  193,  193,  193,
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  443,
+      443,  443,  443,  443,  443,  443,  443,  444,  444,  458,
+      444,  456,  454,  451,  449,  444,  444,  446,  446,  447,
+
+      446,  445,   86,   86,   86,  446,  446,  448,  448,  380,
+      448,  378,  376,  374,  260,  448,  448,  331,  331,  255,
+      331,  254,  370,  370,  242,  360,  331,  450,  450,  360,
+      450,  230,  355,  351,  349,  450,  450,  333,  333,  347,
+      333,  343,  342,  340,  338,  334,  333,  453,  453,  332,
+      453,  199,  195,   86,  266,  453,  453,  337,  337,  264,
+      337,  260,  255,  258,  255,  253,  337,  455,  455,  252,
+      455,  251,  230,  224,   84,  455,  455,  339,  339,   84,
+      339,   86,  199,  197,   84,  146,  339,  457,  457,  140,
+      457,  121,  116,   86,  821,  457,  457,  341,  341,   69,
+
+      341,   69,  821,  821,  821,  821,  341,  459,  459,  821,
+      459,  821,  821,  821,  821,  459,  459,  348,  348,  821,
+      348,  821,  821,  821,  821,  821,  348,  461,  461,  821,
+      461,  821,  821,  821,  821,  461,  461,  350,  350,  821,
+      350,  821,  821,  821,  821,  821,  350,  466,  466,  821,
+      466,  821,  466,  821,  821,  466,  466,  361,  361,  821,
+      361,  821,  361,  821,  821,  361,  361,  363,  363,  363,
+      821,  363,  363,  363,  363,  821,  363,  363,  478,  478,
+      821,  478,  821,  821,  821,  821,  478,  478,  480,  480,
+      821,  480,  821,  821,  821,  821,  480,  480,  482,  482,
+
+      821,  482,  821,  821,  821,  821,  482,  482,  373,  373,
+      821,  373,  821,  821,  821,  821,  821,  373,  484,  484,
+      821,  484,  821,  821,  821,  821,  484,  484,  375,  375,
+      821,  375,  821,  821,  821,  821,  821,  375,  486,  486,
+      821,  486,  821,  821,  821,  821,  486,  486,  377,  377,
+      821,  377,  821,  821,  821,  821,  821,  377,  488,  488,
+      821,  488,  821,  821,  821,  821,  488,  488,  379,  379,
+      821,  379,  821,  821,  821,  821,  821,  379,   85,  821,
+      821,   85,   85,  821,   85,   85,   85,   85,   85,   85,
+       85,   85,  443,  443,  443,  443,  443,  443,  443,  443,
+
+      443,  443,  443,  443,  443,  443,  443,  443,  443,  549,
+      549,  821,  549,  821,  821,  821,  821,  549,  549,  444,
+      444,  821,  444,  821,  821,  821,  821,  821,  444,  551,
+      551,  821,  551,  821,  821,  821,  821,  551,  551,  446,
+      446,  821,  446,  821,  821,  821,  821,  821,  446,  553,
+      553,  821,  553,  821,  821,  821,  821,  553,  553,  448,
+      448,  821,  448,  821,  821,  821,  821,  821,  448,  555,
+      555,  821,  555,  821,  821,  821,  821,  555,  555,  450,
+      450,  821,  450,  821,  821,  821,  821,  821,  450,  557,
+      557,  821,  557,  821,  821,  821,  821,  557,  557,  453,
+
+      453,  821,  453,  821,  821,  821,  821,  821,  453,  559,
+      559,  821,  559,  821,  821,  821,  821,  559,  559,  455,
+      455,  821,  455,  821,  821,  821,  821,  821,  455,  457,
+      457,  821,  457,  821,  821,  821,  821,  457,  457,  561,
+      561,  821,  561,  821,  821,  821,  821,  561,  561,  459,
+      459,  821,  459,  821,  821,  821,  821,  821,  459,  563,
+      563,  821,  563,  821,  821,  821,  821,  563,  563,  461,
+      461,  821,  461,  821,  821,  821,  821,  821,  461,  466,
+      466,  821,  466,  821,  466,  821,  821,  466,  466,  363,
+      363,  821,  363,  821,  821,  821,  821,  363,  363,  575,
+
+      575,  821,  575,  821,  821,  821,  821,  575,  575,  478,
+      478,  821,  478,  821,  821,  821,  821,  821,  478,  577,
+      577,  821,  577,  821,  821,  821,  821,  577,  577,  480,
+      480,  821,  480,  821,  821,  821,  821,  821,  480,  579,
+      579,  821,  579,  821,  821,  821,  821,  579,  579,  482,
+      482,  821,  482,  821,  821,  821,  821,  821,  482,  581,
+      581,  821,  581,  821,  821,  821,  821,  581,  581,  484,
+      484,  821,  484,  821,  821,  821,  821,  821,  484,  583,
+      583,  821,  583,  821,  821,  821,  821,  583,  583,  486,
+      486,  821,  486,  821,  821,  821,  821,  821,  486,  585,
+
+      585,  821,  585,  821,  821,  821,  821,  585,  585,  488,
+      488,  821,  488,  821,  821,  821,  821,  821,  488,   85,
+      821,  821,   85,   85,  821,   85,   85,   85,   85,   85,
+       85,   85,   85,  634,  634,  634,  634,  634,  634,  634,
+      634,  634,  634,  634,  634,  634,  634,  634,  634,  634,
+      636,  636,  821,  636,  821,  821,  821,  821,  636,  636,
+      549,  549,  821,  549,  821,  821,  821,  821,  821,  549,
+      638,  638,  821,  638,  821,  821,  821,  821,  638,  638,
+      551,  551,  821,  551,  821,  821,  821,  821,  821,  551,
+      640,  640,  821,  640,  821,  821,  821,  821,  640,  640,
+
+      553,  553,  821,  553,  821,  821,  821,  821,  821,  553,
+      642,  642,  821,  642,  821,  821,  821,  821,  642,  642,
+      555,  555,  821,  555,  821,  821,  821,  821,  821,  555,
+      644,  644,  821,  644,  821,  821,  821,  821,  644,  644,
+      557,  557,  821,  557,  821,  821,  821,  821,  821,  557,
+      646,  646,  821,  646,  821,  821,  821,  821,  646,  646,
+      559,  559,  821,  559,  821,  821,  821,  821,  821,  559,
+      648,  648,  821,  648,  821,  821,  821,  821,  648,  648,
+      561,  561,  821,  561,  821,  821,  821,  821,  821,  561,
+       85,   85,  821,   85,  821,  821,  821,  821,   85,   85,
+
+      563,  563,  821,  563,  821,  821,  821,  821,  821,  563,
+      466,  466,  821,  466,  821,  821,  821,  821,  466,  466,
+      654,  654,  821,  654,  821,  821,  821,  821,  654,  654,
+      575,  575,  821,  575,  821,  821,  821,  821,  821,  575,
+      656,  656,  821,  656,  821,  821,  821,  821,  656,  656,
+      577,  577,  821,  577,  821,  821,  821,  821,  821,  577,
+      658,  658,  821,  658,  821,  821,  821,  821,  658,  658,
+      579,  579,  821,  579,  821,  821,  821,  821,  821,  579,
+      139,  139,  821,  139,  821,  821,  821,  821,  139,  139,
+      581,  581,  821,  581,  821,  821,  821,  821,  821,  581,
+
+      661,  661,  821,  661,  821,  821,  821,  821,  821,  661,
+      583,  583,  821,  583,  821,  821,  821,  821,  821,  583,
+       85,  821,  821,   85,   85,  821,   85,   85,   85,   85,
+       85,   85,   85,   85,  585,  585,  821,  585,  821,  821,
+      821,  821,  821,  585,  634,  634,  634,  634,  634,  634,
+      634,  634,  634,  634,  634,  634,  634,  634,  634,  634,
+      634,  697,  697,  821,  697,  821,  821,  821,  821,  697,
+      697,  636,  636,  821,  636,  821,  821,  821,  821,  821,
+      636,  198,  198,  821,  198,  821,  821,  821,  821,  198,
+      198,  638,  638,  821,  638,  821,  821,  821,  821,  821,
+
+      638,  700,  700,  821,  700,  821,  821,  821,  821,  821,
+      700,  640,  640,  821,  640,  821,  821,  821,  821,  821,
+      640,  198,  821,  821,  198,  198,  821,  198,  198,  198,
+      198,  198,  198,  198,  198,  642,  642,  821,  642,  821,
+      821,  821,  821,  821,  642,  701,  701,  821,  701,  821,
+      821,  821,  821,  821,  701,  644,  644,  821,  644,  821,
+      821,  821,  821,  821,  644,  646,  646,  821,  646,  821,
+      821,  821,  821,  821,  646,  702,  702,  821,  702,  821,
+      821,  821,  821,  821,  702,  648,  648,  821,  648,  821,
+      821,  821,  821,  821,  648,   85,   85,  821,   85,  821,
+
+      821,  821,  821,  821,   85,  704,  704,  821,  704,  821,
+      821,  821,  821,  704,  704,  654,  654,  821,  654,  821,
+      821,  821,  821,  821,  654,  259,  259,  821,  259,  821,
+      821,  821,  821,  259,  259,  656,  656,  821,  656,  821,
+      821,  821,  821,  821,  656,  707,  707,  821,  707,  821,
+      821,  821,  821,  821,  707,  658,  658,  821,  658,  821,
+      821,  821,  821,  821,  658,  139,  139,  821,  139,  821,
+      821,  821,  821,  821,  139,  708,  708,  821,  708,  821,
+      821,  821,  821,  708,  708,   85,  821,  821,   85,   85,
+      821,   85,   85,   85,   85,   85,   85,   85,   85,  738,
+
+      738,  821,  738,  821,  821,  821,  821,  821,  738,  697,
+      697,  821,  697,  821,  821,  821,  821,  821,  697,  739,
+      739,  821,  739,  821,  821,  821,  821,  739,  739,  741,
+      741,  821,  741,  821,  821,  821,  821,  741,  741,  743,
+      743,  821,  743,  821,  821,  821,  821,  743,  743,  745,
+      745,  821,  745,  821,  821,  821,  821,  821,  745,  746,
+      746,  821,  746,  821,  821,  821,  821,  746,  746,  748,
+      748,  821,  748,  821,  821,  821,  821,  748,  748,  766,
+      766,  821,  766,  821,  821,  821,  821,  766,  766,  768,
+      768,  821,  768,  821,  821,  821,  821,  768,  768,  770,
+
+      770,  821,  770,  821,  821,  821,  821,  770,  770,  772,
+      772,  821,  772,  821,  821,  821,  821,  772,  772,  774,
+      774,  821,  774,  821,  821,  821,  821,  774,  774,  776,
+      776,  821,  776,  821,  821,  821,  821,  776,  776,  585,
+      585,  821,  585,  821,  821,  821,  821,  585,  585,  792,
+      792,  821,  792,  821,  821,  821,  821,  792,  792,  642,
+      642,  821,  642,  821,  821,  821,  821,  642,  642,  646,
+      646,  821,  646,  821,  821,  821,  821,  646,  646,   85,
+       85,  821,   85,  821,  821,  821,  821,   85,   85,  797,
+      797,  821,  797,  821,  821,  821,  821,  797,  797,  139,
+
+      139,  821,  139,  821,  821,  821,  821,  139,  139,  198,
+      198,  821,  198,  821,  821,  821,  821,  198,  198,   11,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+
+      821,  821,  821,  821
     } ;
 
-static yyconst flex_int16_t yy_chk[3603] =
+static yyconst flex_int16_t yy_chk[3605] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1180,9 +1181,9 @@
         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
         5,    5,    5,    5,    5,    5,    5,    7,    8,    9,
-       10,   37,   37,   20,   48,    9,   10,  507,    7,    8,
+       10,   37,   37,   20,   48,    9,   10,  508,    7,    8,
        13,   13,   13,   13,   13,   13,   15,   15,   15,   15,
 
        15,   15,   20,   25,   48,   42,   53,   28,   27,   28,
-       28,   28,   28,   28,   28,  507,  819,   25,   29,   25,
+       28,   28,   28,   28,   28,  508,  820,   25,   29,   25,
        27,   27,   27,   29,   53,   35,    7,    8,    9,   10,
        40,   42,   55,   29,   30,   40,   30,   30,   30,   30,
@@ -1191,371 +1192,371 @@
        56,   59,   30,   30,   47,   49,   47,   50,   30,   54,
        51,   50,   51,   40,   30,   60,   40,   72,   59,   54,
-       30,   51,   86,  107,  113,   45,   54,  818,   30,   58,
+       30,   51,   86,  107,  113,   45,   54,  819,   30,   58,
        45,   30,   31,   60,   31,   31,   31,   31,   31,   31,
 
-      108,   58,  162,   72,   63,  106,  107,  113,   86,   58,
+      108,   58,  163,   72,   63,  106,  107,  113,   86,   58,
       106,   31,   45,   45,   45,   31,   58,   57,   45,   45,
-       31,   45,   52,   45,   45,  162,   31,   52,   45,   57,
+       31,   45,   52,   45,   45,  163,   31,   52,   45,   57,
        57,   45,   31,   61,  108,   52,  106,   52,   31,   57,
-       52,  126,   57,  126,   52,   61,   31,   38,  112,  817,
+       52,  126,   57,  126,   52,   61,   31,   38,  112,  171,
       129,   38,   38,  112,   38,  114,   38,   38,  128,   38,
-      128,   38,   67,   67,  129,  139,  129,   67,  130,  165,
+      128,   38,   67,   67,  129,  140,  129,   67,  130,  171,
        38,   38,   38,   66,   66,   66,   66,   66,   66,  112,
       130,   66,  130,   67,   67,   67,   67,   67,   67,  114,
-       38,  139,  165,   38,   76,   76,   76,   76,   79,   79,
-
-       79,   79,   79,   79,   81,   81,   81,   81,   81,   81,
-       82,   82,   82,   82,   82,   82,  103,  103,  103,  103,
-       76,   38,  109,  104,  232,  104,  104,  104,  104,  104,
-      104,  105,  131,  105,  131,  110,  105,  105,  105,  105,
-      105,  105,  104,  103,  132,  132,   76,  132,  103,   76,
-       84,  109,  115,  110,   84,   84,  109,  104,  232,   84,
-       84,  110,   84,  104,   84,  133,  816,  133,  105,  147,
-      115,  103,  142,   84,   84,   84,  146,  142,  115,  109,
-      134,  134,  134,  136,  137,  136,  137,  147,  148,  150,
-      149,  146,  151,   84,  152,  153,   84,  155,  146,  149,
-
-      156,  160,  157,  159,  161,  150,  148,  153,  159,  163,
-      151,  157,  158,  155,  161,  142,  152,  164,  160,  166,
-      167,  159,  156,  168,   84,   98,   98,   98,   98,   98,
-       98,  169,  170,  158,  158,  167,  163,  172,  164,  171,
-      168,  166,   98,   98,  175,  174,   98,  178,  176,  169,
-      183,  814,  170,  176,  209,  289,  209,   98,  182,  172,
-      174,  175,  289,   98,   98,  178,  171,  174,  177,   98,
-      102,  102,  102,  102,  102,  102,  180,  183,  182,  177,
-      184,  180,  179,  405,  181,  186,  198,  102,  102,  177,
-      177,  102,  187,  179,  266,  405,  180,  181,  186,  184,
-
-      186,  210,  102,  210,  185,  187,  154,  266,  102,  102,
-      179,  154,  198,  154,  102,  154,  154,  185,  211,  154,
-      211,  154,  214,  270,  214,  185,  154,  154,  154,  313,
-      154,  190,  190,  190,  190,  190,  190,  191,  191,  190,
-      270,  212,  191,  193,  193,  216,  313,  216,  193,  195,
-      195,  217,  217,  217,  195,  212,  195,  212,  191,  191,
-      191,  191,  191,  191,  193,  193,  193,  193,  193,  193,
-      195,  195,  195,  195,  195,  195,  203,  203,  203,  203,
-      213,  215,  215,  219,  215,  219,  220,  813,  220,  237,
-      245,  225,  213,  225,  213,  281,  225,  225,  225,  225,
-
-      225,  225,  230,  230,  281,  255,  230,  255,  203,  224,
-      224,  224,  224,  224,  224,  237,  245,  233,  233,  233,
-      233,  233,  233,  230,  230,  259,  224,  224,  225,  230,
-      224,  256,  267,  256,  233,  234,  234,  234,  234,  234,
-      234,  224,  344,  288,  344,  268,  272,  224,  224,  233,
-      267,  259,  288,  224,  292,  233,  235,  235,  235,  235,
-      235,  235,  236,  268,  236,  274,  272,  236,  236,  236,
-      236,  236,  236,  242,  235,  292,  292,  235,  244,  244,
-      244,  244,  244,  244,  808,  274,  269,  276,  235,  249,
-      249,  249,  249,  249,  249,  235,  242,  278,  242,  271,
-
-      235,  242,  269,  273,  271,  276,  277,  242,  273,  275,
-      244,  280,  278,  282,  283,  403,  280,  279,  284,  242,
-      286,  249,  290,  242,  275,  291,  282,  242,  295,  403,
-      275,  275,  277,  279,  279,  287,  284,  296,  286,  293,
-      287,  283,  290,  291,  293,  294,  296,  295,  297,  298,
-      299,  294,  300,  303,  301,  302,  304,  300,  298,  301,
-      302,  308,  305,  310,  297,  299,  309,  307,  311,  312,
-      315,  314,  303,  316,  304,  305,  308,  302,  307,  309,
-      314,  317,  318,  321,  320,  310,  322,  323,  327,  312,
-      325,  311,  315,  320,  327,  323,  316,  324,  380,  322,
-
-      318,  321,  324,  317,  807,  325,  326,  326,  345,  380,
-      345,  326,  381,  326,  334,  334,  334,  334,  335,  335,
-      335,  335,  351,  351,  351,  351,  351,  351,  381,  352,
-      352,  352,  352,  352,  352,  353,  365,  353,  383,  384,
-      353,  353,  353,  353,  353,  353,  334,  352,  384,  385,
-      352,  354,  354,  354,  354,  354,  354,  383,  803,  365,
-      385,  352,  355,  355,  355,  355,  355,  355,  352,  387,
-      415,  360,  361,  352,  356,  356,  356,  356,  356,  356,
-      360,  361,  367,  354,  357,  357,  357,  357,  357,  357,
-      415,  387,  356,  390,  355,  356,  360,  361,  363,  362,
-
-      367,  386,  357,  363,  382,  357,  356,  433,  367,  390,
-      386,  388,  389,  356,  433,  801,  357,  798,  356,  382,
-      388,  391,  362,  357,  362,  389,  393,  362,  357,  363,
-      364,  366,  364,  362,  392,  364,  364,  364,  364,  364,
-      364,  395,  394,  391,  400,  362,  395,  396,  393,  362,
-      392,  392,  397,  362,  366,  398,  366,  399,  397,  366,
-      394,  407,  396,  400,  401,  366,  408,  364,  399,  396,
-      410,  409,  411,  416,  412,  417,  398,  366,  418,  401,
-      409,  366,  407,  412,  409,  366,  419,  411,  408,  420,
-      417,  423,  425,  410,  421,  416,  426,  430,  427,  428,
-
-      418,  419,  429,  421,  431,  434,  430,  432,  423,  420,
-      435,  437,  434,  436,  438,  425,  440,  426,  427,  428,
-      432,  436,  431,  441,  429,  438,  498,  442,  437,  497,
-      468,  436,  441,  442,  497,  435,  469,  498,  440,  451,
-      451,  451,  451,  462,  462,  462,  462,  462,  462,  463,
-      463,  463,  463,  463,  463,  468,  489,  492,  490,  465,
-      467,  462,  469,  493,  462,  494,  500,  463,  465,  467,
-      463,  490,  492,  489,  499,  462,  496,  499,  494,  495,
-      505,  463,  462,  493,  465,  467,  500,  462,  463,  496,
-      506,  505,  523,  463,  464,  464,  464,  464,  464,  464,
-
-      466,  495,  466,  506,  523,  466,  466,  466,  466,  466,
-      466,  471,  471,  471,  471,  471,  471,  472,  472,  472,
-      472,  472,  472,  473,  501,  473,  464,  502,  473,  473,
-      473,  473,  473,  473,  504,  472,  503,  466,  472,  504,
-      509,  508,  510,  501,  511,  503,  512,  517,  502,  472,
-      508,  512,  518,  511,  515,  519,  472,  520,  522,  510,
-      531,  472,  509,  515,  524,  526,  520,  527,  529,  518,
-      519,  532,  527,  517,  530,  522,  533,  529,  535,  524,
-      526,  536,  531,  530,  532,  537,  535,  538,  539,  541,
-      544,  536,  537,  533,  542,  545,  587,  588,  541,  595,
-
-      539,  797,  595,  587,  542,  796,  588,  544,  545,  538,
-      564,  564,  564,  564,  564,  564,  565,  565,  565,  565,
-      565,  565,  566,  566,  566,  566,  566,  566,  567,  598,
-      567,  600,  591,  567,  567,  567,  567,  567,  567,  589,
-      566,  590,  564,  566,  570,  570,  570,  570,  570,  570,
-      592,  598,  589,  600,  566,  591,  795,  592,  590,  586,
-      794,  566,  570,  594,  586,  570,  566,  593,  572,  572,
-      572,  572,  572,  572,  596,  593,  570,  586,  597,  599,
-      594,  601,  602,  570,  601,  605,  572,  596,  570,  572,
-      603,  604,  606,  597,  608,  607,  599,  610,  611,  602,
-
-      572,  606,  612,  615,  616,  605,  604,  572,  618,  621,
-      629,  661,  572,  607,  632,  622,  608,  603,  621,  610,
-      629,  611,  622,  615,  612,  618,  631,  664,  666,  632,
-      667,  616,  661,  666,  793,  631,  650,  650,  650,  650,
-      650,  650,  651,  651,  651,  651,  651,  651,  662,  665,
-      667,  670,  668,  664,  650,  668,  665,  650,  662,  669,
-      651,  672,  669,  651,  673,  681,  676,  672,  650,  670,
-      684,  679,  675,  673,  651,  650,  674,  792,  681,  674,
-      650,  651,  677,  684,  688,  677,  651,  652,  652,  652,
-      652,  652,  652,  675,  676,  678,  679,  680,  682,  683,
-
-      680,  686,  691,  692,  678,  694,  682,  688,  695,  683,
-      686,  718,  713,  694,  717,  715,  714,  695,  719,  652,
-      715,  716,  691,  791,  717,  692,  702,  702,  702,  702,
-      702,  702,  713,  714,  718,  720,  716,  721,  720,  722,
-      724,  727,  726,  724,  719,  726,  728,  730,  727,  728,
-      721,  729,  749,  751,  729,  752,  753,  757,  702,  753,
-      754,  755,  730,  758,  755,  759,  722,  761,  759,  762,
-      779,  780,  762,  752,  751,  757,  764,  763,  780,  749,
-      763,  781,  754,  782,  781,  764,  784,  783,  758,  761,
-      783,  779,  782,  787,  790,  799,  787,  790,  802,  804,
-
-      800,  802,  804,  784,  799,  800,  805,  806,  809,  805,
-      806,  810,  811,  812,  815,  811,  812,  789,  788,  786,
-      785,  778,  777,  776,  775,  774,  810,  773,  809,  772,
-      771,  770,  769,  768,  767,  766,  815,  821,  821,  821,
+       38,  140,  131,   38,  131,  166,   76,   76,   76,   76,
+
+       79,   79,   79,   79,   79,   79,   81,   81,   81,   81,
+       81,   81,   82,   82,   82,   82,   82,   82,  166,  151,
+       38,   38,   76,  103,  103,  103,  103,  148,  110,  132,
+      132,  133,  132,  133,  104,  151,  104,  104,  104,  104,
+      104,  104,  134,  134,  134,  148,  110,  115,   76,  162,
+      103,   76,   84,  104,  110,  103,   84,   84,  136,  162,
+      136,   84,   84,  109,   84,  115,   84,  138,  104,  138,
+      818,  150,  153,  115,  104,   84,   84,   84,  103,  105,
+      150,  105,  149,  152,  105,  105,  105,  105,  105,  105,
+      147,  143,  109,  156,  153,   84,  143,  109,   84,  154,
+
+      149,  152,  157,  160,  158,  147,  161,  168,  160,  156,
+      164,  154,  147,  158,  159,  170,  105,  165,  167,  172,
+      109,  160,  168,  161,  157,  169,   84,   98,   98,   98,
+       98,   98,   98,  170,  143,  159,  159,  164,  165,  173,
+      167,  175,  169,  176,   98,   98,  172,  177,   98,  179,
+      181,  500,  177,  180,  500,  181,  175,  178,  184,   98,
+      176,  173,  199,  175,  180,   98,   98,  179,  178,  182,
+      181,   98,  102,  102,  102,  102,  102,  102,  178,  178,
+      183,  180,  182,  185,  186,  184,  187,  270,  199,  102,
+      102,  233,  271,  102,  188,  817,  210,  186,  210,  187,
+
+      183,  187,  185,  270,  102,  186,  268,  188,  155,  271,
+      102,  102,  211,  155,  211,  155,  102,  155,  155,  238,
+      212,  155,  212,  155,  268,  233,  192,  192,  155,  155,
+      155,  192,  155,  191,  191,  191,  191,  191,  191,  194,
+      194,  191,  246,  213,  194,  238,  815,  192,  192,  192,
+      192,  192,  192,  204,  204,  204,  204,  213,  214,  213,
+      194,  194,  194,  194,  194,  194,  196,  196,  246,  295,
+      214,  196,  214,  196,  215,  295,  215,  216,  216,  217,
+      216,  217,  218,  218,  218,  204,  814,  196,  196,  196,
+      196,  196,  196,  220,  221,  220,  221,  225,  225,  225,
+
+      225,  225,  225,  226,  256,  226,  256,  260,  226,  226,
+      226,  226,  226,  226,  225,  225,  231,  231,  225,  257,
+      231,  257,  234,  234,  234,  234,  234,  234,  328,  225,
+      809,  808,  269,  260,  328,  225,  225,  231,  231,  234,
+      226,  225,  267,  231,  235,  235,  235,  235,  235,  235,
+      269,  272,  274,  277,  234,  267,  272,  274,  243,  278,
+      234,  236,  236,  236,  236,  236,  236,  237,  273,  237,
+      275,  277,  237,  237,  237,  237,  237,  237,  283,  236,
+      284,  243,  236,  243,  281,  278,  243,  279,  273,  281,
+      275,  283,  243,  236,  245,  245,  245,  245,  245,  245,
+
+      236,  282,  279,  280,  243,  236,  276,  284,  243,  804,
+      282,  285,  243,  250,  250,  250,  250,  250,  250,  280,
+      280,  276,  287,  289,  290,  288,  245,  276,  276,  285,
+      288,  290,  289,  291,  292,  293,  294,  297,  298,  296,
+      287,  294,  299,  301,  300,  250,  297,  304,  301,  305,
+      302,  299,  292,  291,  298,  302,  293,  293,  296,  300,
+      303,  306,  308,  309,  310,  303,  304,  305,  311,  312,
+      314,  313,  315,  308,  306,  316,  317,  310,  309,  318,
+      319,  315,  303,  323,  321,  322,  324,  314,  366,  326,
+      311,  313,  312,  321,  324,  325,  323,  316,  319,  317,
+
+      325,  318,  398,  322,  326,  327,  327,  345,  398,  345,
+      327,  366,  327,  335,  335,  335,  335,  336,  336,  336,
+      336,  346,  399,  346,  352,  352,  352,  352,  352,  352,
+      353,  353,  353,  353,  353,  353,  355,  355,  355,  355,
+      355,  355,  382,  399,  383,  335,  368,  354,  353,  354,
+      381,  353,  354,  354,  354,  354,  354,  354,  382,  383,
+      386,  381,  353,  596,  368,  364,  596,  802,  355,  353,
+      364,  386,  368,  408,  353,  356,  356,  356,  356,  356,
+      356,  357,  357,  357,  357,  357,  357,  358,  358,  358,
+      358,  358,  358,  363,  408,  384,  364,  361,  799,  357,
+
+      385,  387,  357,  362,  390,  358,  361,  356,  358,  385,
+      387,  388,  362,  357,  384,  389,  363,  390,  363,  358,
+      357,  363,  361,  395,  389,  357,  358,  363,  362,  391,
+      396,  358,  367,  388,  392,  396,  798,  797,  796,  363,
+      394,  395,  393,  363,  365,  391,  365,  363,  397,  365,
+      365,  365,  365,  365,  365,  367,  392,  367,  393,  393,
+      367,  400,  394,  397,  401,  402,  367,  406,  409,  411,
+      397,  404,  400,  416,  412,  410,  417,  419,  367,  406,
+      402,  365,  367,  401,  410,  404,  367,  413,  410,  412,
+      409,  418,  411,  416,  420,  421,  413,  424,  417,  419,
+
+      426,  422,  428,  427,  430,  429,  418,  431,  433,  420,
+      422,  432,  434,  435,  424,  421,  431,  436,  441,  434,
+      435,  433,  428,  426,  427,  429,  430,  437,  439,  432,
+      438,  443,  442,  499,  504,  437,  795,  443,  470,  439,
+      441,  442,  436,  504,  499,  437,  469,  438,  452,  452,
+      452,  452,  463,  463,  463,  463,  463,  463,  464,  464,
+      464,  464,  464,  464,  470,  490,  493,  491,  466,  468,
+      463,  469,  494,  463,  495,  506,  464,  466,  468,  464,
+      491,  493,  490,  794,  463,  497,  506,  495,  496,  524,
+      464,  463,  494,  466,  468,  498,  463,  464,  497,  507,
+
+      498,  524,  464,  465,  465,  465,  465,  465,  465,  467,
+      496,  467,  507,  501,  467,  467,  467,  467,  467,  467,
+      472,  472,  472,  472,  472,  472,  473,  473,  473,  473,
+      473,  473,  474,  501,  474,  465,  502,  474,  474,  474,
+      474,  474,  474,  503,  473,  505,  467,  473,  509,  510,
+      505,  511,  512,  516,  513,  502,  518,  509,  473,  513,
+      519,  512,  516,  520,  503,  473,  521,  523,  511,  528,
+      473,  510,  525,  527,  528,  521,  530,  519,  520,  532,
+      531,  533,  518,  534,  523,  530,  537,  525,  527,  531,
+      536,  539,  538,  540,  533,  542,  537,  543,  536,  538,
+
+      534,  532,  545,  546,  542,  540,  594,  543,  588,  589,
+      593,  793,  792,  539,  594,  588,  546,  593,  589,  545,
+      565,  565,  565,  565,  565,  565,  566,  566,  566,  566,
+      566,  566,  567,  567,  567,  567,  567,  567,  568,  599,
+      568,  601,  592,  568,  568,  568,  568,  568,  568,  590,
+      567,  591,  565,  567,  571,  571,  571,  571,  571,  571,
+      595,  599,  590,  601,  567,  592,  790,  604,  591,  587,
+      598,  567,  571,  600,  587,  571,  567,  595,  573,  573,
+      573,  573,  573,  573,  597,  598,  571,  587,  602,  603,
+      600,  602,  605,  571,  604,  606,  573,  597,  571,  573,
+
+      607,  608,  609,  611,  612,  617,  603,  605,  613,  607,
+      573,  616,  619,  623,  622,  606,  630,  573,  633,  608,
+      623,  789,  573,  622,  609,  611,  630,  612,  632,  619,
+      613,  616,  617,  633,  662,  665,  671,  632,  651,  651,
+      651,  651,  651,  651,  652,  652,  652,  652,  652,  652,
+      663,  666,  667,  668,  671,  662,  651,  667,  666,  651,
+      663,  665,  652,  669,  670,  652,  669,  670,  673,  674,
+      651,  677,  675,  668,  673,  675,  652,  651,  674,  676,
+      680,  678,  651,  652,  678,  689,  679,  684,  652,  653,
+      653,  653,  653,  653,  653,  679,  682,  684,  681,  677,
+
+      676,  681,  683,  685,  687,  680,  692,  693,  689,  682,
+      683,  695,  717,  687,  696,  716,  685,  714,  718,  695,
+      716,  653,  715,  696,  719,  720,  692,  717,  718,  693,
+      703,  703,  703,  703,  703,  703,  722,  714,  721,  715,
+      723,  721,  725,  727,  731,  725,  727,  719,  728,  722,
+      729,  720,  750,  729,  730,  728,  752,  730,  753,  731,
+      754,  755,  703,  754,  758,  756,  759,  723,  756,  760,
+      762,  763,  760,  780,  763,  764,  753,  752,  764,  750,
+      765,  781,  758,  755,  782,  785,  783,  782,  781,  765,
+      784,  759,  762,  784,  780,  783,  788,  791,  800,  788,
+
+      791,  801,  785,  810,  811,  803,  801,  800,  803,  805,
+      806,  807,  805,  806,  807,  812,  816,  813,  812,  811,
+      813,  787,  786,  810,  779,  778,  777,  776,  775,  774,
+      773,  772,  771,  770,  769,  768,  767,  766,  816,  822,
+      822,  822,  822,  822,  822,  822,  822,  822,  822,  822,
+      822,  822,  822,  822,  822,  822,  823,  823,  823,  823,
+      823,  823,  823,  823,  823,  823,  823,  823,  823,  823,
+      823,  823,  823,  824,  824,  824,  824,  824,  824,  824,
+      824,  824,  824,  824,  824,  824,  824,  824,  824,  824,
+      825,  761,  757,  825,  825,  751,  825,  825,  825,  825,
+
+      825,  825,  825,  825,  826,  749,  748,  747,  746,  745,
+      826,  826,  826,  826,  826,  826,  826,  826,  827,  827,
+      827,  827,  827,  827,  827,  827,  827,  827,  827,  827,
+      827,  827,  827,  827,  827,  828,  744,  743,  828,  828,
+      742,  828,  828,  828,  828,  828,  828,  828,  828,  829,
+      741,  829,  829,  740,  829,  829,  829,  829,  829,  829,
+      829,  829,  739,  829,  829,  829,  830,  738,  830,  737,
+      830,  736,  830,  735,  734,  733,  830,  830,  732,  830,
+      830,  831,  726,  724,  831,  831,  831,  831,  831,  831,
+      831,  831,  831,  831,  713,  831,  831,  831,  832,  832,
+
+      832,  832,  832,  832,  832,  832,  832,  832,  832,  832,
+      832,  832,  832,  832,  832,  833,  833,  833,  712,  833,
+      711,  710,  709,  708,  833,  833,  834,  707,  706,  834,
+      834,  705,  834,  834,  834,  834,  834,  834,  834,  834,
+      835,  835,  702,  835,  701,  700,  699,  694,  835,  835,
+      836,  836,  691,  836,  690,  688,  686,  672,  836,  836,
+      837,  837,  664,  837,  661,  656,  654,  642,  837,  837,
+      838,  838,  638,  838,  636,  634,  631,  629,  838,  838,
+      839,  839,  628,  839,  627,  626,  625,  624,  839,  839,
+      840,  840,  621,  840,  620,  618,  615,  614,  840,  840,
+
+      841,  841,  610,  841,  585,  581,  579,  577,  841,  841,
+      842,  842,  575,  842,  569,  563,  561,  559,  842,  842,
+      843,  843,  557,  843,  555,  553,  551,  549,  843,  843,
+      844,  844,  844,  844,  844,  844,  844,  844,  844,  844,
+      844,  844,  844,  844,  844,  844,  844,  845,  845,  548,
+      845,  547,  544,  541,  535,  529,  845,  846,  846,  846,
+      526,  846,  846,  846,  846,  522,  846,  846,  847,  847,
+      847,  517,  847,  515,  514,  492,  488,  486,  847,  848,
+      848,  484,  848,  482,  480,  478,  477,  848,  848,  849,
+      849,  476,  849,  475,  461,  459,  458,  849,  849,  850,
+
+      850,  457,  850,  455,  453,  450,  448,  850,  850,  851,
+      851,  446,  851,  444,  440,  425,  423,  415,  851,  852,
+      852,  414,  852,  407,  405,  403,  379,  852,  852,  853,
+      853,  377,  853,  375,  373,  372,  371,  350,  853,  854,
+      348,  347,  854,  854,  343,  854,  854,  854,  854,  854,
+      854,  854,  854,  855,  855,  855,  855,  855,  855,  855,
+      855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
+      856,  856,  856,  856,  856,  856,  856,  856,  856,  856,
+      856,  856,  856,  856,  856,  856,  856,  857,  857,  341,
+      857,  339,  337,  333,  331,  857,  857,  858,  858,  330,
+
+      858,  329,  320,  307,  286,  858,  858,  859,  859,  265,
+      859,  263,  262,  261,  259,  859,  859,  860,  860,  258,
+      860,  253,  249,  248,  244,  241,  860,  861,  861,  240,
+      861,  229,  228,  223,  222,  861,  861,  862,  862,  219,
+      862,  209,  207,  206,  205,  201,  862,  863,  863,  200,
+      863,  198,  193,  174,  145,  863,  863,  864,  864,  144,
+      864,  139,  137,  135,  127,  124,  864,  865,  865,  123,
+      865,  119,  100,   97,   94,  865,  865,  866,  866,   92,
+      866,   85,   71,   69,   65,   44,  866,  867,  867,   39,
+      867,   36,   33,   18,   11,  867,  867,  868,  868,    4,
+
+      868,    3,    0,    0,    0,    0,  868,  869,  869,    0,
+      869,    0,    0,    0,    0,  869,  869,  870,  870,    0,
+      870,    0,    0,    0,    0,    0,  870,  871,  871,    0,
+      871,    0,    0,    0,    0,  871,  871,  872,  872,    0,
+      872,    0,    0,    0,    0,    0,  872,  873,  873,    0,
+      873,    0,  873,    0,    0,  873,  873,  874,  874,    0,
+      874,    0,  874,    0,    0,  874,  874,  875,  875,  875,
+        0,  875,  875,  875,  875,    0,  875,  875,  876,  876,
+        0,  876,    0,    0,    0,    0,  876,  876,  877,  877,
+        0,  877,    0,    0,    0,    0,  877,  877,  878,  878,
+
+        0,  878,    0,    0,    0,    0,  878,  878,  879,  879,
+        0,  879,    0,    0,    0,    0,    0,  879,  880,  880,
+        0,  880,    0,    0,    0,    0,  880,  880,  881,  881,
+        0,  881,    0,    0,    0,    0,    0,  881,  882,  882,
+        0,  882,    0,    0,    0,    0,  882,  882,  883,  883,
+        0,  883,    0,    0,    0,    0,    0,  883,  884,  884,
+        0,  884,    0,    0,    0,    0,  884,  884,  885,  885,
+        0,  885,    0,    0,    0,    0,    0,  885,  886,    0,
+        0,  886,  886,    0,  886,  886,  886,  886,  886,  886,
+      886,  886,  887,  887,  887,  887,  887,  887,  887,  887,
+
+      887,  887,  887,  887,  887,  887,  887,  887,  887,  888,
+      888,    0,  888,    0,    0,    0,    0,  888,  888,  889,
+      889,    0,  889,    0,    0,    0,    0,    0,  889,  890,
+      890,    0,  890,    0,    0,    0,    0,  890,  890,  891,
+      891,    0,  891,    0,    0,    0,    0,    0,  891,  892,
+      892,    0,  892,    0,    0,    0,    0,  892,  892,  893,
+      893,    0,  893,    0,    0,    0,    0,    0,  893,  894,
+      894,    0,  894,    0,    0,    0,    0,  894,  894,  895,
+      895,    0,  895,    0,    0,    0,    0,    0,  895,  896,
+      896,    0,  896,    0,    0,    0,    0,  896,  896,  897,
+
+      897,    0,  897,    0,    0,    0,    0,    0,  897,  898,
+      898,    0,  898,    0,    0,    0,    0,  898,  898,  899,
+      899,    0,  899,    0,    0,    0,    0,    0,  899,  900,
+      900,    0,  900,    0,    0,    0,    0,  900,  900,  901,
+      901,    0,  901,    0,    0,    0,    0,  901,  901,  902,
+      902,    0,  902,    0,    0,    0,    0,    0,  902,  903,
+      903,    0,  903,    0,    0,    0,    0,  903,  903,  904,
+      904,    0,  904,    0,    0,    0,    0,    0,  904,  905,
+      905,    0,  905,    0,  905,    0,    0,  905,  905,  906,
+      906,    0,  906,    0,    0,    0,    0,  906,  906,  907,
+
+      907,    0,  907,    0,    0,    0,    0,  907,  907,  908,
+      908,    0,  908,    0,    0,    0,    0,    0,  908,  909,
+      909,    0,  909,    0,    0,    0,    0,  909,  909,  910,
+      910,    0,  910,    0,    0,    0,    0,    0,  910,  911,
+      911,    0,  911,    0,    0,    0,    0,  911,  911,  912,
+      912,    0,  912,    0,    0,    0,    0,    0,  912,  913,
+      913,    0,  913,    0,    0,    0,    0,  913,  913,  914,
+      914,    0,  914,    0,    0,    0,    0,    0,  914,  915,
+      915,    0,  915,    0,    0,    0,    0,  915,  915,  916,
+      916,    0,  916,    0,    0,    0,    0,    0,  916,  917,
+
+      917,    0,  917,    0,    0,    0,    0,  917,  917,  918,
+      918,    0,  918,    0,    0,    0,    0,    0,  918,  919,
+        0,    0,  919,  919,    0,  919,  919,  919,  919,  919,
+      919,  919,  919,  920,  920,  920,  920,  920,  920,  920,
+      920,  920,  920,  920,  920,  920,  920,  920,  920,  920,
+      921,  921,    0,  921,    0,    0,    0,    0,  921,  921,
+      922,  922,    0,  922,    0,    0,    0,    0,    0,  922,
+      923,  923,    0,  923,    0,    0,    0,    0,  923,  923,
+      924,  924,    0,  924,    0,    0,    0,    0,    0,  924,
+      925,  925,    0,  925,    0,    0,    0,    0,  925,  925,
+
+      926,  926,    0,  926,    0,    0,    0,    0,    0,  926,
+      927,  927,    0,  927,    0,    0,    0,    0,  927,  927,
+      928,  928,    0,  928,    0,    0,    0,    0,    0,  928,
+      929,  929,    0,  929,    0,    0,    0,    0,  929,  929,
+      930,  930,    0,  930,    0,    0,    0,    0,    0,  930,
+      931,  931,    0,  931,    0,    0,    0,    0,  931,  931,
+      932,  932,    0,  932,    0,    0,    0,    0,    0,  932,
+      933,  933,    0,  933,    0,    0,    0,    0,  933,  933,
+      934,  934,    0,  934,    0,    0,    0,    0,    0,  934,
+      935,  935,    0,  935,    0,    0,    0,    0,  935,  935,
+
+      936,  936,    0,  936,    0,    0,    0,    0,    0,  936,
+      937,  937,    0,  937,    0,    0,    0,    0,  937,  937,
+      938,  938,    0,  938,    0,    0,    0,    0,  938,  938,
+      939,  939,    0,  939,    0,    0,    0,    0,    0,  939,
+      940,  940,    0,  940,    0,    0,    0,    0,  940,  940,
+      941,  941,    0,  941,    0,    0,    0,    0,    0,  941,
+      942,  942,    0,  942,    0,    0,    0,    0,  942,  942,
+      943,  943,    0,  943,    0,    0,    0,    0,    0,  943,
+      944,  944,    0,  944,    0,    0,    0,    0,  944,  944,
+      945,  945,    0,  945,    0,    0,    0,    0,    0,  945,
+
+      946,  946,    0,  946,    0,    0,    0,    0,    0,  946,
+      947,  947,    0,  947,    0,    0,    0,    0,    0,  947,
+      948,    0,    0,  948,  948,    0,  948,  948,  948,  948,
+      948,  948,  948,  948,  949,  949,    0,  949,    0,    0,
+        0,    0,    0,  949,  950,  950,  950,  950,  950,  950,
+      950,  950,  950,  950,  950,  950,  950,  950,  950,  950,
+      950,  951,  951,    0,  951,    0,    0,    0,    0,  951,
+      951,  952,  952,    0,  952,    0,    0,    0,    0,    0,
+      952,  953,  953,    0,  953,    0,    0,    0,    0,  953,
+      953,  954,  954,    0,  954,    0,    0,    0,    0,    0,
+
+      954,  955,  955,    0,  955,    0,    0,    0,    0,    0,
+      955,  956,  956,    0,  956,    0,    0,    0,    0,    0,
+      956,  957,    0,    0,  957,  957,    0,  957,  957,  957,
+      957,  957,  957,  957,  957,  958,  958,    0,  958,    0,
+        0,    0,    0,    0,  958,  959,  959,    0,  959,    0,
+        0,    0,    0,    0,  959,  960,  960,    0,  960,    0,
+        0,    0,    0,    0,  960,  961,  961,    0,  961,    0,
+        0,    0,    0,    0,  961,  962,  962,    0,  962,    0,
+        0,    0,    0,    0,  962,  963,  963,    0,  963,    0,
+        0,    0,    0,    0,  963,  964,  964,    0,  964,    0,
+
+        0,    0,    0,    0,  964,  965,  965,    0,  965,    0,
+        0,    0,    0,  965,  965,  966,  966,    0,  966,    0,
+        0,    0,    0,    0,  966,  967,  967,    0,  967,    0,
+        0,    0,    0,  967,  967,  968,  968,    0,  968,    0,
+        0,    0,    0,    0,  968,  969,  969,    0,  969,    0,
+        0,    0,    0,    0,  969,  970,  970,    0,  970,    0,
+        0,    0,    0,    0,  970,  971,  971,    0,  971,    0,
+        0,    0,    0,    0,  971,  972,  972,    0,  972,    0,
+        0,    0,    0,  972,  972,  973,    0,    0,  973,  973,
+        0,  973,  973,  973,  973,  973,  973,  973,  973,  974,
+
+      974,    0,  974,    0,    0,    0,    0,    0,  974,  975,
+      975,    0,  975,    0,    0,    0,    0,    0,  975,  976,
+      976,    0,  976,    0,    0,    0,    0,  976,  976,  977,
+      977,    0,  977,    0,    0,    0,    0,  977,  977,  978,
+      978,    0,  978,    0,    0,    0,    0,  978,  978,  979,
+      979,    0,  979,    0,    0,    0,    0,    0,  979,  980,
+      980,    0,  980,    0,    0,    0,    0,  980,  980,  981,
+      981,    0,  981,    0,    0,    0,    0,  981,  981,  982,
+      982,    0,  982,    0,    0,    0,    0,  982,  982,  983,
+      983,    0,  983,    0,    0,    0,    0,  983,  983,  984,
+
+      984,    0,  984,    0,    0,    0,    0,  984,  984,  985,
+      985,    0,  985,    0,    0,    0,    0,  985,  985,  986,
+      986,    0,  986,    0,    0,    0,    0,  986,  986,  987,
+      987,    0,  987,    0,    0,    0,    0,  987,  987,  988,
+      988,    0,  988,    0,    0,    0,    0,  988,  988,  989,
+      989,    0,  989,    0,    0,    0,    0,  989,  989,  990,
+      990,    0,  990,    0,    0,    0,    0,  990,  990,  991,
+      991,    0,  991,    0,    0,    0,    0,  991,  991,  992,
+      992,    0,  992,    0,    0,    0,    0,  992,  992,  993,
+      993,    0,  993,    0,    0,    0,    0,  993,  993,  994,
+
+      994,    0,  994,    0,    0,    0,    0,  994,  994,  995,
+      995,    0,  995,    0,    0,    0,    0,  995,  995,  821,
       821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
-      821,  821,  821,  821,  822,  822,  822,  822,  822,  822,
-      822,  822,  822,  822,  822,  822,  822,  822,  822,  822,
-      822,  823,  823,  823,  823,  823,  823,  823,  823,  823,
-      823,  823,  823,  823,  823,  823,  823,  823,  824,  765,
-      760,  824,  824,  756,  824,  824,  824,  824,  824,  824,
-
-      824,  824,  825,  750,  748,  747,  746,  745,  825,  825,
-      825,  825,  825,  825,  825,  825,  826,  826,  826,  826,
-      826,  826,  826,  826,  826,  826,  826,  826,  826,  826,
-      826,  826,  826,  827,  744,  743,  827,  827,  742,  827,
-      827,  827,  827,  827,  827,  827,  827,  828,  741,  828,
-      828,  740,  828,  828,  828,  828,  828,  828,  828,  828,
-      739,  828,  828,  828,  829,  738,  829,  737,  829,  736,
-      829,  735,  734,  733,  829,  829,  732,  829,  829,  830,
-      731,  725,  830,  830,  830,  830,  830,  830,  830,  830,
-      830,  830,  723,  830,  830,  830,  831,  831,  831,  831,
-
-      831,  831,  831,  831,  831,  831,  831,  831,  831,  831,
-      831,  831,  831,  832,  832,  832,  712,  832,  711,  710,
-      709,  708,  832,  832,  833,  707,  706,  833,  833,  705,
-      833,  833,  833,  833,  833,  833,  833,  833,  834,  834,
-      704,  834,  701,  700,  699,  698,  834,  834,  835,  835,
-      693,  835,  690,  689,  687,  685,  835,  835,  836,  836,
-      671,  836,  663,  660,  655,  653,  836,  836,  837,  837,
-      641,  837,  637,  635,  633,  630,  837,  837,  838,  838,
-      628,  838,  627,  626,  625,  624,  838,  838,  839,  839,
-      623,  839,  620,  619,  617,  614,  839,  839,  840,  840,
-
-      613,  840,  609,  584,  580,  578,  840,  840,  841,  841,
-      576,  841,  574,  568,  562,  560,  841,  841,  842,  842,
-      558,  842,  556,  554,  552,  550,  842,  842,  843,  843,
-      843,  843,  843,  843,  843,  843,  843,  843,  843,  843,
-      843,  843,  843,  843,  843,  844,  844,  548,  844,  547,
-      546,  543,  540,  534,  844,  845,  845,  845,  528,  845,
-      845,  845,  845,  525,  845,  845,  846,  846,  846,  521,
-      846,  516,  514,  513,  491,  487,  846,  847,  847,  485,
-      847,  483,  481,  479,  477,  847,  847,  848,  848,  476,
-      848,  475,  474,  460,  458,  848,  848,  849,  849,  457,
-
-      849,  456,  454,  452,  449,  849,  849,  850,  850,  447,
-      850,  445,  443,  439,  424,  422,  850,  851,  851,  414,
-      851,  413,  406,  404,  402,  851,  851,  852,  852,  378,
-      852,  376,  374,  372,  371,  370,  852,  853,  349,  347,
-      853,  853,  346,  853,  853,  853,  853,  853,  853,  853,
-      853,  854,  854,  854,  854,  854,  854,  854,  854,  854,
-      854,  854,  854,  854,  854,  854,  854,  854,  855,  855,
-      855,  855,  855,  855,  855,  855,  855,  855,  855,  855,
-      855,  855,  855,  855,  855,  856,  856,  342,  856,  340,
-      338,  336,  332,  856,  856,  857,  857,  330,  857,  329,
-
-      328,  319,  306,  857,  857,  858,  858,  285,  858,  264,
-      262,  261,  260,  858,  858,  859,  859,  258,  859,  257,
-      252,  248,  247,  243,  859,  860,  860,  240,  860,  239,
-      228,  227,  222,  860,  860,  861,  861,  221,  861,  218,
-      208,  206,  205,  204,  861,  862,  862,  200,  862,  199,
-      197,  192,  173,  862,  862,  863,  863,  144,  863,  143,
-      138,  135,  127,  124,  863,  864,  864,  123,  864,  119,
-      100,   97,   94,  864,  864,  865,  865,   92,  865,   85,
-       71,   69,   65,   44,  865,  866,  866,   39,  866,   36,
-       33,   18,   11,  866,  866,  867,  867,    4,  867,    3,
-
-        0,    0,    0,    0,  867,  868,  868,    0,  868,    0,
-        0,    0,    0,  868,  868,  869,  869,    0,  869,    0,
-        0,    0,    0,    0,  869,  870,  870,    0,  870,    0,
-        0,    0,    0,  870,  870,  871,  871,    0,  871,    0,
-        0,    0,    0,    0,  871,  872,  872,    0,  872,    0,
-      872,    0,    0,  872,  872,  873,  873,    0,  873,    0,
-      873,    0,    0,  873,  873,  874,  874,  874,    0,  874,
-      874,  874,  874,    0,  874,  874,  875,  875,    0,  875,
-        0,    0,    0,    0,  875,  875,  876,  876,    0,  876,
-        0,    0,    0,    0,  876,  876,  877,  877,    0,  877,
-
-        0,    0,    0,    0,  877,  877,  878,  878,    0,  878,
-        0,    0,    0,    0,    0,  878,  879,  879,    0,  879,
-        0,    0,    0,    0,  879,  879,  880,  880,    0,  880,
-        0,    0,    0,    0,    0,  880,  881,  881,    0,  881,
-        0,    0,    0,    0,  881,  881,  882,  882,    0,  882,
-        0,    0,    0,    0,    0,  882,  883,  883,    0,  883,
-        0,    0,    0,    0,  883,  883,  884,  884,    0,  884,
-        0,    0,    0,    0,    0,  884,  885,    0,    0,  885,
-      885,    0,  885,  885,  885,  885,  885,  885,  885,  885,
-      886,  886,  886,  886,  886,  886,  886,  886,  886,  886,
-
-      886,  886,  886,  886,  886,  886,  886,  887,  887,    0,
-      887,    0,    0,    0,    0,  887,  887,  888,  888,    0,
-      888,    0,    0,    0,    0,    0,  888,  889,  889,    0,
-      889,    0,    0,    0,    0,  889,  889,  890,  890,    0,
-      890,    0,    0,    0,    0,    0,  890,  891,  891,    0,
-      891,    0,    0,    0,    0,  891,  891,  892,  892,    0,
-      892,    0,    0,    0,    0,    0,  892,  893,  893,    0,
-      893,    0,    0,    0,    0,  893,  893,  894,  894,    0,
-      894,    0,    0,    0,    0,    0,  894,  895,  895,    0,
-      895,    0,    0,    0,    0,  895,  895,  896,  896,    0,
-
-      896,    0,    0,    0,    0,    0,  896,  897,  897,    0,
-      897,    0,    0,    0,    0,  897,  897,  898,  898,    0,
-      898,    0,    0,    0,    0,    0,  898,  899,  899,    0,
-      899,    0,    0,    0,    0,  899,  899,  900,  900,    0,
-      900,    0,    0,    0,    0,  900,  900,  901,  901,    0,
-      901,    0,    0,    0,    0,    0,  901,  902,  902,    0,
-      902,    0,    0,    0,    0,  902,  902,  903,  903,    0,
-      903,    0,    0,    0,    0,    0,  903,  904,  904,    0,
-      904,    0,  904,    0,    0,  904,  904,  905,  905,    0,
-      905,    0,    0,    0,    0,  905,  905,  906,  906,    0,
-
-      906,    0,    0,    0,    0,  906,  906,  907,  907,    0,
-      907,    0,    0,    0,    0,    0,  907,  908,  908,    0,
-      908,    0,    0,    0,    0,  908,  908,  909,  909,    0,
-      909,    0,    0,    0,    0,    0,  909,  910,  910,    0,
-      910,    0,    0,    0,    0,  910,  910,  911,  911,    0,
-      911,    0,    0,    0,    0,    0,  911,  912,  912,    0,
-      912,    0,    0,    0,    0,  912,  912,  913,  913,    0,
-      913,    0,    0,    0,    0,    0,  913,  914,  914,    0,
-      914,    0,    0,    0,    0,  914,  914,  915,  915,    0,
-      915,    0,    0,    0,    0,    0,  915,  916,  916,    0,
-
-      916,    0,    0,    0,    0,  916,  916,  917,  917,    0,
-      917,    0,    0,    0,    0,    0,  917,  918,    0,    0,
-      918,  918,    0,  918,  918,  918,  918,  918,  918,  918,
-      918,  919,  919,  919,  919,  919,  919,  919,  919,  919,
-      919,  919,  919,  919,  919,  919,  919,  919,  920,  920,
-        0,  920,    0,    0,    0,    0,  920,  920,  921,  921,
-        0,  921,    0,    0,    0,    0,    0,  921,  922,  922,
-        0,  922,    0,    0,    0,    0,  922,  922,  923,  923,
-        0,  923,    0,    0,    0,    0,    0,  923,  924,  924,
-        0,  924,    0,    0,    0,    0,  924,  924,  925,  925,
-
-        0,  925,    0,    0,    0,    0,    0,  925,  926,  926,
-        0,  926,    0,    0,    0,    0,  926,  926,  927,  927,
-        0,  927,    0,    0,    0,    0,    0,  927,  928,  928,
-        0,  928,    0,    0,    0,    0,  928,  928,  929,  929,
-        0,  929,    0,    0,    0,    0,    0,  929,  930,  930,
-        0,  930,    0,    0,    0,    0,  930,  930,  931,  931,
-        0,  931,    0,    0,    0,    0,    0,  931,  932,  932,
-        0,  932,    0,    0,    0,    0,  932,  932,  933,  933,
-        0,  933,    0,    0,    0,    0,    0,  933,  934,  934,
-        0,  934,    0,    0,    0,    0,  934,  934,  935,  935,
-
-        0,  935,    0,    0,    0,    0,    0,  935,  936,  936,
-        0,  936,    0,    0,    0,    0,  936,  936,  937,  937,
-        0,  937,    0,    0,    0,    0,  937,  937,  938,  938,
-        0,  938,    0,    0,    0,    0,    0,  938,  939,  939,
-        0,  939,    0,    0,    0,    0,  939,  939,  940,  940,
-        0,  940,    0,    0,    0,    0,    0,  940,  941,  941,
-        0,  941,    0,    0,    0,    0,  941,  941,  942,  942,
-        0,  942,    0,    0,    0,    0,    0,  942,  943,  943,
-        0,  943,    0,    0,    0,    0,  943,  943,  944,  944,
-        0,  944,    0,    0,    0,    0,    0,  944,  945,  945,
-
-        0,  945,    0,    0,    0,    0,    0,  945,  946,  946,
-        0,  946,    0,    0,    0,    0,    0,  946,  947,    0,
-        0,  947,  947,    0,  947,  947,  947,  947,  947,  947,
-      947,  947,  948,  948,    0,  948,    0,    0,    0,    0,
-        0,  948,  949,  949,  949,  949,  949,  949,  949,  949,
-      949,  949,  949,  949,  949,  949,  949,  949,  949,  950,
-      950,    0,  950,    0,    0,    0,    0,  950,  950,  951,
-      951,    0,  951,    0,    0,    0,    0,    0,  951,  952,
-      952,    0,  952,    0,    0,    0,    0,  952,  952,  953,
-      953,    0,  953,    0,    0,    0,    0,    0,  953,  954,
-
-      954,    0,  954,    0,    0,    0,    0,    0,  954,  955,
-      955,    0,  955,    0,    0,    0,    0,    0,  955,  956,
-        0,    0,  956,  956,    0,  956,  956,  956,  956,  956,
-      956,  956,  956,  957,  957,    0,  957,    0,    0,    0,
-        0,    0,  957,  958,  958,    0,  958,    0,    0,    0,
-        0,    0,  958,  959,  959,    0,  959,    0,    0,    0,
-        0,    0,  959,  960,  960,    0,  960,    0,    0,    0,
-        0,    0,  960,  961,  961,    0,  961,    0,    0,    0,
-        0,    0,  961,  962,  962,    0,  962,    0,    0,    0,
-        0,    0,  962,  963,  963,    0,  963,    0,    0,    0,
-
-        0,    0,  963,  964,  964,    0,  964,    0,    0,    0,
-        0,  964,  964,  965,  965,    0,  965,    0,    0,    0,
-        0,    0,  965,  966,  966,    0,  966,    0,    0,    0,
-        0,  966,  966,  967,  967,    0,  967,    0,    0,    0,
-        0,    0,  967,  968,  968,    0,  968,    0,    0,    0,
-        0,    0,  968,  969,  969,    0,  969,    0,    0,    0,
-        0,    0,  969,  970,  970,    0,  970,    0,    0,    0,
-        0,    0,  970,  971,  971,    0,  971,    0,    0,    0,
-        0,  971,  971,  972,    0,    0,  972,  972,    0,  972,
-      972,  972,  972,  972,  972,  972,  972,  973,  973,    0,
-
-      973,    0,    0,    0,    0,    0,  973,  974,  974,    0,
-      974,    0,    0,    0,    0,    0,  974,  975,  975,    0,
-      975,    0,    0,    0,    0,  975,  975,  976,  976,    0,
-      976,    0,    0,    0,    0,  976,  976,  977,  977,    0,
-      977,    0,    0,    0,    0,  977,  977,  978,  978,    0,
-      978,    0,    0,    0,    0,    0,  978,  979,  979,    0,
-      979,    0,    0,    0,    0,  979,  979,  980,  980,    0,
-      980,    0,    0,    0,    0,  980,  980,  981,  981,    0,
-      981,    0,    0,    0,    0,  981,  981,  982,  982,    0,
-      982,    0,    0,    0,    0,  982,  982,  983,  983,    0,
-
-      983,    0,    0,    0,    0,  983,  983,  984,  984,    0,
-      984,    0,    0,    0,    0,  984,  984,  985,  985,    0,
-      985,    0,    0,    0,    0,  985,  985,  986,  986,    0,
-      986,    0,    0,    0,    0,  986,  986,  987,  987,    0,
-      987,    0,    0,    0,    0,  987,  987,  988,  988,    0,
-      988,    0,    0,    0,    0,  988,  988,  989,  989,    0,
-      989,    0,    0,    0,    0,  989,  989,  990,  990,    0,
-      990,    0,    0,    0,    0,  990,  990,  991,  991,    0,
-      991,    0,    0,    0,    0,  991,  991,  992,  992,    0,
-      992,    0,    0,    0,    0,  992,  992,  993,  993,    0,
-
-      993,    0,    0,    0,    0,  993,  993,  994,  994,    0,
-      994,    0,    0,    0,    0,  994,  994,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-      820,  820,  820,  820,  820,  820,  820,  820,  820,  820,
-
-      820,  820
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+      821,  821,  821,  821,  821,  821,  821,  821,  821,  821,
+
+      821,  821,  821,  821
     } ;
 
@@ -1599,6 +1600,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Sun May 31 23:41:32 2015
- * Update Count     : 334
+ * Last Modified On : Wed Jun  3 22:24:07 2015
+ * Update Count     : 336
  */
 #line 19 "lex.ll"
@@ -1664,5 +1665,5 @@
 
 
-#line 1667 "Parser/lex.cc"
+#line 1668 "Parser/lex.cc"
 
 #define INITIAL 0
@@ -1861,5 +1862,5 @@
 
 				   /* line directives */
-#line 1864 "Parser/lex.cc"
+#line 1865 "Parser/lex.cc"
 
 	if ( !(yy_init) )
@@ -1915,5 +1916,5 @@
 				{
 				yy_current_state = (int) yy_def[yy_current_state];
-				if ( yy_current_state >= 821 )
+				if ( yy_current_state >= 822 )
 					yy_c = yy_meta[(unsigned int) yy_c];
 				}
@@ -1921,5 +1922,5 @@
 			++yy_cp;
 			}
-		while ( yy_base[yy_current_state] != 3518 );
+		while ( yy_base[yy_current_state] != 3520 );
 
 yy_find_action:
@@ -2883,5 +2884,5 @@
 ECHO;
 	YY_BREAK
-#line 2886 "Parser/lex.cc"
+#line 2887 "Parser/lex.cc"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(COMMENT):
@@ -3180,5 +3181,5 @@
 			{
 			yy_current_state = (int) yy_def[yy_current_state];
-			if ( yy_current_state >= 821 )
+			if ( yy_current_state >= 822 )
 				yy_c = yy_meta[(unsigned int) yy_c];
 			}
@@ -3208,9 +3209,9 @@
 		{
 		yy_current_state = (int) yy_def[yy_current_state];
-		if ( yy_current_state >= 821 )
+		if ( yy_current_state >= 822 )
 			yy_c = yy_meta[(unsigned int) yy_c];
 		}
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-	yy_is_jam = (yy_current_state == 820);
+	yy_is_jam = (yy_current_state == 821);
 
 	return yy_is_jam ? 0 : yy_current_state;
Index: src/Parser/lex.h
===================================================================
--- src/Parser/lex.h	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/Parser/lex.h	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep 22 08:58:10 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat May 16 12:18:48 2015
-// Update Count     : 334
+// Last Modified On : Wed Jun  3 21:53:39 2015
+// Update Count     : 335
 //
 
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/Parser/lex.ll	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Sun May 31 23:41:32 2015
- * Update Count     : 334
+ * Last Modified On : Wed Jun  3 22:24:07 2015
+ * Update Count     : 336
  */
 
@@ -355,5 +355,5 @@
 				/* CFA, operator identifier */
 {op_unary}"?"	{ IDENTIFIER_RETURN(); }				// unary
-"?"({op_unary_pre_post}|"()"|"[?]") { IDENTIFIER_RETURN(); }
+"?"({op_unary_pre_post}|"()"|"[?]"|"{}") { IDENTIFIER_RETURN(); }
 "?"{op_binary_over}"?"	{ IDENTIFIER_RETURN(); }		// binary
 	/*
Index: src/Parser/module.mk
===================================================================
--- src/Parser/module.mk	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/Parser/module.mk	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -11,6 +11,6 @@
 ## Created On       : Sat May 16 15:29:09 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Mon Jun  1 08:16:25 2015
-## Update Count     : 83
+## Last Modified On : Thu Jun  4 09:39:00 2015
+## Update Count     : 86
 ###############################################################################
 
Index: src/Parser/parser.cc
===================================================================
--- src/Parser/parser.cc	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/Parser/parser.cc	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -1008,60 +1008,60 @@
      705,   710,   711,   715,   720,   721,   725,   727,   733,   734,
      738,   740,   742,   744,   750,   751,   755,   756,   760,   762,
-     764,   769,   771,   777,   779,   783,   787,   791,   795,   799,
-     801,   803,   808,   810,   812,   821,   824,   826,   831,   833,
-     838,   851,   852,   857,   859,   864,   868,   870,   872,   874,
-     878,   880,   884,   885,   889,   893,   894,   900,   902,   906,
-     907,   912,   914,   918,   919,   923,   925,   929,   930,   934,
-     935,   939,   940,   956,   957,   958,   959,   960,   964,   969,
-     976,   986,   991,   996,  1004,  1009,  1014,  1019,  1024,  1032,
-    1037,  1050,  1056,  1063,  1065,  1072,  1077,  1082,  1094,  1099,
-    1104,  1109,  1114,  1122,  1127,  1135,  1136,  1137,  1138,  1144,
-    1149,  1157,  1158,  1159,  1160,  1164,  1165,  1166,  1167,  1172,
-    1173,  1183,  1184,  1189,  1190,  1195,  1197,  1199,  1201,  1203,
-    1206,  1205,  1217,  1218,  1220,  1230,  1231,  1236,  1240,  1242,
-    1244,  1246,  1248,  1251,  1256,  1258,  1260,  1262,  1264,  1266,
-    1268,  1270,  1272,  1274,  1276,  1278,  1284,  1285,  1287,  1289,
-    1291,  1296,  1297,  1303,  1304,  1306,  1308,  1313,  1315,  1317,
-    1319,  1324,  1325,  1327,  1329,  1334,  1335,  1337,  1342,  1343,
-    1345,  1347,  1352,  1354,  1356,  1361,  1362,  1366,  1368,  1370,
-    1372,  1374,  1376,  1378,  1380,  1383,  1388,  1390,  1395,  1397,
-    1402,  1403,  1405,  1406,  1411,  1412,  1414,  1416,  1421,  1423,
-    1429,  1430,  1432,  1435,  1438,  1443,  1444,  1449,  1454,  1458,
-    1460,  1462,  1467,  1469,  1475,  1476,  1484,  1485,  1489,  1490,
-    1491,  1493,  1495,  1503,  1504,  1506,  1508,  1513,  1514,  1520,
-    1521,  1525,  1526,  1531,  1532,  1533,  1535,  1544,  1545,  1547,
-    1550,  1552,  1556,  1557,  1558,  1560,  1562,  1566,  1571,  1579,
-    1580,  1589,  1591,  1596,  1597,  1598,  1602,  1603,  1604,  1608,
-    1609,  1610,  1614,  1615,  1616,  1621,  1622,  1623,  1624,  1630,
-    1631,  1635,  1636,  1640,  1641,  1642,  1643,  1658,  1659,  1664,
-    1665,  1669,  1671,  1675,  1677,  1679,  1703,  1704,  1706,  1708,
-    1713,  1715,  1717,  1722,  1723,  1729,  1728,  1732,  1736,  1738,
-    1740,  1746,  1747,  1752,  1757,  1759,  1764,  1766,  1767,  1769,
-    1774,  1776,  1778,  1783,  1785,  1790,  1795,  1803,  1809,  1808,
-    1822,  1823,  1828,  1829,  1833,  1838,  1843,  1851,  1856,  1867,
-    1868,  1879,  1880,  1886,  1887,  1891,  1892,  1893,  1896,  1895,
-    1906,  1911,  1918,  1924,  1933,  1939,  1945,  1951,  1957,  1965,
-    1971,  1979,  1985,  1994,  1995,  1996,  2000,  2004,  2006,  2009,
-    2011,  2015,  2016,  2020,  2024,  2025,  2028,  2030,  2031,  2035,
-    2036,  2037,  2038,  2073,  2074,  2075,  2076,  2080,  2085,  2090,
-    2092,  2094,  2099,  2101,  2103,  2105,  2110,  2112,  2122,  2123,
-    2124,  2128,  2130,  2132,  2137,  2139,  2141,  2146,  2148,  2150,
-    2159,  2160,  2161,  2165,  2167,  2169,  2174,  2176,  2178,  2183,
-    2185,  2187,  2202,  2203,  2204,  2205,  2209,  2214,  2219,  2221,
-    2223,  2228,  2230,  2232,  2234,  2239,  2241,  2243,  2253,  2254,
-    2255,  2256,  2260,  2262,  2264,  2269,  2271,  2273,  2275,  2280,
-    2282,  2284,  2315,  2316,  2317,  2318,  2322,  2330,  2332,  2334,
-    2339,  2341,  2346,  2348,  2362,  2363,  2364,  2368,  2370,  2372,
-    2374,  2376,  2381,  2382,  2384,  2386,  2391,  2393,  2395,  2401,
-    2403,  2405,  2409,  2411,  2413,  2415,  2429,  2430,  2431,  2435,
-    2437,  2439,  2441,  2443,  2448,  2449,  2451,  2453,  2458,  2460,
-    2462,  2468,  2469,  2471,  2481,  2484,  2486,  2489,  2491,  2493,
-    2506,  2507,  2508,  2512,  2514,  2516,  2518,  2520,  2525,  2526,
-    2528,  2530,  2535,  2537,  2545,  2546,  2547,  2552,  2553,  2557,
-    2559,  2561,  2563,  2565,  2567,  2574,  2576,  2578,  2580,  2582,
-    2584,  2586,  2588,  2590,  2592,  2597,  2599,  2601,  2606,  2632,
-    2633,  2635,  2639,  2640,  2644,  2646,  2648,  2650,  2652,  2654,
-    2661,  2663,  2665,  2667,  2669,  2671,  2676,  2681,  2683,  2685,
-    2705,  2707,  2712,  2713
+     764,   769,   771,   776,   778,   782,   786,   790,   794,   798,
+     800,   802,   807,   809,   811,   820,   823,   825,   830,   832,
+     837,   850,   851,   856,   858,   863,   867,   869,   871,   873,
+     877,   879,   883,   884,   888,   892,   893,   899,   901,   905,
+     906,   911,   913,   917,   918,   922,   924,   928,   929,   933,
+     934,   938,   939,   955,   956,   957,   958,   959,   963,   968,
+     975,   985,   990,   995,  1003,  1008,  1013,  1018,  1023,  1031,
+    1036,  1049,  1055,  1062,  1064,  1071,  1076,  1081,  1093,  1098,
+    1103,  1108,  1113,  1121,  1126,  1134,  1135,  1136,  1137,  1143,
+    1148,  1156,  1157,  1158,  1159,  1163,  1164,  1165,  1166,  1171,
+    1172,  1182,  1183,  1188,  1189,  1194,  1196,  1198,  1200,  1202,
+    1205,  1204,  1216,  1217,  1219,  1229,  1230,  1235,  1239,  1241,
+    1243,  1245,  1247,  1250,  1255,  1257,  1259,  1261,  1263,  1265,
+    1267,  1269,  1271,  1273,  1275,  1277,  1283,  1284,  1286,  1288,
+    1290,  1295,  1296,  1302,  1303,  1305,  1307,  1312,  1314,  1316,
+    1318,  1323,  1324,  1326,  1328,  1333,  1334,  1336,  1341,  1342,
+    1344,  1346,  1351,  1353,  1355,  1360,  1361,  1365,  1367,  1369,
+    1371,  1373,  1375,  1377,  1379,  1382,  1387,  1389,  1394,  1396,
+    1401,  1402,  1404,  1405,  1410,  1411,  1413,  1415,  1420,  1422,
+    1428,  1429,  1431,  1434,  1437,  1442,  1443,  1448,  1453,  1457,
+    1459,  1461,  1466,  1468,  1474,  1475,  1483,  1484,  1488,  1489,
+    1490,  1492,  1494,  1502,  1503,  1505,  1507,  1512,  1513,  1519,
+    1520,  1524,  1525,  1530,  1531,  1532,  1534,  1543,  1544,  1546,
+    1549,  1551,  1555,  1556,  1557,  1559,  1561,  1565,  1570,  1578,
+    1579,  1588,  1590,  1595,  1596,  1597,  1601,  1602,  1603,  1607,
+    1608,  1609,  1613,  1614,  1615,  1620,  1621,  1622,  1623,  1629,
+    1630,  1634,  1635,  1639,  1640,  1641,  1642,  1657,  1658,  1663,
+    1664,  1668,  1670,  1674,  1676,  1678,  1702,  1703,  1705,  1707,
+    1712,  1714,  1716,  1721,  1722,  1728,  1727,  1731,  1735,  1737,
+    1739,  1745,  1746,  1751,  1756,  1758,  1763,  1765,  1766,  1768,
+    1773,  1775,  1777,  1782,  1784,  1789,  1794,  1802,  1808,  1807,
+    1821,  1822,  1827,  1828,  1832,  1837,  1842,  1850,  1855,  1866,
+    1867,  1878,  1879,  1885,  1886,  1890,  1891,  1892,  1895,  1894,
+    1905,  1910,  1917,  1923,  1932,  1938,  1944,  1950,  1956,  1964,
+    1970,  1978,  1984,  1993,  1994,  1995,  1999,  2003,  2005,  2008,
+    2010,  2014,  2015,  2019,  2023,  2024,  2027,  2029,  2030,  2034,
+    2035,  2036,  2037,  2072,  2073,  2074,  2075,  2079,  2084,  2089,
+    2091,  2093,  2098,  2100,  2102,  2104,  2109,  2111,  2121,  2122,
+    2123,  2127,  2129,  2131,  2136,  2138,  2140,  2145,  2147,  2149,
+    2158,  2159,  2160,  2164,  2166,  2168,  2173,  2175,  2177,  2182,
+    2184,  2186,  2201,  2202,  2203,  2204,  2208,  2213,  2218,  2220,
+    2222,  2227,  2229,  2231,  2233,  2238,  2240,  2242,  2252,  2253,
+    2254,  2255,  2259,  2261,  2263,  2268,  2270,  2272,  2274,  2279,
+    2281,  2283,  2314,  2315,  2316,  2317,  2321,  2329,  2331,  2333,
+    2338,  2340,  2345,  2347,  2361,  2362,  2363,  2367,  2369,  2371,
+    2373,  2375,  2380,  2381,  2383,  2385,  2390,  2392,  2394,  2400,
+    2402,  2404,  2408,  2410,  2412,  2414,  2428,  2429,  2430,  2434,
+    2436,  2438,  2440,  2442,  2447,  2448,  2450,  2452,  2457,  2459,
+    2461,  2467,  2468,  2470,  2480,  2483,  2485,  2488,  2490,  2492,
+    2505,  2506,  2507,  2511,  2513,  2515,  2517,  2519,  2524,  2525,
+    2527,  2529,  2534,  2536,  2544,  2545,  2546,  2551,  2552,  2556,
+    2558,  2560,  2562,  2564,  2566,  2573,  2575,  2577,  2579,  2581,
+    2583,  2585,  2587,  2589,  2591,  2596,  2598,  2600,  2605,  2631,
+    2632,  2634,  2638,  2639,  2643,  2645,  2647,  2649,  2651,  2653,
+    2660,  2662,  2664,  2666,  2668,  2670,  2675,  2680,  2682,  2684,
+    2704,  2706,  2711,  2712
 };
 #endif
@@ -6092,5 +6092,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 773 "parser.yy"
+#line 772 "parser.yy"
     { (yyval.en) = new ForCtlExprNode((yyvsp[(1) - (4)].decl), (yyvsp[(2) - (4)].en), (yyvsp[(4) - (4)].en)); }
     break;
@@ -6099,5 +6099,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 778 "parser.yy"
+#line 777 "parser.yy"
     { (yyval.sn) = new StatementNode(StatementNode::Goto, (yyvsp[(2) - (3)].tok)); }
     break;
@@ -6106,5 +6106,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 782 "parser.yy"
+#line 781 "parser.yy"
     { (yyval.sn) = new StatementNode(StatementNode::Goto, (yyvsp[(3) - (4)].en)); }
     break;
@@ -6113,5 +6113,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 786 "parser.yy"
+#line 785 "parser.yy"
     { (yyval.sn) = new StatementNode(StatementNode::Continue, 0, 0); }
     break;
@@ -6120,5 +6120,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 790 "parser.yy"
+#line 789 "parser.yy"
     { (yyval.sn) = new StatementNode(StatementNode::Continue, (yyvsp[(2) - (3)].tok)); }
     break;
@@ -6127,5 +6127,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 794 "parser.yy"
+#line 793 "parser.yy"
     { (yyval.sn) = new StatementNode(StatementNode::Break, 0, 0); }
     break;
@@ -6134,5 +6134,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 798 "parser.yy"
+#line 797 "parser.yy"
     { (yyval.sn) = new StatementNode(StatementNode::Break, (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -6141,5 +6141,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 800 "parser.yy"
+#line 799 "parser.yy"
     { (yyval.sn) = new StatementNode(StatementNode::Return, (yyvsp[(2) - (3)].en), 0); }
     break;
@@ -6148,5 +6148,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 802 "parser.yy"
+#line 801 "parser.yy"
     { (yyval.sn) = new StatementNode(StatementNode::Throw, (yyvsp[(2) - (3)].en), 0); }
     break;
@@ -6155,5 +6155,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 804 "parser.yy"
+#line 803 "parser.yy"
     { (yyval.sn) = new StatementNode(StatementNode::Throw, 0, 0); }
     break;
@@ -6162,5 +6162,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 809 "parser.yy"
+#line 808 "parser.yy"
     { (yyval.sn) = new StatementNode(StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn))))); }
     break;
@@ -6169,5 +6169,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 811 "parser.yy"
+#line 810 "parser.yy"
     { (yyval.sn) = new StatementNode(StatementNode::Try, 0,(StatementNode *)(mkList((*(yyvsp[(2) - (3)].sn),*(yyvsp[(3) - (3)].pn))))); }
     break;
@@ -6176,5 +6176,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 813 "parser.yy"
+#line 812 "parser.yy"
     {
 			(yyvsp[(3) - (4)].pn)->set_link((yyvsp[(4) - (4)].pn));
@@ -6186,5 +6186,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 825 "parser.yy"
+#line 824 "parser.yy"
     { (yyval.pn) = StatementNode::newCatchStmt( 0, (yyvsp[(5) - (5)].sn), true ); }
     break;
@@ -6193,5 +6193,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 827 "parser.yy"
+#line 826 "parser.yy"
     { (yyval.pn) = (yyvsp[(1) - (6)].pn)->set_link( StatementNode::newCatchStmt( 0, (yyvsp[(6) - (6)].sn), true ) ); }
     break;
@@ -6200,5 +6200,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 832 "parser.yy"
+#line 831 "parser.yy"
     { (yyval.pn) = StatementNode::newCatchStmt((yyvsp[(5) - (9)].decl), (yyvsp[(8) - (9)].sn)); }
     break;
@@ -6207,5 +6207,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 834 "parser.yy"
+#line 833 "parser.yy"
     { (yyval.pn) = (yyvsp[(1) - (10)].pn)->set_link( StatementNode::newCatchStmt((yyvsp[(6) - (10)].decl), (yyvsp[(9) - (10)].sn)) ); }
     break;
@@ -6214,5 +6214,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 839 "parser.yy"
+#line 838 "parser.yy"
     {
 			(yyval.pn) = new StatementNode(StatementNode::Finally, 0, (yyvsp[(2) - (2)].sn));
@@ -6224,5 +6224,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 853 "parser.yy"
+#line 852 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6234,5 +6234,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 858 "parser.yy"
+#line 857 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6241,5 +6241,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 860 "parser.yy"
+#line 859 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6251,5 +6251,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 869 "parser.yy"
+#line 868 "parser.yy"
     { (yyval.sn) = new StatementNode(StatementNode::Asm, 0, 0); }
     break;
@@ -6258,5 +6258,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 871 "parser.yy"
+#line 870 "parser.yy"
     { (yyval.sn) = new StatementNode(StatementNode::Asm, 0, 0); }
     break;
@@ -6265,5 +6265,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 873 "parser.yy"
+#line 872 "parser.yy"
     { (yyval.sn) = new StatementNode(StatementNode::Asm, 0, 0); }
     break;
@@ -6272,5 +6272,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 875 "parser.yy"
+#line 874 "parser.yy"
     { (yyval.sn) = new StatementNode(StatementNode::Asm, 0, 0); }
     break;
@@ -6279,5 +6279,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 889 "parser.yy"
+#line 888 "parser.yy"
     {}
     break;
@@ -6286,5 +6286,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 893 "parser.yy"
+#line 892 "parser.yy"
     {}
     break;
@@ -6293,5 +6293,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 901 "parser.yy"
+#line 900 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6300,5 +6300,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 908 "parser.yy"
+#line 907 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6307,5 +6307,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 913 "parser.yy"
+#line 912 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6314,9 +6314,16 @@
 
 /* Line 1806 of yacc.c  */
-#line 920 "parser.yy"
+#line 919 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
 
   case 229:
+
+/* Line 1806 of yacc.c  */
+#line 933 "parser.yy"
+    {}
+    break;
+
+  case 230:
 
 /* Line 1806 of yacc.c  */
@@ -6325,15 +6332,8 @@
     break;
 
-  case 230:
-
-/* Line 1806 of yacc.c  */
-#line 935 "parser.yy"
-    {}
-    break;
-
   case 238:
 
 /* Line 1806 of yacc.c  */
-#line 965 "parser.yy"
+#line 964 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6345,5 +6345,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 972 "parser.yy"
+#line 971 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6355,5 +6355,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 977 "parser.yy"
+#line 976 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (6)].tok), TypedefTable::ID );
@@ -6365,5 +6365,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 987 "parser.yy"
+#line 986 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
@@ -6375,5 +6375,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 992 "parser.yy"
+#line 991 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(2) - (3)].tok) );
@@ -6385,5 +6385,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 997 "parser.yy"
+#line 996 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *(yyvsp[(3) - (4)].tok) );
@@ -6395,5 +6395,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1005 "parser.yy"
+#line 1004 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6405,5 +6405,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1010 "parser.yy"
+#line 1009 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6415,5 +6415,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1015 "parser.yy"
+#line 1014 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6425,5 +6425,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1020 "parser.yy"
+#line 1019 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6435,5 +6435,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1025 "parser.yy"
+#line 1024 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::ID );
@@ -6445,5 +6445,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1033 "parser.yy"
+#line 1032 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *((yyvsp[(5) - (10)].tok)) );
@@ -6455,5 +6455,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1038 "parser.yy"
+#line 1037 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *((yyvsp[(5) - (10)].tok)) );
@@ -6465,5 +6465,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1053 "parser.yy"
+#line 1052 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
@@ -6474,5 +6474,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1057 "parser.yy"
+#line 1056 "parser.yy"
     {
 			(yyval.decl) = DeclarationNode::newFunction( (yyvsp[(2) - (7)].tok), (yyvsp[(1) - (7)].decl), (yyvsp[(5) - (7)].decl), 0, true );
@@ -6483,5 +6483,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1064 "parser.yy"
+#line 1063 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -6490,5 +6490,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1068 "parser.yy"
+#line 1067 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (9)].decl)->appendList( (yyvsp[(7) - (9)].decl) ) ); }
     break;
@@ -6497,5 +6497,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1073 "parser.yy"
+#line 1072 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD);
@@ -6507,5 +6507,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1078 "parser.yy"
+#line 1077 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD);
@@ -6517,5 +6517,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1083 "parser.yy"
+#line 1082 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( *(yyvsp[(5) - (5)].tok), TypedefTable::TD);
@@ -6527,5 +6527,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1095 "parser.yy"
+#line 1094 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD);
@@ -6537,5 +6537,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1100 "parser.yy"
+#line 1099 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD);
@@ -6547,5 +6547,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1105 "parser.yy"
+#line 1104 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD);
@@ -6557,5 +6557,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1110 "parser.yy"
+#line 1109 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD);
@@ -6567,5 +6567,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1115 "parser.yy"
+#line 1114 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::TD);
@@ -6577,5 +6577,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1123 "parser.yy"
+#line 1122 "parser.yy"
     {
 			typedefTable.addToEnclosingScope(*((yyvsp[(2) - (4)].tok)), TypedefTable::TD);
@@ -6587,5 +6587,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1128 "parser.yy"
+#line 1127 "parser.yy"
     {
 			typedefTable.addToEnclosingScope(*((yyvsp[(5) - (7)].tok)), TypedefTable::TD);
@@ -6597,5 +6597,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1145 "parser.yy"
+#line 1144 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6607,5 +6607,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1150 "parser.yy"
+#line 1149 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -6617,5 +6617,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1172 "parser.yy"
+#line 1171 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -6624,5 +6624,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1185 "parser.yy"
+#line 1184 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6631,5 +6631,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1191 "parser.yy"
+#line 1190 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Attribute ); }
     break;
@@ -6638,5 +6638,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1196 "parser.yy"
+#line 1195 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Const ); }
     break;
@@ -6645,5 +6645,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1198 "parser.yy"
+#line 1197 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Restrict ); }
     break;
@@ -6652,5 +6652,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1200 "parser.yy"
+#line 1199 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Volatile ); }
     break;
@@ -6659,5 +6659,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1202 "parser.yy"
+#line 1201 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Lvalue ); }
     break;
@@ -6666,5 +6666,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1204 "parser.yy"
+#line 1203 "parser.yy"
     { (yyval.decl) = DeclarationNode::newQualifier( DeclarationNode::Atomic ); }
     break;
@@ -6673,5 +6673,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1206 "parser.yy"
+#line 1205 "parser.yy"
     {
 			typedefTable.enterScope();
@@ -6682,5 +6682,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1210 "parser.yy"
+#line 1209 "parser.yy"
     {
 			typedefTable.leaveScope();
@@ -6692,5 +6692,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1219 "parser.yy"
+#line 1218 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6699,5 +6699,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1221 "parser.yy"
+#line 1220 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6706,5 +6706,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1232 "parser.yy"
+#line 1231 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6713,5 +6713,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1241 "parser.yy"
+#line 1240 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Extern ); }
     break;
@@ -6720,5 +6720,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1243 "parser.yy"
+#line 1242 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Static ); }
     break;
@@ -6727,5 +6727,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1245 "parser.yy"
+#line 1244 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Auto ); }
     break;
@@ -6734,5 +6734,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1247 "parser.yy"
+#line 1246 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Register ); }
     break;
@@ -6741,5 +6741,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1250 "parser.yy"
+#line 1249 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Inline ); }
     break;
@@ -6748,5 +6748,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1252 "parser.yy"
+#line 1251 "parser.yy"
     { (yyval.decl) = DeclarationNode::newStorageClass( DeclarationNode::Fortran ); }
     break;
@@ -6755,5 +6755,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1257 "parser.yy"
+#line 1256 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Char ); }
     break;
@@ -6762,5 +6762,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1259 "parser.yy"
+#line 1258 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Double ); }
     break;
@@ -6769,5 +6769,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1261 "parser.yy"
+#line 1260 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Float ); }
     break;
@@ -6776,5 +6776,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1263 "parser.yy"
+#line 1262 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Int ); }
     break;
@@ -6783,5 +6783,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1265 "parser.yy"
+#line 1264 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Long ); }
     break;
@@ -6790,5 +6790,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1267 "parser.yy"
+#line 1266 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Short ); }
     break;
@@ -6797,5 +6797,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1269 "parser.yy"
+#line 1268 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Signed ); }
     break;
@@ -6804,5 +6804,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1271 "parser.yy"
+#line 1270 "parser.yy"
     { (yyval.decl) = DeclarationNode::newModifier( DeclarationNode::Unsigned ); }
     break;
@@ -6811,5 +6811,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1273 "parser.yy"
+#line 1272 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Void ); }
     break;
@@ -6818,5 +6818,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1275 "parser.yy"
+#line 1274 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Bool ); }
     break;
@@ -6825,5 +6825,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1277 "parser.yy"
+#line 1276 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Complex ); }
     break;
@@ -6832,5 +6832,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1279 "parser.yy"
+#line 1278 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBasicType( DeclarationNode::Imaginary ); }
     break;
@@ -6839,5 +6839,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1286 "parser.yy"
+#line 1285 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6846,5 +6846,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1288 "parser.yy"
+#line 1287 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6853,5 +6853,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1290 "parser.yy"
+#line 1289 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6860,5 +6860,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1292 "parser.yy"
+#line 1291 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addType( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -6867,5 +6867,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1298 "parser.yy"
+#line 1297 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6874,5 +6874,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1305 "parser.yy"
+#line 1304 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6881,5 +6881,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1307 "parser.yy"
+#line 1306 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6888,5 +6888,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1309 "parser.yy"
+#line 1308 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addType( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6895,5 +6895,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1314 "parser.yy"
+#line 1313 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (4)].decl); }
     break;
@@ -6902,5 +6902,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1316 "parser.yy"
+#line 1315 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTypeof( (yyvsp[(3) - (4)].en) ); }
     break;
@@ -6909,5 +6909,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1318 "parser.yy"
+#line 1317 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -6916,5 +6916,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1320 "parser.yy"
+#line 1319 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAttr( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
@@ -6923,5 +6923,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1326 "parser.yy"
+#line 1325 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6930,5 +6930,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1328 "parser.yy"
+#line 1327 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6937,5 +6937,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1330 "parser.yy"
+#line 1329 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6944,5 +6944,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1336 "parser.yy"
+#line 1335 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6951,5 +6951,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1338 "parser.yy"
+#line 1337 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6958,5 +6958,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1344 "parser.yy"
+#line 1343 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6965,5 +6965,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1346 "parser.yy"
+#line 1345 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -6972,5 +6972,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1348 "parser.yy"
+#line 1347 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -6979,5 +6979,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1353 "parser.yy"
+#line 1352 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -6986,5 +6986,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1355 "parser.yy"
+#line 1354 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypedef( (yyvsp[(2) - (2)].tok) )->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -6993,5 +6993,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1357 "parser.yy"
+#line 1356 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7000,5 +7000,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1367 "parser.yy"
+#line 1366 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (4)].aggKey), 0, 0, 0, (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -7007,5 +7007,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1369 "parser.yy"
+#line 1368 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (2)].aggKey), (yyvsp[(2) - (2)].tok), 0, 0, 0 ); }
     break;
@@ -7014,5 +7014,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1371 "parser.yy"
+#line 1370 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (5)].aggKey), (yyvsp[(2) - (5)].tok), 0, 0, (yyvsp[(4) - (5)].decl) ); }
     break;
@@ -7021,5 +7021,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1373 "parser.yy"
+#line 1372 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (9)].aggKey), 0, (yyvsp[(4) - (9)].decl), 0, (yyvsp[(8) - (9)].decl) ); }
     break;
@@ -7028,5 +7028,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1375 "parser.yy"
+#line 1374 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), (yyvsp[(7) - (7)].tok), (yyvsp[(4) - (7)].decl), 0, 0 ); }
     break;
@@ -7035,5 +7035,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1377 "parser.yy"
+#line 1376 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (10)].aggKey), (yyvsp[(7) - (10)].tok), (yyvsp[(4) - (10)].decl), 0, (yyvsp[(9) - (10)].decl) ); }
     break;
@@ -7042,5 +7042,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1379 "parser.yy"
+#line 1378 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (12)].aggKey), 0, (yyvsp[(4) - (12)].decl), (yyvsp[(8) - (12)].en), (yyvsp[(11) - (12)].decl) ); }
     break;
@@ -7049,5 +7049,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1382 "parser.yy"
+#line 1381 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (7)].aggKey), (yyvsp[(7) - (7)].tok), 0, (yyvsp[(4) - (7)].en), 0 ); }
     break;
@@ -7056,5 +7056,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1384 "parser.yy"
+#line 1383 "parser.yy"
     { (yyval.decl) = DeclarationNode::newAggregate( (yyvsp[(1) - (13)].aggKey), (yyvsp[(10) - (13)].tok), (yyvsp[(4) - (13)].decl), (yyvsp[(8) - (13)].en), (yyvsp[(12) - (13)].decl) ); }
     break;
@@ -7063,5 +7063,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1389 "parser.yy"
+#line 1388 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Struct; }
     break;
@@ -7070,5 +7070,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1391 "parser.yy"
+#line 1390 "parser.yy"
     { (yyval.aggKey) = DeclarationNode::Union; }
     break;
@@ -7077,5 +7077,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1396 "parser.yy"
+#line 1395 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (1)].decl); }
     break;
@@ -7084,5 +7084,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1398 "parser.yy"
+#line 1397 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7091,5 +7091,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1404 "parser.yy"
+#line 1403 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -7098,5 +7098,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1407 "parser.yy"
+#line 1406 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -7105,5 +7105,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1413 "parser.yy"
+#line 1412 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addName( (yyvsp[(2) - (2)].tok) ); }
     break;
@@ -7112,5 +7112,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1415 "parser.yy"
+#line 1414 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(1) - (3)].decl)->cloneType( (yyvsp[(3) - (3)].tok) ) ); }
     break;
@@ -7119,5 +7119,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1417 "parser.yy"
+#line 1416 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(1) - (2)].decl)->cloneType( 0 ) ); }
     break;
@@ -7126,5 +7126,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1422 "parser.yy"
+#line 1421 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7133,5 +7133,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1424 "parser.yy"
+#line 1423 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(1) - (4)].decl)->cloneBaseType( (yyvsp[(4) - (4)].decl) ) ); }
     break;
@@ -7140,5 +7140,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1429 "parser.yy"
+#line 1428 "parser.yy"
     { (yyval.decl) = DeclarationNode::newName( 0 ); /* XXX */ }
     break;
@@ -7147,5 +7147,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1431 "parser.yy"
+#line 1430 "parser.yy"
     { (yyval.decl) = DeclarationNode::newBitfield( (yyvsp[(1) - (1)].en) ); }
     break;
@@ -7154,5 +7154,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1434 "parser.yy"
+#line 1433 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7161,5 +7161,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1437 "parser.yy"
+#line 1436 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addBitfield( (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7168,5 +7168,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1443 "parser.yy"
+#line 1442 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -7175,5 +7175,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1445 "parser.yy"
+#line 1444 "parser.yy"
     { (yyval.en) = (yyvsp[(1) - (1)].en); }
     break;
@@ -7182,5 +7182,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1450 "parser.yy"
+#line 1449 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -7189,5 +7189,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1459 "parser.yy"
+#line 1458 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnum( 0, (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -7196,5 +7196,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1461 "parser.yy"
+#line 1460 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (6)].tok), (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -7203,5 +7203,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1463 "parser.yy"
+#line 1462 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnum( (yyvsp[(2) - (2)].tok), 0 ); }
     break;
@@ -7210,5 +7210,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1468 "parser.yy"
+#line 1467 "parser.yy"
     { (yyval.decl) = DeclarationNode::newEnumConstant( (yyvsp[(1) - (2)].tok), (yyvsp[(2) - (2)].en) ); }
     break;
@@ -7217,5 +7217,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1470 "parser.yy"
+#line 1469 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( DeclarationNode::newEnumConstant( (yyvsp[(3) - (4)].tok), (yyvsp[(4) - (4)].en) ) ); }
     break;
@@ -7224,5 +7224,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1475 "parser.yy"
+#line 1474 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -7231,5 +7231,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1477 "parser.yy"
+#line 1476 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -7238,5 +7238,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1484 "parser.yy"
+#line 1483 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7245,5 +7245,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1492 "parser.yy"
+#line 1491 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7252,5 +7252,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1494 "parser.yy"
+#line 1493 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7259,5 +7259,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1496 "parser.yy"
+#line 1495 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7266,5 +7266,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1505 "parser.yy"
+#line 1504 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7273,5 +7273,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1507 "parser.yy"
+#line 1506 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7280,5 +7280,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1509 "parser.yy"
+#line 1508 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (9)].decl)->appendList( (yyvsp[(5) - (9)].decl) )->appendList( (yyvsp[(9) - (9)].decl) ); }
     break;
@@ -7287,5 +7287,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1515 "parser.yy"
+#line 1514 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7294,5 +7294,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1520 "parser.yy"
+#line 1519 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7301,5 +7301,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1527 "parser.yy"
+#line 1526 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->addVarArgs(); }
     break;
@@ -7308,5 +7308,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1534 "parser.yy"
+#line 1533 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7315,5 +7315,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1536 "parser.yy"
+#line 1535 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (5)].decl)->appendList( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -7322,5 +7322,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1546 "parser.yy"
+#line 1545 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -7329,5 +7329,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1549 "parser.yy"
+#line 1548 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addName( (yyvsp[(2) - (3)].tok) ); }
     break;
@@ -7336,5 +7336,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1551 "parser.yy"
+#line 1550 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addName( (yyvsp[(3) - (4)].tok) )->addQualifiers( (yyvsp[(1) - (4)].decl) ); }
     break;
@@ -7343,5 +7343,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1561 "parser.yy"
+#line 1560 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7350,5 +7350,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1567 "parser.yy"
+#line 1566 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7360,5 +7360,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1572 "parser.yy"
+#line 1571 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7370,5 +7370,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1581 "parser.yy"
+#line 1580 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7377,5 +7377,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1590 "parser.yy"
+#line 1589 "parser.yy"
     { (yyval.decl) = DeclarationNode::newName( (yyvsp[(1) - (1)].tok) ); }
     break;
@@ -7384,5 +7384,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1592 "parser.yy"
+#line 1591 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( DeclarationNode::newName( (yyvsp[(3) - (3)].tok) ) ); }
     break;
@@ -7391,5 +7391,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1617 "parser.yy"
+#line 1616 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7398,5 +7398,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1625 "parser.yy"
+#line 1624 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addType( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7405,12 +7405,12 @@
 
 /* Line 1806 of yacc.c  */
+#line 1629 "parser.yy"
+    { (yyval.in) = 0; }
+    break;
+
+  case 440:
+
+/* Line 1806 of yacc.c  */
 #line 1630 "parser.yy"
-    { (yyval.in) = 0; }
-    break;
-
-  case 440:
-
-/* Line 1806 of yacc.c  */
-#line 1631 "parser.yy"
     { (yyval.in) = (yyvsp[(2) - (2)].in); }
     break;
@@ -7419,12 +7419,12 @@
 
 /* Line 1806 of yacc.c  */
+#line 1634 "parser.yy"
+    { (yyval.in) = new InitializerNode((yyvsp[(1) - (1)].en)); }
+    break;
+
+  case 442:
+
+/* Line 1806 of yacc.c  */
 #line 1635 "parser.yy"
-    { (yyval.in) = new InitializerNode((yyvsp[(1) - (1)].en)); }
-    break;
-
-  case 442:
-
-/* Line 1806 of yacc.c  */
-#line 1636 "parser.yy"
     { (yyval.in) = new InitializerNode((yyvsp[(2) - (4)].in), true); }
     break;
@@ -7433,12 +7433,12 @@
 
 /* Line 1806 of yacc.c  */
+#line 1640 "parser.yy"
+    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
+    break;
+
+  case 445:
+
+/* Line 1806 of yacc.c  */
 #line 1641 "parser.yy"
-    { (yyval.in) = (yyvsp[(2) - (2)].in)->set_designators( (yyvsp[(1) - (2)].en) ); }
-    break;
-
-  case 445:
-
-/* Line 1806 of yacc.c  */
-#line 1642 "parser.yy"
     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (3)].in)->set_link((yyvsp[(3) - (3)].in)) ); }
     break;
@@ -7447,5 +7447,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1644 "parser.yy"
+#line 1643 "parser.yy"
     { (yyval.in) = (InitializerNode *)( (yyvsp[(1) - (4)].in)->set_link( (yyvsp[(4) - (4)].in)->set_designators((yyvsp[(3) - (4)].en)) ) ); }
     break;
@@ -7454,5 +7454,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1660 "parser.yy"
+#line 1659 "parser.yy"
     { (yyval.en) = new VarRefNode( (yyvsp[(1) - (2)].tok) ); }
     break;
@@ -7461,5 +7461,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1665 "parser.yy"
+#line 1664 "parser.yy"
     { (yyval.en) = (ExpressionNode *)((yyvsp[(1) - (2)].en)->set_link( (yyvsp[(2) - (2)].en) )); }
     break;
@@ -7468,5 +7468,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1670 "parser.yy"
+#line 1669 "parser.yy"
     { (yyval.en) = new VarRefNode( (yyvsp[(2) - (2)].tok) ); }
     break;
@@ -7475,5 +7475,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1674 "parser.yy"
+#line 1673 "parser.yy"
     { (yyval.en) = (yyvsp[(3) - (5)].en); }
     break;
@@ -7482,5 +7482,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1676 "parser.yy"
+#line 1675 "parser.yy"
     { (yyval.en) = (yyvsp[(3) - (5)].en); }
     break;
@@ -7489,5 +7489,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1678 "parser.yy"
+#line 1677 "parser.yy"
     { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Range), (yyvsp[(3) - (7)].en), (yyvsp[(5) - (7)].en)); }
     break;
@@ -7496,5 +7496,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1680 "parser.yy"
+#line 1679 "parser.yy"
     { (yyval.en) = (yyvsp[(4) - (6)].en); }
     break;
@@ -7503,5 +7503,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1705 "parser.yy"
+#line 1704 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -7510,5 +7510,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1707 "parser.yy"
+#line 1706 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7517,5 +7517,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1709 "parser.yy"
+#line 1708 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->addQualifiers( (yyvsp[(2) - (3)].decl) )->addQualifiers( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -7524,5 +7524,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1714 "parser.yy"
+#line 1713 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(1) - (4)].tok), (yyvsp[(3) - (4)].en) ); }
     break;
@@ -7531,5 +7531,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1716 "parser.yy"
+#line 1715 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFromTypeGen( (yyvsp[(2) - (5)].tok), (yyvsp[(4) - (5)].en) )->addQualifiers( (yyvsp[(1) - (5)].decl) ); }
     break;
@@ -7538,5 +7538,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1718 "parser.yy"
+#line 1717 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addQualifiers( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7545,5 +7545,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1724 "parser.yy"
+#line 1723 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->appendList( (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -7552,5 +7552,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1729 "parser.yy"
+#line 1728 "parser.yy"
     { typedefTable.addToEnclosingScope(*((yyvsp[(2) - (2)].tok)), TypedefTable::TD); }
     break;
@@ -7559,5 +7559,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1731 "parser.yy"
+#line 1730 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTypeParam( (yyvsp[(1) - (4)].tclass), (yyvsp[(2) - (4)].tok) )->addAssertions( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -7566,5 +7566,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1737 "parser.yy"
+#line 1736 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Type; }
     break;
@@ -7573,5 +7573,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1739 "parser.yy"
+#line 1738 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Ftype; }
     break;
@@ -7580,5 +7580,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1741 "parser.yy"
+#line 1740 "parser.yy"
     { (yyval.tclass) = DeclarationNode::Dtype; }
     break;
@@ -7587,5 +7587,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1746 "parser.yy"
+#line 1745 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7594,5 +7594,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1748 "parser.yy"
+#line 1747 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl) == 0 ? (yyvsp[(2) - (2)].decl) : (yyvsp[(1) - (2)].decl)->appendList( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7601,5 +7601,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1753 "parser.yy"
+#line 1752 "parser.yy"
     {
 			typedefTable.openContext( *((yyvsp[(2) - (5)].tok)) );
@@ -7611,5 +7611,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1758 "parser.yy"
+#line 1757 "parser.yy"
     { (yyval.decl) = (yyvsp[(4) - (5)].decl); }
     break;
@@ -7618,5 +7618,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1760 "parser.yy"
+#line 1759 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7625,5 +7625,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1765 "parser.yy"
+#line 1764 "parser.yy"
     { (yyval.en) = new TypeValueNode( (yyvsp[(1) - (1)].decl) ); }
     break;
@@ -7632,5 +7632,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1768 "parser.yy"
+#line 1767 "parser.yy"
     { (yyval.en) = (ExpressionNode *)((yyvsp[(1) - (3)].en)->set_link(new TypeValueNode( (yyvsp[(3) - (3)].decl) ))); }
     break;
@@ -7639,5 +7639,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1770 "parser.yy"
+#line 1769 "parser.yy"
     { (yyval.en) = (ExpressionNode *)((yyvsp[(1) - (3)].en)->set_link((yyvsp[(3) - (3)].en))); }
     break;
@@ -7646,5 +7646,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1775 "parser.yy"
+#line 1774 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
@@ -7653,5 +7653,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1777 "parser.yy"
+#line 1776 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addQualifiers( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -7660,5 +7660,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1779 "parser.yy"
+#line 1778 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl)->copyStorageClasses( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -7667,5 +7667,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1784 "parser.yy"
+#line 1783 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addAssertions( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -7674,5 +7674,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1786 "parser.yy"
+#line 1785 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addAssertions( (yyvsp[(2) - (4)].decl) )->addType( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -7681,5 +7681,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1791 "parser.yy"
+#line 1790 "parser.yy"
     {
 			typedefTable.addToEnclosingScope(*((yyvsp[(1) - (1)].tok)), TypedefTable::TD);
@@ -7691,5 +7691,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1796 "parser.yy"
+#line 1795 "parser.yy"
     {
 			typedefTable.addToEnclosingScope(*((yyvsp[(1) - (6)].tok)), TypedefTable::TG);
@@ -7701,5 +7701,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1804 "parser.yy"
+#line 1803 "parser.yy"
     {
 			typedefTable.addToEnclosingScope(*((yyvsp[(2) - (9)].tok)), TypedefTable::ID );
@@ -7711,5 +7711,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1809 "parser.yy"
+#line 1808 "parser.yy"
     {
 			typedefTable.enterContext( *((yyvsp[(2) - (8)].tok)) );
@@ -7721,5 +7721,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1814 "parser.yy"
+#line 1813 "parser.yy"
     {
 			typedefTable.leaveContext();
@@ -7732,5 +7732,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1824 "parser.yy"
+#line 1823 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ); }
     break;
@@ -7739,5 +7739,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1834 "parser.yy"
+#line 1833 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7749,5 +7749,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1839 "parser.yy"
+#line 1838 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7759,5 +7759,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1844 "parser.yy"
+#line 1843 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( *((yyvsp[(5) - (5)].tok)), TypedefTable::ID );
@@ -7769,5 +7769,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1852 "parser.yy"
+#line 1851 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7779,5 +7779,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1857 "parser.yy"
+#line 1856 "parser.yy"
     {
 			typedefTable.addToEnclosingScope2( TypedefTable::ID );
@@ -7789,5 +7789,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1867 "parser.yy"
+#line 1866 "parser.yy"
     {}
     break;
@@ -7796,5 +7796,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1869 "parser.yy"
+#line 1868 "parser.yy"
     {
 			if ( theTree ) {
@@ -7809,5 +7809,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1881 "parser.yy"
+#line 1880 "parser.yy"
     { (yyval.decl) = ((yyvsp[(1) - (3)].decl) != NULL ) ? (yyvsp[(1) - (3)].decl)->appendList( (yyvsp[(3) - (3)].decl) ) : (yyvsp[(3) - (3)].decl); }
     break;
@@ -7816,5 +7816,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1886 "parser.yy"
+#line 1885 "parser.yy"
     { (yyval.decl) = 0; }
     break;
@@ -7823,5 +7823,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1894 "parser.yy"
+#line 1893 "parser.yy"
     {}
     break;
@@ -7830,5 +7830,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1896 "parser.yy"
+#line 1895 "parser.yy"
     {
 			linkageStack.push( linkage );
@@ -7840,5 +7840,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1901 "parser.yy"
+#line 1900 "parser.yy"
     {
 			linkage = linkageStack.top();
@@ -7851,5 +7851,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1907 "parser.yy"
+#line 1906 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl); }
     break;
@@ -7858,5 +7858,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1919 "parser.yy"
+#line 1918 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7869,5 +7869,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1925 "parser.yy"
+#line 1924 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7880,5 +7880,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1934 "parser.yy"
+#line 1933 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7891,5 +7891,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1940 "parser.yy"
+#line 1939 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7902,5 +7902,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1946 "parser.yy"
+#line 1945 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7913,5 +7913,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1952 "parser.yy"
+#line 1951 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7924,5 +7924,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1958 "parser.yy"
+#line 1957 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7935,5 +7935,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1966 "parser.yy"
+#line 1965 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7946,5 +7946,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1972 "parser.yy"
+#line 1971 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7957,5 +7957,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1980 "parser.yy"
+#line 1979 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7968,5 +7968,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 1986 "parser.yy"
+#line 1985 "parser.yy"
     {
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
@@ -7979,9 +7979,16 @@
 
 /* Line 1806 of yacc.c  */
-#line 2001 "parser.yy"
+#line 2000 "parser.yy"
     { (yyval.en) = new CompositeExprNode(new OperatorNode(OperatorNode::Range), (yyvsp[(1) - (3)].en), (yyvsp[(3) - (3)].en)); }
     break;
 
   case 539:
+
+/* Line 1806 of yacc.c  */
+#line 2034 "parser.yy"
+    {}
+    break;
+
+  case 540:
 
 /* Line 1806 of yacc.c  */
@@ -7990,5 +7997,5 @@
     break;
 
-  case 540:
+  case 541:
 
 /* Line 1806 of yacc.c  */
@@ -7997,5 +8004,5 @@
     break;
 
-  case 541:
+  case 542:
 
 /* Line 1806 of yacc.c  */
@@ -8004,15 +8011,8 @@
     break;
 
-  case 542:
-
-/* Line 1806 of yacc.c  */
-#line 2038 "parser.yy"
-    {}
-    break;
-
   case 547:
 
 /* Line 1806 of yacc.c  */
-#line 2081 "parser.yy"
+#line 2080 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *((yyvsp[(1) - (1)].tok)) );
@@ -8024,5 +8024,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2086 "parser.yy"
+#line 2085 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8031,5 +8031,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2091 "parser.yy"
+#line 2090 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8038,5 +8038,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2093 "parser.yy"
+#line 2092 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8045,5 +8045,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2095 "parser.yy"
+#line 2094 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8052,5 +8052,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2100 "parser.yy"
+#line 2099 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8059,5 +8059,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2102 "parser.yy"
+#line 2101 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8066,5 +8066,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2104 "parser.yy"
+#line 2103 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8073,5 +8073,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2106 "parser.yy"
+#line 2105 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8080,5 +8080,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2111 "parser.yy"
+#line 2110 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8087,5 +8087,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2113 "parser.yy"
+#line 2112 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8094,5 +8094,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2129 "parser.yy"
+#line 2128 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8101,5 +8101,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2131 "parser.yy"
+#line 2130 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8108,5 +8108,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2133 "parser.yy"
+#line 2132 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8115,5 +8115,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2138 "parser.yy"
+#line 2137 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8122,5 +8122,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2140 "parser.yy"
+#line 2139 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8129,5 +8129,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2142 "parser.yy"
+#line 2141 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8136,5 +8136,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2147 "parser.yy"
+#line 2146 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8143,5 +8143,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2149 "parser.yy"
+#line 2148 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8150,5 +8150,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2151 "parser.yy"
+#line 2150 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8157,5 +8157,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2166 "parser.yy"
+#line 2165 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (4)].decl)->addIdList( (yyvsp[(3) - (4)].decl) ); }
     break;
@@ -8164,5 +8164,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2168 "parser.yy"
+#line 2167 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (6)].decl)->addIdList( (yyvsp[(5) - (6)].decl) ); }
     break;
@@ -8171,5 +8171,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2170 "parser.yy"
+#line 2169 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8178,5 +8178,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2175 "parser.yy"
+#line 2174 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8185,5 +8185,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2177 "parser.yy"
+#line 2176 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8192,5 +8192,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2179 "parser.yy"
+#line 2178 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8199,5 +8199,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2184 "parser.yy"
+#line 2183 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8206,5 +8206,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2186 "parser.yy"
+#line 2185 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8213,5 +8213,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2188 "parser.yy"
+#line 2187 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8220,5 +8220,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2210 "parser.yy"
+#line 2209 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *((yyvsp[(1) - (1)].tok)) );
@@ -8230,5 +8230,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2215 "parser.yy"
+#line 2214 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8237,5 +8237,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2220 "parser.yy"
+#line 2219 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8244,5 +8244,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2222 "parser.yy"
+#line 2221 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8251,5 +8251,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2224 "parser.yy"
+#line 2223 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8258,5 +8258,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2229 "parser.yy"
+#line 2228 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8265,5 +8265,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2231 "parser.yy"
+#line 2230 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8272,5 +8272,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2233 "parser.yy"
+#line 2232 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8279,5 +8279,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2235 "parser.yy"
+#line 2234 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8286,5 +8286,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2240 "parser.yy"
+#line 2239 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8293,5 +8293,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2242 "parser.yy"
+#line 2241 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8300,5 +8300,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2244 "parser.yy"
+#line 2243 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8307,5 +8307,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2261 "parser.yy"
+#line 2260 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8314,5 +8314,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2263 "parser.yy"
+#line 2262 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8321,5 +8321,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2265 "parser.yy"
+#line 2264 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8328,5 +8328,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2270 "parser.yy"
+#line 2269 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8335,5 +8335,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2272 "parser.yy"
+#line 2271 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8342,5 +8342,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2274 "parser.yy"
+#line 2273 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8349,5 +8349,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2276 "parser.yy"
+#line 2275 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8356,5 +8356,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2281 "parser.yy"
+#line 2280 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8363,5 +8363,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2283 "parser.yy"
+#line 2282 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8370,5 +8370,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2285 "parser.yy"
+#line 2284 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8377,5 +8377,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2323 "parser.yy"
+#line 2322 "parser.yy"
     {
 			typedefTable.setNextIdentifier( *((yyvsp[(1) - (1)].tok)) );
@@ -8387,5 +8387,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2331 "parser.yy"
+#line 2330 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8394,5 +8394,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2333 "parser.yy"
+#line 2332 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8401,5 +8401,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2335 "parser.yy"
+#line 2334 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8408,5 +8408,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2340 "parser.yy"
+#line 2339 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8415,5 +8415,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2342 "parser.yy"
+#line 2341 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8422,5 +8422,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2347 "parser.yy"
+#line 2346 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addParamList( (yyvsp[(4) - (6)].decl) ); }
     break;
@@ -8429,5 +8429,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2349 "parser.yy"
+#line 2348 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8436,5 +8436,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2369 "parser.yy"
+#line 2368 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8443,5 +8443,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2371 "parser.yy"
+#line 2370 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8450,5 +8450,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2373 "parser.yy"
+#line 2372 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8457,5 +8457,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2375 "parser.yy"
+#line 2374 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8464,5 +8464,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2377 "parser.yy"
+#line 2376 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8471,5 +8471,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2383 "parser.yy"
+#line 2382 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8478,5 +8478,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2385 "parser.yy"
+#line 2384 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8485,5 +8485,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2387 "parser.yy"
+#line 2386 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8492,5 +8492,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2392 "parser.yy"
+#line 2391 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     break;
@@ -8499,5 +8499,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2394 "parser.yy"
+#line 2393 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8506,5 +8506,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2396 "parser.yy"
+#line 2395 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8513,5 +8513,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2402 "parser.yy"
+#line 2401 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     break;
@@ -8520,5 +8520,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2404 "parser.yy"
+#line 2403 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false )->addArray( (yyvsp[(5) - (5)].decl) ); }
     break;
@@ -8527,5 +8527,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2410 "parser.yy"
+#line 2409 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(3) - (5)].en), 0, false ); }
     break;
@@ -8534,5 +8534,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2412 "parser.yy"
+#line 2411 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( 0 ); }
     break;
@@ -8541,5 +8541,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2414 "parser.yy"
+#line 2413 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newArray( (yyvsp[(4) - (6)].en), 0, false ) ); }
     break;
@@ -8548,5 +8548,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2416 "parser.yy"
+#line 2415 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (6)].decl)->addArray( DeclarationNode::newVarArray( 0 ) ); }
     break;
@@ -8555,5 +8555,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2436 "parser.yy"
+#line 2435 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8562,5 +8562,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2438 "parser.yy"
+#line 2437 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8569,5 +8569,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2440 "parser.yy"
+#line 2439 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8576,5 +8576,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2442 "parser.yy"
+#line 2441 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8583,5 +8583,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2444 "parser.yy"
+#line 2443 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8590,5 +8590,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2450 "parser.yy"
+#line 2449 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8597,5 +8597,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2452 "parser.yy"
+#line 2451 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8604,5 +8604,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2454 "parser.yy"
+#line 2453 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8611,5 +8611,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2459 "parser.yy"
+#line 2458 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, 0, (yyvsp[(3) - (5)].decl), 0 ); }
     break;
@@ -8618,5 +8618,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2461 "parser.yy"
+#line 2460 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8625,5 +8625,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2463 "parser.yy"
+#line 2462 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8632,5 +8632,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2470 "parser.yy"
+#line 2469 "parser.yy"
     { (yyval.decl) = (yyvsp[(1) - (2)].decl)->addArray( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8639,5 +8639,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2482 "parser.yy"
+#line 2481 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, 0, false ); }
     break;
@@ -8646,5 +8646,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2485 "parser.yy"
+#line 2484 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
@@ -8653,5 +8653,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2487 "parser.yy"
+#line 2486 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( 0, (yyvsp[(3) - (5)].decl), false ); }
     break;
@@ -8660,5 +8660,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2490 "parser.yy"
+#line 2489 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
@@ -8667,5 +8667,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2492 "parser.yy"
+#line 2491 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl), true ); }
     break;
@@ -8674,5 +8674,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2494 "parser.yy"
+#line 2493 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(3) - (7)].decl), true ); }
     break;
@@ -8681,5 +8681,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2513 "parser.yy"
+#line 2512 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( 0 ); }
     break;
@@ -8688,5 +8688,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2515 "parser.yy"
+#line 2514 "parser.yy"
     { (yyval.decl) = DeclarationNode::newPointer( (yyvsp[(2) - (2)].decl) ); }
     break;
@@ -8695,5 +8695,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2517 "parser.yy"
+#line 2516 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8702,5 +8702,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2519 "parser.yy"
+#line 2518 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addPointer( DeclarationNode::newPointer( (yyvsp[(2) - (3)].decl) ) ); }
     break;
@@ -8709,5 +8709,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2521 "parser.yy"
+#line 2520 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8716,5 +8716,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2527 "parser.yy"
+#line 2526 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8723,5 +8723,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2529 "parser.yy"
+#line 2528 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (4)].decl)->addArray( (yyvsp[(4) - (4)].decl) ); }
     break;
@@ -8730,5 +8730,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2531 "parser.yy"
+#line 2530 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8737,5 +8737,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2536 "parser.yy"
+#line 2535 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (8)].decl)->addParamList( (yyvsp[(6) - (8)].decl) ); }
     break;
@@ -8744,5 +8744,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2538 "parser.yy"
+#line 2537 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (3)].decl); }
     break;
@@ -8751,5 +8751,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2548 "parser.yy"
+#line 2547 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8758,5 +8758,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2558 "parser.yy"
+#line 2557 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8765,5 +8765,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2560 "parser.yy"
+#line 2559 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8772,5 +8772,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2562 "parser.yy"
+#line 2561 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8779,5 +8779,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2564 "parser.yy"
+#line 2563 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8786,5 +8786,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2566 "parser.yy"
+#line 2565 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8793,5 +8793,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2568 "parser.yy"
+#line 2567 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8800,5 +8800,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2575 "parser.yy"
+#line 2574 "parser.yy"
     { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8807,5 +8807,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2577 "parser.yy"
+#line 2576 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8814,5 +8814,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2579 "parser.yy"
+#line 2578 "parser.yy"
     { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8821,5 +8821,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2581 "parser.yy"
+#line 2580 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -8828,5 +8828,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2583 "parser.yy"
+#line 2582 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8835,5 +8835,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2585 "parser.yy"
+#line 2584 "parser.yy"
     { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8842,5 +8842,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2587 "parser.yy"
+#line 2586 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8849,5 +8849,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2589 "parser.yy"
+#line 2588 "parser.yy"
     { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8856,5 +8856,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2591 "parser.yy"
+#line 2590 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewArray( (yyvsp[(2) - (3)].decl) )->addNewArray( (yyvsp[(1) - (3)].decl) ); }
     break;
@@ -8863,5 +8863,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2593 "parser.yy"
+#line 2592 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8870,5 +8870,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2598 "parser.yy"
+#line 2597 "parser.yy"
     { (yyval.decl) = DeclarationNode::newVarArray( (yyvsp[(3) - (6)].decl) ); }
     break;
@@ -8877,5 +8877,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2600 "parser.yy"
+#line 2599 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), false ); }
     break;
@@ -8884,5 +8884,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2605 "parser.yy"
+#line 2604 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(4) - (6)].en), (yyvsp[(3) - (6)].decl), true ); }
     break;
@@ -8891,5 +8891,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2607 "parser.yy"
+#line 2606 "parser.yy"
     { (yyval.decl) = DeclarationNode::newArray( (yyvsp[(5) - (7)].en), (yyvsp[(4) - (7)].decl)->addQualifiers( (yyvsp[(3) - (7)].decl) ), true ); }
     break;
@@ -8898,5 +8898,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2634 "parser.yy"
+#line 2633 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addQualifiers( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8905,5 +8905,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2645 "parser.yy"
+#line 2644 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8912,5 +8912,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2647 "parser.yy"
+#line 2646 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8919,5 +8919,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2649 "parser.yy"
+#line 2648 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8926,5 +8926,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2651 "parser.yy"
+#line 2650 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8933,5 +8933,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2653 "parser.yy"
+#line 2652 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewPointer( DeclarationNode::newPointer( 0 ) ); }
     break;
@@ -8940,5 +8940,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2655 "parser.yy"
+#line 2654 "parser.yy"
     { (yyval.decl) = (yyvsp[(3) - (3)].decl)->addNewPointer( DeclarationNode::newPointer( (yyvsp[(1) - (3)].decl) ) ); }
     break;
@@ -8947,5 +8947,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2662 "parser.yy"
+#line 2661 "parser.yy"
     { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8954,5 +8954,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2664 "parser.yy"
+#line 2663 "parser.yy"
     { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8961,5 +8961,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2666 "parser.yy"
+#line 2665 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8968,5 +8968,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2668 "parser.yy"
+#line 2667 "parser.yy"
     { (yyval.decl) = (yyvsp[(5) - (5)].decl)->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8975,5 +8975,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2670 "parser.yy"
+#line 2669 "parser.yy"
     { (yyval.decl) = (yyvsp[(6) - (6)].decl)->addNewArray( (yyvsp[(5) - (6)].decl) )->addNewArray( DeclarationNode::newArray( 0, 0, false ) ); }
     break;
@@ -8982,5 +8982,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2672 "parser.yy"
+#line 2671 "parser.yy"
     { (yyval.decl) = (yyvsp[(2) - (2)].decl)->addNewArray( (yyvsp[(1) - (2)].decl) ); }
     break;
@@ -8989,5 +8989,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2677 "parser.yy"
+#line 2676 "parser.yy"
     { (yyval.decl) = DeclarationNode::newTuple( (yyvsp[(3) - (5)].decl) ); }
     break;
@@ -8996,5 +8996,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2682 "parser.yy"
+#line 2681 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, DeclarationNode::newTuple( 0 ), (yyvsp[(6) - (7)].decl), 0 ); }
     break;
@@ -9003,5 +9003,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2684 "parser.yy"
+#line 2683 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     break;
@@ -9010,5 +9010,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2686 "parser.yy"
+#line 2685 "parser.yy"
     { (yyval.decl) = DeclarationNode::newFunction( 0, (yyvsp[(1) - (6)].decl), (yyvsp[(4) - (6)].decl), 0 ); }
     break;
@@ -9017,5 +9017,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2712 "parser.yy"
+#line 2711 "parser.yy"
     { (yyval.en) = 0; }
     break;
@@ -9024,5 +9024,5 @@
 
 /* Line 1806 of yacc.c  */
-#line 2714 "parser.yy"
+#line 2713 "parser.yy"
     { (yyval.en) = (yyvsp[(2) - (2)].en); }
     break;
@@ -9262,5 +9262,5 @@
 
 /* Line 2067 of yacc.c  */
-#line 2717 "parser.yy"
+#line 2716 "parser.yy"
 
 // ----end of grammar----
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/Parser/parser.yy	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun May 31 18:50:30 2015
-// Update Count     : 1016
+// Last Modified On : Wed Jun  3 22:03:06 2015
+// Update Count     : 1020
 // 
 
@@ -770,5 +770,4 @@
 		{ $$ = new ForCtlExprNode($1, $4, $6); }
 	| declaration comma_expression_opt ';' comma_expression_opt // C99
-		// Like C++, the loop index can be declared local to the loop.
 		{ $$ = new ForCtlExprNode($1, $2, $4); }
 	;
Index: src/SynTree/Statement.h
===================================================================
--- src/SynTree/Statement.h	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/SynTree/Statement.h	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Rob Schluntz
-// Last Modified On : Wed May 27 15:40:43 2015
-// Update Count     : 5
+// Last Modified By : Peter A. Buhr
+// Last Modified On : Wed Jun  3 11:55:15 2015
+// Update Count     : 6
 //
 
Index: src/Tests/SynTree/make-rules
===================================================================
--- src/Tests/SynTree/make-rules	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/Tests/SynTree/make-rules	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -14,6 +14,6 @@
 	rm -f $@
 	@for i in $(TESTS); do \
-	  echo "---"`basename $$i`"---" | tee -a $@; \
-	  $(DIFF) -B -w $(EXPECTDIR)/`basename $$i` $$i | tee -a $@; \
+	     echo "---"`basename $$i`"---" | tee -a $@; \
+	     $(DIFF) -B -w $(EXPECTDIR)/`basename $$i` $$i | tee -a $@; \
 	done
 
Index: src/Tests/SynTree/run-tests.sh
===================================================================
--- src/Tests/SynTree/run-tests.sh	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/Tests/SynTree/run-tests.sh	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -6,5 +6,5 @@
 }
 
-dotest "" -ns "$*"
-dotest -SymTab -nm "$*"
+dotest "" -na "$*"
+dotest -SymTab -ns "$*"
 #dotest -Validate -v "$*"
Index: src/examples/control_structures.c
===================================================================
--- src/examples/control_structures.c	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/examples/control_structures.c	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -10,12 +10,14 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed May 27 18:07:42 2015
-// Update Count     : 1
+// Last Modified On : Thu Jun  4 11:21:12 2015
+// Update Count     : 23
 //
 
 int main() {
 	L1: {
-		L2: switch ( 3_333_333 ) {						// underscores in constant
-			case 1,2,3:									// 4~8, 4...8 not working
+		L2:	switch ( 3_333_333 ) {						// underscores in constant
+		  case 1,2,3:									// CFA
+		  case 4~8:										// CFA
+		  case 9 ... 10:								// gcc, must have spaces
 				L3: for ( ;; ) {
 					L4: for ( ;; ) {
@@ -24,5 +26,4 @@
 						break L3;
 						break L4;
-
 						//continue L1;					// labelled continue - should be an error 
 						//continue L2;					// should be an error
@@ -38,10 +39,11 @@
 		int i, j;
 		choose ( 7 ) {
-			case 1,2,3:
-				i = 3;
-				fallthru;
-			case 4,5,6:
-				j = 3;
-			default: ;
+		  case 1,2,3:
+			i = 3;
+			4;
+			fallthru;
+		  case 4,5,6:
+			j = 3;
+		  default: ;
 		} // choose
 	} // block
Index: src/examples/includes.c
===================================================================
--- src/examples/includes.c	(revision 30651b061fc903c716c0acd424112934cf8aaedb)
+++ src/examples/includes.c	(revision a61fea9ae36d50374d924b984ee54318ba2d7f61)
@@ -10,6 +10,6 @@
 // Created On       : Wed May 27 17:56:53 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed May 27 18:17:04 2015
-// Update Count     : 1
+// Last Modified On : Wed Jun  3 23:48:26 2015
+// Update Count     : 6
 //
 
@@ -49,5 +49,5 @@
 #include <curses.h>
 #else
-#include <time.h>		// FAILS -- includes locale.h
+#include <curses.h>
 #endif // 0
 
