Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision ba54f7dba922f0df27eebfcc9c67f07969df7db4)
+++ src/Parser/ExpressionNode.cc	(revision 39fea2f76762fc5d71214cc7fa748f729beb7ffa)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:17:07 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Sep 13 14:54:19 2017
-// Update Count     : 683
+// Last Modified On : Thu Sep 14 23:09:34 2017
+// Update Count     : 690
 //
 
@@ -363,24 +363,4 @@
 } // build_pfieldSel
 
-Expression * build_addressOf( ExpressionNode * expr_node ) {
-	return new AddressExpr( maybeMoveBuild< Expression >(expr_node) );
-} // build_addressOf
-
-Expression * build_sizeOfexpr( ExpressionNode * expr_node ) {
-	return new SizeofExpr( maybeMoveBuild< Expression >(expr_node) );
-} // build_sizeOfexpr
-
-Expression * build_sizeOftype( DeclarationNode * decl_node ) {
-	return new SizeofExpr( maybeMoveBuildType( decl_node ) );
-} // build_sizeOftype
-
-Expression * build_alignOfexpr( ExpressionNode * expr_node ) {
-	return new AlignofExpr( maybeMoveBuild< Expression >(expr_node) );
-} // build_alignOfexpr
-
-Expression * build_alignOftype( DeclarationNode * decl_node ) {
-	return new AlignofExpr( maybeMoveBuildType( decl_node) );
-} // build_alignOftype
-
 Expression * build_offsetOf( DeclarationNode * decl_node, NameExpr * member ) {
 	Expression * ret = new UntypedOffsetofExpr( maybeMoveBuildType( decl_node ), member->get_name() );
@@ -423,12 +403,4 @@
 } // build_cond
 
-Expression * build_attrexpr( NameExpr * var, ExpressionNode * expr_node ) {
-	return new AttrExpr( var, maybeMoveBuild< Expression >(expr_node) );
-} // build_attrexpr
-
-Expression * build_attrtype( NameExpr * var, DeclarationNode * decl_node ) {
-	return new AttrExpr( var, maybeMoveBuildType( decl_node ) );
-} // build_attrtype
-
 Expression * build_tuple( ExpressionNode * expr_node ) {
 	list< Expression * > exprs;
@@ -442,8 +414,4 @@
 	return new UntypedExpr( maybeMoveBuild< Expression >(function), args, nullptr );
 } // build_func
-
-Expression * build_range( ExpressionNode * low, ExpressionNode * high ) {
-	return new RangeExpr( maybeMoveBuild< Expression >( low ), maybeMoveBuild< Expression >( high ) );
-} // build_range
 
 Expression * build_compoundLiteral( DeclarationNode * decl_node, InitializerNode * kids ) {
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision ba54f7dba922f0df27eebfcc9c67f07969df7db4)
+++ src/Parser/ParseNode.h	(revision 39fea2f76762fc5d71214cc7fa748f729beb7ffa)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Sep 13 12:35:10 2017
-// Update Count     : 807
+// Last Modified On : Thu Sep 14 23:09:39 2017
+// Update Count     : 815
 //
 
@@ -175,9 +175,4 @@
 Expression * build_fieldSel( ExpressionNode * expr_node, Expression * member );
 Expression * build_pfieldSel( ExpressionNode * expr_node, Expression * member );
-Expression * build_addressOf( ExpressionNode * expr_node );
-Expression * build_sizeOfexpr( ExpressionNode * expr_node );
-Expression * build_sizeOftype( DeclarationNode * decl_node );
-Expression * build_alignOfexpr( ExpressionNode * expr_node );
-Expression * build_alignOftype( DeclarationNode * decl_node );
 Expression * build_offsetOf( DeclarationNode * decl_node, NameExpr * member );
 Expression * build_and( ExpressionNode * expr_node1, ExpressionNode * expr_node2 );
@@ -188,9 +183,6 @@
 Expression * build_binary_ptr( OperKinds op, ExpressionNode * expr_node1, ExpressionNode * expr_node2 );
 Expression * build_cond( ExpressionNode * expr_node1, ExpressionNode * expr_node2, ExpressionNode * expr_node3 );
-Expression * build_attrexpr( NameExpr * var, ExpressionNode * expr_node );
-Expression * build_attrtype( NameExpr * var, DeclarationNode * decl_node );
 Expression * build_tuple( ExpressionNode * expr_node = nullptr );
 Expression * build_func( ExpressionNode * function, ExpressionNode * expr_node );
-Expression * build_range( ExpressionNode * low, ExpressionNode * high );
 Expression * build_compoundLiteral( DeclarationNode * decl_node, InitializerNode * kids );
 
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision ba54f7dba922f0df27eebfcc9c67f07969df7db4)
+++ src/Parser/parser.yy	(revision 39fea2f76762fc5d71214cc7fa748f729beb7ffa)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Wed Sep 13 11:01:20 2017
-// Update Count     : 2803
+// Last Modified On : Thu Sep 14 23:07:12 2017
+// Update Count     : 2815
 //
 
@@ -563,5 +563,5 @@
 			switch ( $1 ) {
 			  case OperKinds::AddressOf:
-				$$ = new ExpressionNode( build_addressOf( $2 ) );
+				$$ = new ExpressionNode( new AddressExpr( maybeMoveBuild< Expression >( $2 ) ) );
 				break;
 			  case OperKinds::PointTo:
@@ -569,5 +569,5 @@
 				break;
 			  case OperKinds::And:
-				$$ = new ExpressionNode( new AddressExpr( build_addressOf( $2 ) ) );
+				$$ = new ExpressionNode( new AddressExpr( new AddressExpr( maybeMoveBuild< Expression >( $2 ) ) ) );
 				break;
 			  default:
@@ -582,19 +582,19 @@
 	  	{ $$ = new ExpressionNode( build_unary_ptr( OperKinds::Decr, $2 ) ); }
 	| SIZEOF unary_expression
-		{ $$ = new ExpressionNode( build_sizeOfexpr( $2 ) ); }
+		{ $$ = new ExpressionNode( new SizeofExpr( maybeMoveBuild< Expression >( $2 ) ) ); }
 	| SIZEOF '(' type_no_function ')'
-		{ $$ = new ExpressionNode( build_sizeOftype( $3 ) ); }
+		{ $$ = new ExpressionNode( new SizeofExpr( maybeMoveBuildType( $3 ) ) ); }
 	| ALIGNOF unary_expression							// GCC, variable alignment
-		{ $$ = new ExpressionNode( build_alignOfexpr( $2 ) ); }
+		{ $$ = new ExpressionNode( new AlignofExpr( maybeMoveBuild< Expression >( $2 ) ) ); }
 	| ALIGNOF '(' type_no_function ')'					// GCC, type alignment
-		{ $$ = new ExpressionNode( build_alignOftype( $3 ) ); }
+		{ $$ = new ExpressionNode( new AlignofExpr( maybeMoveBuildType( $3 ) ) ); }
 	| OFFSETOF '(' type_no_function ',' no_attr_identifier ')'
 		{ $$ = new ExpressionNode( build_offsetOf( $3, build_varref( $5 ) ) ); }
 	| ATTR_IDENTIFIER
-		{ $$ = new ExpressionNode( build_attrexpr( build_varref( $1 ), nullptr ) ); }
+		{ $$ = new ExpressionNode( new AttrExpr( build_varref( $1 ), maybeMoveBuild< Expression >( (ExpressionNode *)nullptr ) ) ); }
 	| ATTR_IDENTIFIER '(' argument_expression ')'
-		{ $$ = new ExpressionNode( build_attrexpr( build_varref( $1 ), $3 ) ); }
+		{ $$ = new ExpressionNode( new AttrExpr( build_varref( $1 ), maybeMoveBuild< Expression >( $3 ) ) ); }
 	| ATTR_IDENTIFIER '(' type ')'
-		{ $$ = new ExpressionNode( build_attrtype( build_varref( $1 ), $3 ) ); }
+		{ $$ = new ExpressionNode( new AttrExpr( build_varref( $1 ), maybeMoveBuildType( $3 ) ) ); }
 	;
 
@@ -895,5 +895,5 @@
 	constant_expression							{ $$ = $1; }
 	| constant_expression ELLIPSIS constant_expression	// GCC, subrange
-		{ $$ = new ExpressionNode( build_range( $1, $3 ) ); }
+		{ $$ = new ExpressionNode( new RangeExpr( maybeMoveBuild< Expression >( $1 ), maybeMoveBuild< Expression >( $3 ) ) ); }
 	| subrange											// CFA, subrange
 	;
@@ -2089,5 +2089,5 @@
 		{ $$ = $3; }
 	| '[' push constant_expression ELLIPSIS constant_expression pop ']' // GCC, multiple array elements
-		{ $$ = new ExpressionNode( build_range( $3, $5 ) ); }
+		{ $$ = new ExpressionNode( new RangeExpr( maybeMoveBuild< Expression >( $3 ), maybeMoveBuild< Expression >( $5 ) ) ); }
 	| '.' '[' push field_list pop ']'					// CFA, tuple field selector
 		{ $$ = $4; }
@@ -2407,5 +2407,5 @@
 subrange:
 	constant_expression '~' constant_expression			// CFA, integer subrange
-		{ $$ = new ExpressionNode( build_range( $1, $3 ) ); }
+		{ $$ = new ExpressionNode( new RangeExpr( maybeMoveBuild< Expression >( $1 ), maybeMoveBuild< Expression >( $3 ) ) ); }
 	;
 
