Index: src/SynTree/BaseSyntaxNode.h
===================================================================
--- src/SynTree/BaseSyntaxNode.h	(revision 294647bb36b8887ef83cb50ce4390321fab6d613)
+++ src/SynTree/BaseSyntaxNode.h	(revision 294647bb36b8887ef83cb50ce4390321fab6d613)
@@ -0,0 +1,32 @@
+//
+// 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.
+//
+// BaseSyntaxNode.h --
+//
+// Author           : Thierry Delisle
+// Created On       : Tue Feb 14 07:44:20 2017
+// Last Modified By :
+// Last Modified On :
+// Update Count     :
+//
+
+#ifndef BASE_SYNTAX_NODE_H
+#define BASE_SYNTAX_NODE_H
+
+#include "Common/utility.h"
+
+class BaseSyntaxNode {
+  public:
+	CodeLocation location;
+};
+
+#endif // BASE_SYNTAX_NODE_H
+
+// Local Variables: //
+// tab-width: 4 //
+// mode: c++ //
+// compile-command: "make install" //
+// End: //
Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision e9949120d825c73f9ad9af713b9677424d5f15e6)
+++ src/SynTree/Declaration.h	(revision 294647bb36b8887ef83cb50ce4390321fab6d613)
@@ -17,12 +17,14 @@
 #define DECLARATION_H
 
+#include <string>
+
+#include "BaseSyntaxNode.h"
+#include "Mutator.h"
+#include "Visitor.h"
 #include "SynTree.h"
-#include "Visitor.h"
-#include "Mutator.h"
 #include "Parser/LinkageSpec.h"
 #include "Parser/ParseNode.h"
-#include <string>
-
-class Declaration {
+
+class Declaration : public BaseSyntaxNode {
   public:
 	Declaration( const std::string &name, DeclarationNode::StorageClass sc, LinkageSpec::Spec linkage );
Index: src/SynTree/Expression.h
===================================================================
--- src/SynTree/Expression.h	(revision e9949120d825c73f9ad9af713b9677424d5f15e6)
+++ src/SynTree/Expression.h	(revision 294647bb36b8887ef83cb50ce4390321fab6d613)
@@ -19,12 +19,14 @@
 #include <map>
 #include <memory>
+
+#include "BaseSyntaxNode.h"
+#include "Constant.h"
+#include "Mutator.h"
 #include "SynTree.h"
 #include "Visitor.h"
-#include "Mutator.h"
-#include "Constant.h"
 #include "Common/UniqueName.h"
 
 /// Expression is the root type for all expressions
-class Expression {
+class Expression : public BaseSyntaxNode{
   public:
 	Expression( Expression * _aname = nullptr );
Index: src/SynTree/Initializer.h
===================================================================
--- src/SynTree/Initializer.h	(revision e9949120d825c73f9ad9af713b9677424d5f15e6)
+++ src/SynTree/Initializer.h	(revision 294647bb36b8887ef83cb50ce4390321fab6d613)
@@ -17,15 +17,16 @@
 #define INITIALIZER_H
 
+#include <cassert>
+
+#include "BaseSyntaxNode.h"
+#include "Mutator.h"
 #include "SynTree.h"
+#include "Type.h"
 #include "Visitor.h"
-#include "Mutator.h"
-#include "Type.h"
-
-#include <cassert>
 
 const std::list<Expression*> noDesignators;
 
 // Initializer: base class for object initializers (provide default values)
-class Initializer {
+class Initializer : public BaseSyntaxNode {
   public:
 	//	Initializer( std::string _name = std::string(""), int _pos = 0 );
Index: src/SynTree/Statement.h
===================================================================
--- src/SynTree/Statement.h	(revision e9949120d825c73f9ad9af713b9677424d5f15e6)
+++ src/SynTree/Statement.h	(revision 294647bb36b8887ef83cb50ce4390321fab6d613)
@@ -17,12 +17,13 @@
 #define STATEMENT_H
 
+#include "BaseSyntaxNode.h"
+#include "Label.h"
+#include "Mutator.h"
 #include "SynTree.h"
+#include "Type.h"
 #include "Visitor.h"
-#include "Mutator.h"
 #include "Common/SemanticError.h"
-#include "Type.h"
-#include "Label.h"
-
-class Statement {
+
+class Statement : public BaseSyntaxNode {
   public:
 	Statement( std::list<Label> labels );
