Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision fcd17b2f5e850f4eee4f611d4b45b099ef8fb923)
+++ src/Parser/ExpressionNode.cc	(revision a2e06876c0cdd5544b2547346c1a574b00174c82)
@@ -10,13 +10,9 @@
 // Created On       : Sat May 16 13:17:07 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 27 12:10:10 2017
-// Update Count     : 556
-//
-
-#include <cassert>
-#include <cctype>
-#include <climits>
-#include <cstdio>
-#include <algorithm>
+// Last Modified On : Thu Jul 27 21:42:38 2017
+// Update Count     : 567
+//
+
+#include <climits>										// access INT_MAX, UINT_MAX, LONG_MAX, ULONG_MAX, LLONG_MAX
 #include <sstream>
 
@@ -26,7 +22,5 @@
 #include "SynTree/Expression.h"
 #include "SynTree/Declaration.h"
-#include "Common/UnimplementedError.h"
 #include "parserutility.h"
-#include "Common/utility.h"
 
 using namespace std;
@@ -55,5 +49,5 @@
 static inline bool checkX( char c ) { return c == 'x' || c == 'X'; }
 
-Expression *build_constantInteger( const std::string & str ) {
+Expression * build_constantInteger( const std::string & str ) {
 	static const BasicType::Kind kind[2][3] = {
 		{ BasicType::SignedInt, BasicType::LongSignedInt, BasicType::LongLongSignedInt },
@@ -135,5 +129,5 @@
 } // build_constantInteger
 
-Expression *build_constantFloat( const std::string & str ) {
+Expression * build_constantFloat( const std::string & str ) {
 	static const BasicType::Kind kind[2][3] = {
 		{ BasicType::Float, BasicType::Double, BasicType::LongDouble },
@@ -170,5 +164,5 @@
 } // build_constantFloat
 
-Expression *build_constantChar( const std::string & str ) {
+Expression * build_constantChar( const std::string & str ) {
 	Expression * ret = new ConstantExpr( Constant( new BasicType( noQualifiers, BasicType::Char ), str, (unsigned long long int)(unsigned char)str[1] ) );
 	delete &str;										// created by lex
@@ -176,11 +170,10 @@
 } // build_constantChar
 
-ConstantExpr *build_constantStr( const std::string & str ) {
+ConstantExpr * build_constantStr( const std::string & str ) {
 	// string should probably be a primitive type
-	ArrayType *at = new ArrayType( noQualifiers, new BasicType( Type::Qualifiers( Type::Const ), BasicType::Char ),
-								   new ConstantExpr( Constant::from_ulong( str.size() + 1 - 2 ) ),  // +1 for '\0' and -2 for '"'
+	ArrayType * at = new ArrayType( noQualifiers, new BasicType( Type::Qualifiers( Type::Const ), BasicType::Char ),
+								   new ConstantExpr( Constant::from_ulong( str.size() + 1 - 2 ) ), // +1 for '\0' and -2 for '"'
 								   false, false );
-	// constant 0 is ignored for pure string value
-	ConstantExpr * ret = new ConstantExpr( Constant( at, str, (unsigned long long int)0 ) );
+	ConstantExpr * ret = new ConstantExpr( Constant( at, str, (unsigned long long int)0 ) ); // constant 0 is ignored for pure string value
 	delete &str;										// created by lex
 	return ret;
@@ -214,6 +207,4 @@
 } // build_field_name_fraction_constants
 
-
-
 Expression * build_field_name_REALFRACTIONconstant( const std::string & str ) {
 	if ( str.find_first_not_of( "0123456789", 1 ) != string::npos ) throw SemanticError( "invalid tuple index " + str );
@@ -230,12 +221,12 @@
 } // build_field_name_REALDECIMALconstant
 
-NameExpr * build_varref( const string *name ) {
-	NameExpr *expr = new NameExpr( *name, nullptr );
+NameExpr * build_varref( const string * name ) {
+	NameExpr * expr = new NameExpr( *name, nullptr );
 	delete name;
 	return expr;
-}
-
-// Must harmonize with OperKinds.
-static const char *OperName[] = {
+} // build_varref
+
+
+static const char * OperName[] = {						// must harmonize with OperKinds
 	// diadic
 	"SizeOf", "AlignOf", "OffsetOf", "?+?", "?-?", "?\\?", "?*?", "?/?", "?%?", "||", "&&",
@@ -245,8 +236,8 @@
 	// monadic
 	"+?", "-?", "AddressOf", "*?", "!?", "~?", "++?", "?++", "--?", "?--", "&&"
-};
-
-Expression *build_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) {
-	Type *targetType = maybeMoveBuildType( decl_node );
+}; // OperName
+
+Expression * build_cast( DeclarationNode * decl_node, ExpressionNode * expr_node ) {
+	Type * targetType = maybeMoveBuildType( decl_node );
 	if ( dynamic_cast< VoidType * >( targetType ) ) {
 		delete targetType;
@@ -255,117 +246,126 @@
 		return new CastExpr( maybeMoveBuild< Expression >(expr_node), targetType );
 	} // if
-}
-
-
-Expression *build_virtual_cast( DeclarationNode *decl_node, ExpressionNode *expr_node ) {
-	Type *targetType = maybeMoveBuildType( decl_node );
-	Expression *castArg = maybeMoveBuild< Expression >( expr_node );
+} // build_cast
+
+Expression * build_virtual_cast( DeclarationNode * decl_node, ExpressionNode * expr_node ) {
+	Type * targetType = maybeMoveBuildType( decl_node );
+	Expression * castArg = maybeMoveBuild< Expression >( expr_node );
 	return new VirtualCastExpr( castArg, targetType );
-}
-
-Expression *build_fieldSel( ExpressionNode *expr_node, Expression *member ) {
-	UntypedMemberExpr *ret = new UntypedMemberExpr( member, maybeMoveBuild< Expression >(expr_node) );
-	return ret;
-}
-
-Expression *build_pfieldSel( ExpressionNode *expr_node, Expression *member ) {
-	UntypedExpr *deref = new UntypedExpr( new NameExpr( "*?" ) );
+} // build_virtual_cast
+
+Expression * build_fieldSel( ExpressionNode * expr_node, Expression * member ) {
+	UntypedMemberExpr * ret = new UntypedMemberExpr( member, maybeMoveBuild< Expression >(expr_node) );
+	return ret;
+} // build_fieldSel
+
+Expression * build_pfieldSel( ExpressionNode * expr_node, Expression * member ) {
+	UntypedExpr * deref = new UntypedExpr( new NameExpr( "*?" ) );
 	deref->location = expr_node->location;
 	deref->get_args().push_back( maybeMoveBuild< Expression >(expr_node) );
-	UntypedMemberExpr *ret = new UntypedMemberExpr( member, deref );
-	return ret;
-}
-
-Expression *build_addressOf( ExpressionNode *expr_node ) {
+	UntypedMemberExpr * ret = new UntypedMemberExpr( member, deref );
+	return ret;
+} // build_pfieldSel
+
+Expression * build_addressOf( ExpressionNode * expr_node ) {
 		return new AddressExpr( maybeMoveBuild< Expression >(expr_node) );
-}
-Expression *build_sizeOfexpr( ExpressionNode *expr_node ) {
+} // build_addressOf
+
+Expression * build_sizeOfexpr( ExpressionNode * expr_node ) {
 	return new SizeofExpr( maybeMoveBuild< Expression >(expr_node) );
-}
-Expression *build_sizeOftype( DeclarationNode *decl_node ) {
+} // build_sizeOfexpr
+
+Expression * build_sizeOftype( DeclarationNode * decl_node ) {
 	return new SizeofExpr( maybeMoveBuildType( decl_node ) );
-}
-Expression *build_alignOfexpr( ExpressionNode *expr_node ) {
+} // build_sizeOftype
+
+Expression * build_alignOfexpr( ExpressionNode * expr_node ) {
 	return new AlignofExpr( maybeMoveBuild< Expression >(expr_node) );
-}
-Expression *build_alignOftype( DeclarationNode *decl_node ) {
+} // build_alignOfexpr
+
+Expression * build_alignOftype( DeclarationNode * decl_node ) {
 	return new AlignofExpr( maybeMoveBuildType( decl_node) );
-}
-Expression *build_offsetOf( DeclarationNode *decl_node, NameExpr *member ) {
+} // build_alignOftype
+
+Expression * build_offsetOf( DeclarationNode * decl_node, NameExpr * member ) {
 	Expression * ret = new UntypedOffsetofExpr( maybeMoveBuildType( decl_node ), member->get_name() );
 	delete member;
 	return ret;
-}
-
-Expression *build_and_or( ExpressionNode *expr_node1, ExpressionNode *expr_node2, bool kind ) {
+} // build_offsetOf
+
+Expression * build_and_or( ExpressionNode * expr_node1, ExpressionNode * expr_node2, bool kind ) {
 	return new LogicalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), notZeroExpr( maybeMoveBuild< Expression >(expr_node2) ), kind );
-}
-
-Expression *build_unary_val( OperKinds op, ExpressionNode *expr_node ) {
+} // build_and_or
+
+Expression * build_unary_val( OperKinds op, ExpressionNode * expr_node ) {
 	std::list< Expression * > args;
 	args.push_back( maybeMoveBuild< Expression >(expr_node) );
 	return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
-}
-Expression *build_unary_ptr( OperKinds op, ExpressionNode *expr_node ) {
+} // build_unary_val
+
+Expression * build_unary_ptr( OperKinds op, ExpressionNode * expr_node ) {
 	std::list< Expression * > args;
 	args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node) ) );
 	return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
-}
-Expression *build_binary_val( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
+} // build_unary_ptr
+
+Expression * build_binary_val( OperKinds op, ExpressionNode * expr_node1, ExpressionNode * expr_node2 ) {
 	std::list< Expression * > args;
 	args.push_back( maybeMoveBuild< Expression >(expr_node1) );
 	args.push_back( maybeMoveBuild< Expression >(expr_node2) );
 	return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
-}
-Expression *build_binary_ptr( OperKinds op, ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
+} // build_binary_val
+
+Expression * build_binary_ptr( OperKinds op, ExpressionNode * expr_node1, ExpressionNode * expr_node2 ) {
 	std::list< Expression * > args;
 	args.push_back( new AddressExpr( maybeMoveBuild< Expression >(expr_node1) ) );
 	args.push_back( maybeMoveBuild< Expression >(expr_node2) );
 	return new UntypedExpr( new NameExpr( OperName[ (int)op ] ), args );
-}
-
-Expression *build_cond( ExpressionNode *expr_node1, ExpressionNode *expr_node2, ExpressionNode *expr_node3 ) {
+} // build_binary_ptr
+
+Expression * build_cond( ExpressionNode * expr_node1, ExpressionNode * expr_node2, ExpressionNode * expr_node3 ) {
 	return new ConditionalExpr( notZeroExpr( maybeMoveBuild< Expression >(expr_node1) ), maybeMoveBuild< Expression >(expr_node2), maybeMoveBuild< Expression >(expr_node3) );
-}
-
-Expression *build_comma( ExpressionNode *expr_node1, ExpressionNode *expr_node2 ) {
+} // build_cond
+
+Expression * build_comma( ExpressionNode * expr_node1, ExpressionNode * expr_node2 ) {
 	return new CommaExpr( maybeMoveBuild< Expression >(expr_node1), maybeMoveBuild< Expression >(expr_node2) );
-}
-
-Expression *build_attrexpr( NameExpr *var, ExpressionNode * expr_node ) {
+} // build_comma
+
+Expression * build_attrexpr( NameExpr * var, ExpressionNode * expr_node ) {
 	return new AttrExpr( var, maybeMoveBuild< Expression >(expr_node) );
-}
-Expression *build_attrtype( NameExpr *var, DeclarationNode * decl_node ) {
+} // build_attrexpr
+
+Expression * build_attrtype( NameExpr * var, DeclarationNode * decl_node ) {
 	return new AttrExpr( var, maybeMoveBuildType( decl_node ) );
-}
-
-Expression *build_tuple( ExpressionNode * expr_node ) {
+} // build_attrtype
+
+Expression * build_tuple( ExpressionNode * expr_node ) {
 	std::list< Expression * > exprs;
 	buildMoveList( expr_node, exprs );
 	return new UntypedTupleExpr( exprs );;
-}
-
-Expression *build_func( ExpressionNode * function, ExpressionNode * expr_node ) {
+} // build_tuple
+
+Expression * build_func( ExpressionNode * function, ExpressionNode * expr_node ) {
 	std::list< Expression * > args;
 	buildMoveList( expr_node, args );
 	return new UntypedExpr( maybeMoveBuild< Expression >(function), args, nullptr );
-}
-
-Expression *build_range( ExpressionNode * low, ExpressionNode *high ) {
+} // build_func
+
+Expression * build_range( ExpressionNode * low, ExpressionNode * high ) {
 	return new RangeExpr( maybeMoveBuild< Expression >( low ), maybeMoveBuild< Expression >( high ) );
-}
-
-Expression *build_asmexpr( ExpressionNode *inout, ConstantExpr *constraint, ExpressionNode *operand ) {
+} // build_range
+
+Expression * build_asmexpr( ExpressionNode * inout, ConstantExpr * constraint, ExpressionNode * operand ) {
 	return new AsmExpr( maybeMoveBuild< Expression >( inout ), constraint, maybeMoveBuild< Expression >(operand) );
-}
-
-Expression *build_valexpr( StatementNode *s ) {
+} // build_asmexpr
+
+Expression * build_valexpr( StatementNode * s ) {
 	return new StmtExpr( dynamic_cast< CompoundStmt * >(maybeMoveBuild< Statement >(s) ) );
-}
-Expression *build_typevalue( DeclarationNode *decl ) {
+} // build_valexpr
+
+Expression * build_typevalue( DeclarationNode * decl ) {
 	return new TypeExpr( maybeMoveBuildType( decl ) );
-}
-
-Expression *build_compoundLiteral( DeclarationNode *decl_node, InitializerNode *kids ) {
+} // build_typevalue
+
+Expression * build_compoundLiteral( DeclarationNode * decl_node, InitializerNode * kids ) {
 	Declaration * newDecl = maybeBuild< Declaration >(decl_node); // compound literal type
 	if ( DeclarationWithType * newDeclWithType = dynamic_cast< DeclarationWithType * >( newDecl ) ) { // non-sue compound-literal type
@@ -393,5 +393,5 @@
 		assert( false );
 	} // if
-}
+} // build_compoundLiteral
 
 // Local Variables: //
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision fcd17b2f5e850f4eee4f611d4b45b099ef8fb923)
+++ src/Parser/lex.ll	(revision a2e06876c0cdd5544b2547346c1a574b00174c82)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Thu Jul 27 12:05:50 2017
- * Update Count     : 549
+ * Last Modified On : Thu Jul 27 21:46:06 2017
+ * Update Count     : 550
  */
 
@@ -418,5 +418,5 @@
 
 				/* unknown characters */
-.			{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
+.				{ printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
 
 %%
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision fcd17b2f5e850f4eee4f611d4b45b099ef8fb923)
+++ src/Parser/parser.yy	(revision a2e06876c0cdd5544b2547346c1a574b00174c82)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Jul 27 12:08:08 2017
-// Update Count     : 2467
+// Last Modified On : Thu Jul 27 21:07:16 2017
+// Update Count     : 2468
 //
 
@@ -527,5 +527,5 @@
 	| ALIGNOF unary_expression							// GCC, variable alignment
 		{ $$ = new ExpressionNode( build_alignOfexpr( $2 ) ); }
-	| ALIGNOF '(' type_no_function ')'				// GCC, type alignment
+	| ALIGNOF '(' type_no_function ')'					// GCC, type alignment
 		{ $$ = new ExpressionNode( build_alignOftype( $3 ) ); }
 	| OFFSETOF '(' type_no_function ',' no_attr_identifier ')'
