Index: src/SynTree/Statement.h
===================================================================
--- src/SynTree/Statement.h	(revision 6b0b624129f6017f7706b516a24a52e382e3a334)
+++ src/SynTree/Statement.h	(revision f6cc2096d769efbc869dcf738710880abb631748)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jul 22 09:54:32 2017
-// Update Count     : 68
+// Last Modified By : Andrew Beach
+// Last Modified On : Thr Aug  3 14:08:00 2017
+// Update Count     : 69
 //
 
@@ -26,4 +26,6 @@
 class Statement : public BaseSyntaxNode {
   public:
+	std::list<Label> labels;
+
 	Statement( std::list<Label> labels );
 	virtual ~Statement();
@@ -36,10 +38,10 @@
 	virtual Statement *acceptMutator( Mutator &m ) = 0;
 	virtual void print( std::ostream &os, int indent = 0 ) const;
-  protected:
-	std::list<Label> labels;
 };
 
 class CompoundStmt : public Statement {
   public:
+	std::list<Statement*> kids;
+
 	CompoundStmt( std::list<Label> labels );
 	CompoundStmt( const CompoundStmt &other );
@@ -54,6 +56,4 @@
 	virtual CompoundStmt *acceptMutator( Mutator &m ) { return m.mutate( this ); }
 	virtual void print( std::ostream &os, int indent = 0 ) const;
-  private:
-	std::list<Statement*> kids;
 };
 
@@ -67,10 +67,10 @@
 	virtual NullStmt *acceptMutator( Mutator &m ) { return m.mutate( this ); }
 	virtual void print( std::ostream &os, int indent = 0 ) const;
-
-  private:
 };
 
 class ExprStmt : public Statement {
   public:
+	Expression *expr;
+
 	ExprStmt( std::list<Label> labels, Expression *expr );
 	ExprStmt( const ExprStmt &other );
@@ -84,10 +84,14 @@
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
 	virtual void print( std::ostream &os, int indent = 0 ) const;
-  private:
-	Expression *expr;
 };
 
 class AsmStmt : public Statement {
   public:
+	bool voltile;
+	ConstantExpr *instruction;
+	std::list<Expression *> output, input;
+	std::list<ConstantExpr *> clobber;
+	std::list<Label> gotolabels;
+
 	AsmStmt( std::list<Label> labels, bool voltile, ConstantExpr *instruction, std::list<Expression *> input, std::list<Expression *> output, std::list<ConstantExpr *> clobber, std::list<Label> gotolabels );
 	AsmStmt( const AsmStmt &other );
@@ -111,14 +115,12 @@
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
 	virtual void print( std::ostream &os, int indent = 0 ) const;
-  private:
-	bool voltile;
-	ConstantExpr *instruction;
-	std::list<Expression *> output, input;
-	std::list<ConstantExpr *> clobber;
-	std::list<Label> gotolabels;
 };
 
 class IfStmt : public Statement {
   public:
+	Expression *condition;
+	Statement *thenPart;
+	Statement *elsePart;
+
 	IfStmt( std::list<Label> labels, Expression *condition, Statement *thenPart, Statement *elsePart );
 	IfStmt( const IfStmt &other );
@@ -136,12 +138,10 @@
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
 	virtual void print( std::ostream &os, int indent = 0 ) const;
-  private:
-	Expression *condition;
-	Statement *thenPart;
-	Statement *elsePart;
 };
 
 class SwitchStmt : public Statement {
   public:
+	Expression * condition;
+
 	SwitchStmt( std::list<Label> labels, Expression *condition, std::list<Statement *> &statements );
 	SwitchStmt( const SwitchStmt &other );
@@ -159,10 +159,12 @@
 	virtual void print( std::ostream &os, int indent = 0 ) const;
   private:
+	std::list<Statement *> statements;
+};
+
+class CaseStmt : public Statement {
+  public:
 	Expression * condition;
-	std::list<Statement *> statements;
-};
-
-class CaseStmt : public Statement {
-  public:
+	std::list<Statement *> stmts;
+
 	CaseStmt( std::list<Label> labels, Expression *conditions, std::list<Statement *> &stmts, bool isdef = false ) throw(SemanticError);
 	CaseStmt( const CaseStmt &other );
@@ -186,6 +188,4 @@
 	virtual void print( std::ostream &os, int indent = 0 ) const;
   private:
-	Expression * condition;
-	std::list<Statement *> stmts;
 	bool _isDefault;
 };
@@ -193,4 +193,8 @@
 class WhileStmt : public Statement {
   public:
+	Expression *condition;
+	Statement *body;
+	bool isDoWhile;
+
 	WhileStmt( std::list<Label> labels, Expression *condition,
 	       Statement *body, bool isDoWhile = false );
@@ -209,12 +213,13 @@
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
 	virtual void print( std::ostream &os, int indent = 0 ) const;
-  private:
+};
+
+class ForStmt : public Statement {
+  public:
+	std::list<Statement *> initialization;
 	Expression *condition;
+	Expression *increment;
 	Statement *body;
-	bool isDoWhile;
-};
-
-class ForStmt : public Statement {
-  public:
+
 	ForStmt( std::list<Label> labels, std::list<Statement *> initialization,
 	     Expression *condition = 0, Expression *increment = 0, Statement *body = 0 );
@@ -235,9 +240,4 @@
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
 	virtual void print( std::ostream &os, int indent = 0 ) const;
-  private:
-	std::list<Statement *> initialization;
-	Expression *condition;
-	Expression *increment;
-	Statement *body;
 };
 
@@ -245,4 +245,10 @@
   public:
 	enum Type { Goto = 0, Break, Continue };
+
+	// originalTarget kept for error messages.
+	const Label originalTarget;
+	Label target;
+	Expression *computedTarget;
+	Type type;
 
 	BranchStmt( std::list<Label> labels, Label target, Type ) throw (SemanticError);
@@ -265,12 +271,10 @@
   private:
 	static const char *brType[];
-	Label originalTarget;  // can give better error messages if we remember the label name that the user entered
-	Label target;
-	Expression *computedTarget;
-	Type type;
 };
 
 class ReturnStmt : public Statement {
   public:
+	Expression *expr;
+
 	ReturnStmt( std::list<Label> labels, Expression *expr );
 	ReturnStmt( const ReturnStmt &other );
@@ -284,6 +288,4 @@
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
 	virtual void print( std::ostream &os, int indent = 0 ) const;
-  private:
-	Expression *expr;
 };
 
@@ -291,4 +293,8 @@
   public:
 	enum Kind { Terminate, Resume };
+
+	const Kind kind;
+	Expression * expr;
+	Expression * target;
 
 	ThrowStmt( std::list<Label> labels, Kind kind, Expression * expr, Expression * target = nullptr );
@@ -306,12 +312,12 @@
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
 	virtual void print( std::ostream &os, int indent = 0 ) const;
-  private:
-	Kind kind;
-	Expression * expr;
-	Expression * target;
 };
 
 class TryStmt : public Statement {
   public:
+	CompoundStmt *block;
+	std::list<CatchStmt *> handlers;
+	FinallyStmt *finallyBlock;
+
 	TryStmt( std::list<Label> labels, CompoundStmt *tryBlock, std::list<CatchStmt *> &handlers, FinallyStmt *finallyBlock = 0 );
 	TryStmt( const TryStmt &other );
@@ -329,9 +335,4 @@
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
 	virtual void print( std::ostream &os, int indent = 0 ) const;
-
-  private:
-	CompoundStmt *block;
-	std::list<CatchStmt *> handlers;
-	FinallyStmt *finallyBlock;
 };
 
@@ -339,4 +340,9 @@
   public:
 	enum Kind { Terminate, Resume };
+
+	const Kind kind;
+	Declaration *decl;
+	Expression *cond;
+	Statement *body;
 
 	CatchStmt( std::list<Label> labels, Kind kind, Declaration *decl,
@@ -357,14 +363,10 @@
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
 	virtual void print( std::ostream &os, int indent = 0 ) const;
-
-  private:
-	Kind kind;
-	Declaration *decl;
-	Expression *cond;
-	Statement *body;
 };
 
 class FinallyStmt : public Statement {
   public:
+	CompoundStmt *block;
+
 	FinallyStmt( std::list<Label> labels, CompoundStmt *block );
 	FinallyStmt( const FinallyStmt &other );
@@ -378,6 +380,4 @@
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
 	virtual void print( std::ostream &os, int indent = 0 ) const;
-  private:
-	CompoundStmt *block;
 };
 
@@ -386,4 +386,6 @@
 class DeclStmt : public Statement {
   public:
+	Declaration *decl;
+
 	DeclStmt( std::list<Label> labels, Declaration *decl );
 	DeclStmt( const DeclStmt &other );
@@ -397,6 +399,4 @@
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
 	virtual void print( std::ostream &os, int indent = 0 ) const;
-  private:
-	Declaration *decl;
 };
 
@@ -407,4 +407,7 @@
 class ImplicitCtorDtorStmt : public Statement {
   public:
+	// Non-owned pointer to the constructor/destructor statement
+	Statement * callStmt;
+
 	ImplicitCtorDtorStmt( Statement * callStmt );
 	ImplicitCtorDtorStmt( const ImplicitCtorDtorStmt & other );
@@ -418,8 +421,4 @@
 	virtual Statement *acceptMutator( Mutator &m ) { return m.mutate( this ); }
 	virtual void print( std::ostream &os, int indent = 0 ) const;
-
-  private:
-	// Non-owned pointer to the constructor/destructor statement
-	Statement * callStmt;
 };
 
