Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision 6a276a0140dbe5eae280c54cd96c18e62af5882b)
+++ src/Parser/StatementNode.cc	(revision 61fc4f680f705e73db121612bf6434f3dd95ce97)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 14:59:41 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar  8 14:31:32 2018
-// Update Count     : 348
+// Last Modified On : Sun Apr 29 14:21:45 2018
+// Update Count     : 353
 //
 
@@ -33,9 +33,9 @@
 
 
-StatementNode::StatementNode( DeclarationNode *decl ) {
+StatementNode::StatementNode( DeclarationNode * decl ) {
 	assert( decl );
-	DeclarationNode *agg = decl->extractAggregate();
+	DeclarationNode * agg = decl->extractAggregate();
 	if ( agg ) {
-		StatementNode *nextStmt = new StatementNode( new DeclStmt( maybeBuild< Declaration >( decl ) ) );
+		StatementNode * nextStmt = new StatementNode( new DeclStmt( maybeBuild< Declaration >( decl ) ) );
 		set_next( nextStmt );
 		if ( decl->get_next() ) {
@@ -53,14 +53,14 @@
 } // StatementNode::StatementNode
 
-StatementNode *StatementNode::append_last_case( StatementNode *stmt ) {
-	StatementNode *prev = this;
+StatementNode * StatementNode::append_last_case( StatementNode * stmt ) {
+	StatementNode * prev = this;
 	// find end of list and maintain previous pointer
 	for ( StatementNode * curr = prev; curr != nullptr; curr = (StatementNode *)curr->get_next() ) {
-		StatementNode *node = strict_dynamic_cast< StatementNode * >(curr);
+		StatementNode * node = strict_dynamic_cast< StatementNode * >(curr);
 		assert( dynamic_cast< CaseStmt * >(node->stmt.get()) );
 		prev = curr;
 	} // for
 	// convert from StatementNode list to Statement list
-	StatementNode *node = dynamic_cast< StatementNode * >(prev);
+	StatementNode * node = dynamic_cast< StatementNode * >(prev);
 	std::list< Statement * > stmts;
 	buildMoveList( stmt, stmts );
@@ -71,6 +71,6 @@
 }
 
-Statement *build_expr( ExpressionNode *ctl ) {
-	Expression *e = maybeMoveBuild< Expression >( ctl );
+Statement * build_expr( ExpressionNode * ctl ) {
+	Expression * e = maybeMoveBuild< Expression >( ctl );
 
 	if ( e )
@@ -80,6 +80,6 @@
 }
 
-Statement *build_if( IfCtl * ctl, StatementNode *then_stmt, StatementNode *else_stmt ) {
-	Statement *thenb, *elseb = 0;
+Statement * build_if( IfCtl * ctl, StatementNode * then_stmt, StatementNode * else_stmt ) {
+	Statement * thenb, * elseb = 0;
 	std::list< Statement * > branches;
 	buildMoveList< Statement, StatementNode >( then_stmt, branches );
@@ -116,5 +116,5 @@
 }
 
-Statement *build_switch( bool isSwitch, ExpressionNode *ctl, StatementNode *stmt ) {
+Statement * build_switch( bool isSwitch, ExpressionNode * ctl, StatementNode * stmt ) {
 	std::list< Statement * > branches;
 	buildMoveList< Statement, StatementNode >( stmt, branches );
@@ -131,14 +131,14 @@
 	return new SwitchStmt( maybeMoveBuild< Expression >(ctl), branches );
 }
-Statement *build_case( ExpressionNode *ctl ) {
+Statement * build_case( ExpressionNode * ctl ) {
 	std::list< Statement * > branches;
 	return new CaseStmt( maybeMoveBuild< Expression >(ctl), branches );
 }
-Statement *build_default() {
+Statement * build_default() {
 	std::list< Statement * > branches;
 	return new CaseStmt( nullptr, branches, true );
 }
 
-Statement *build_while( ExpressionNode *ctl, StatementNode *stmt, bool kind ) {
+Statement * build_while( ExpressionNode * ctl, StatementNode * stmt, bool kind ) {
 	std::list< Statement * > branches;
 	buildMoveList< Statement, StatementNode >( stmt, branches );
@@ -147,5 +147,5 @@
 }
 
-Statement *build_for( ForCtl *forctl, StatementNode *stmt ) {
+Statement * build_for( ForCtl * forctl, StatementNode * stmt ) {
 	std::list< Statement * > branches;
 	buildMoveList< Statement, StatementNode >( stmt, branches );
@@ -157,9 +157,9 @@
 	} // if
 
-	Expression *cond = 0;
+	Expression * cond = 0;
 	if ( forctl->condition != 0 )
 		cond = notZeroExpr( maybeMoveBuild< Expression >(forctl->condition) );
 
-	Expression *incr = 0;
+	Expression * incr = 0;
 	if ( forctl->change != 0 )
 		incr = maybeMoveBuild< Expression >(forctl->change);
@@ -169,18 +169,18 @@
 }
 
-Statement *build_branch( BranchStmt::Type kind ) {
+Statement * build_branch( BranchStmt::Type kind ) {
 	Statement * ret = new BranchStmt( "", kind );
 	return ret;
 }
-Statement *build_branch( std::string *identifier, BranchStmt::Type kind ) {
-	Statement * ret = new BranchStmt( *identifier, kind );
+Statement * build_branch( std::string * identifier, BranchStmt::Type kind ) {
+	Statement * ret = new BranchStmt( * identifier, kind );
 	delete identifier; 									// allocated by lexer
 	return ret;
 }
-Statement *build_computedgoto( ExpressionNode *ctl ) {
+Statement * build_computedgoto( ExpressionNode * ctl ) {
 	return new BranchStmt( maybeMoveBuild< Expression >(ctl), BranchStmt::Goto );
 }
 
-Statement *build_return( ExpressionNode *ctl ) {
+Statement * build_return( ExpressionNode * ctl ) {
 	std::list< Expression * > exps;
 	buildMoveList( ctl, exps );
@@ -188,5 +188,5 @@
 }
 
-Statement *build_throw( ExpressionNode *ctl ) {
+Statement * build_throw( ExpressionNode * ctl ) {
 	std::list< Expression * > exps;
 	buildMoveList( ctl, exps );
@@ -195,5 +195,5 @@
 }
 
-Statement *build_resume( ExpressionNode *ctl ) {
+Statement * build_resume( ExpressionNode * ctl ) {
 	std::list< Expression * > exps;
 	buildMoveList( ctl, exps );
@@ -202,5 +202,5 @@
 }
 
-Statement *build_resume_at( ExpressionNode *ctl, ExpressionNode *target ) {
+Statement * build_resume_at( ExpressionNode * ctl, ExpressionNode * target ) {
 	(void)ctl;
 	(void)target;
@@ -208,12 +208,12 @@
 }
 
-Statement *build_try( StatementNode *try_stmt, StatementNode *catch_stmt, StatementNode *finally_stmt ) {
+Statement * build_try( StatementNode * try_stmt, StatementNode * catch_stmt, StatementNode * finally_stmt ) {
 	std::list< CatchStmt * > branches;
 	buildMoveList< CatchStmt, StatementNode >( catch_stmt, branches );
-	CompoundStmt *tryBlock = strict_dynamic_cast< CompoundStmt * >(maybeMoveBuild< Statement >(try_stmt));
-	FinallyStmt *finallyBlock = dynamic_cast< FinallyStmt * >(maybeMoveBuild< Statement >(finally_stmt) );
+	CompoundStmt * tryBlock = strict_dynamic_cast< CompoundStmt * >(maybeMoveBuild< Statement >(try_stmt));
+	FinallyStmt * finallyBlock = dynamic_cast< FinallyStmt * >(maybeMoveBuild< Statement >(finally_stmt) );
 	return new TryStmt( tryBlock, branches, finallyBlock );
 }
-Statement *build_catch( CatchStmt::Kind kind, DeclarationNode *decl, ExpressionNode *cond, StatementNode *body ) {
+Statement * build_catch( CatchStmt::Kind kind, DeclarationNode * decl, ExpressionNode * cond, StatementNode * body ) {
 	std::list< Statement * > branches;
 	buildMoveList< Statement, StatementNode >( body, branches );
@@ -221,5 +221,5 @@
 	return new CatchStmt( kind, maybeMoveBuild< Declaration >(decl), maybeMoveBuild< Expression >(cond), branches.front() );
 }
-Statement *build_finally( StatementNode *stmt ) {
+Statement * build_finally( StatementNode * stmt ) {
 	std::list< Statement * > branches;
 	buildMoveList< Statement, StatementNode >( stmt, branches );
@@ -304,11 +304,11 @@
 }
 
-Statement *build_compound( StatementNode *first ) {
-	CompoundStmt *cs = new CompoundStmt();
+Statement * build_compound( StatementNode * first ) {
+	CompoundStmt * cs = new CompoundStmt();
 	buildMoveList( first, cs->get_kids() );
 	return cs;
 }
 
-Statement *build_asmstmt( bool voltile, Expression *instruction, ExpressionNode *output, ExpressionNode *input, ExpressionNode *clobber, LabelNode *gotolabels ) {
+Statement * build_asmstmt( bool voltile, Expression * instruction, ExpressionNode * output, ExpressionNode * input, ExpressionNode * clobber, LabelNode * gotolabels ) {
 	std::list< Expression * > out, in;
 	std::list< ConstantExpr * > clob;
@@ -318,4 +318,9 @@
 	buildMoveList( clobber, clob );
 	return new AsmStmt( voltile, instruction, out, in, clob, gotolabels ? gotolabels->labels : noLabels );
+}
+
+Statement * build_dirstmt( string * directive ) {
+	cout << *directive << endl;
+	return nullptr;
 }
 
