Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision c029f4d9425e284977981f4db0589682001ef309)
+++ src/Parser/ParseNode.h	(revision f0743a7e72e778b467386d928b8ac3d3b5e5b100)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Sep 23 18:11:22 2017
-// Update Count     : 821
+// Last Modified On : Mon Nov 27 17:33:35 2017
+// Update Count     : 824
 //
 
@@ -292,4 +292,6 @@
 	DeclarationNode * set_extension( bool exten ) { extension = exten; return this; }
   public:
+	DeclarationNode * get_last() { return (DeclarationNode *)ParseNode::get_last(); }
+
 	struct Variable_t {
 //		const std::string * name;
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision c029f4d9425e284977981f4db0589682001ef309)
+++ src/Parser/parser.yy	(revision f0743a7e72e778b467386d928b8ac3d3b5e5b100)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Nov 26 11:36:36 2017
-// Update Count     : 2969
+// Last Modified On : Mon Nov 27 17:23:35 2017
+// Update Count     : 2992
 //
 
@@ -1364,8 +1364,10 @@
 			$$ = $3->addQualifiers( $1 )->addQualifiers( $2 );
 		}
-	| cfa_function_declaration pop ',' push identifier_or_type_name
-		{
-			typedefTable.addToEnclosingScope( *$5, TypedefTable::ID );
-			$$ = $1->appendList( $1->cloneType( $5 ) );
+	| cfa_function_declaration pop ',' push identifier_or_type_name '(' push cfa_parameter_type_list_opt pop ')'
+		{
+			// Append the return type at the start (left-hand-side) to each identifier in the list.
+			DeclarationNode * ret = new DeclarationNode;
+			ret->type = maybeClone( $1->type->base );
+			$$ = $1->appendList( DeclarationNode::newFunction( $5, ret, $8, nullptr, true ) );
 		}
 	;
@@ -2416,5 +2418,8 @@
 			typedefTable.addToEnclosingScope( TypedefTable::ID );
 			typedefTable.leaveScope();
-			$$ = $1->addFunctionBody( $3 );
+			// Add the function body to the last identifier in the function definition list, i.e., foo3:
+			//   [const double] foo1(), foo2( int ), foo3( double ) { return 3.0; }
+			$1->get_last()->addFunctionBody( $3 );
+			$$ = $1;
 		}
 	| declaration_specifier function_declarator with_clause_opt compound_statement
