Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision a6e50912ae352db9b904516e1fdd12193f2019b7)
+++ src/Parser/parser.yy	(revision 5a51798fd864e5af9fed3549c2387c6b859cafc0)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Oct 24 08:21:14 2020
-// Update Count     : 4624
+// Last Modified On : Sun Jan 10 17:41:00 2021
+// Update Count     : 4625
 //
 
@@ -329,5 +329,5 @@
 %type<en> conditional_expression		constant_expression			assignment_expression		assignment_expression_opt
 %type<en> comma_expression				comma_expression_opt
-%type<en> argument_expression_list_opt	argument_expression			default_initialize_opt
+%type<en> argument_expression_list_opt	argument_expression			default_initializer_opt
 %type<ifctl> if_control_expression
 %type<fctl> for_control_expression		for_control_expression_list
@@ -424,5 +424,5 @@
 %type<decl> sue_declaration_specifier sue_declaration_specifier_nobody sue_type_specifier sue_type_specifier_nobody
 
-%type<tclass> type_class
+%type<tclass> type_class new_type_class
 %type<decl> type_declarator type_declarator_name type_declaring_list
 
@@ -2223,5 +2223,5 @@
 	;
 
-cfa_parameter_ellipsis_list_opt:							// CFA, abstract + real
+cfa_parameter_ellipsis_list_opt:						// CFA, abstract + real
 	// empty
 		{ $$ = DeclarationNode::newBasicType( DeclarationNode::Void ); }
@@ -2280,10 +2280,10 @@
 cfa_parameter_declaration:								// CFA, new & old style parameter declaration
 	parameter_declaration
-	| cfa_identifier_parameter_declarator_no_tuple identifier_or_type_name default_initialize_opt
+	| cfa_identifier_parameter_declarator_no_tuple identifier_or_type_name default_initializer_opt
 		{ $$ = $1->addName( $2 ); }
-	| cfa_abstract_tuple identifier_or_type_name default_initialize_opt
+	| cfa_abstract_tuple identifier_or_type_name default_initializer_opt
 		// To obtain LR(1), these rules must be duplicated here (see cfa_abstract_declarator).
 		{ $$ = $1->addName( $2 ); }
-	| type_qualifier_list cfa_abstract_tuple identifier_or_type_name default_initialize_opt
+	| type_qualifier_list cfa_abstract_tuple identifier_or_type_name default_initializer_opt
 		{ $$ = $2->addName( $3 )->addQualifiers( $1 ); }
 	| cfa_function_specifier
@@ -2302,14 +2302,14 @@
 parameter_declaration:
 		// No SUE declaration in parameter list.
-	declaration_specifier_nobody identifier_parameter_declarator default_initialize_opt
+	declaration_specifier_nobody identifier_parameter_declarator default_initializer_opt
 		{ $$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr ); }
-	| declaration_specifier_nobody type_parameter_redeclarator default_initialize_opt
+	| declaration_specifier_nobody type_parameter_redeclarator default_initializer_opt
 		{ $$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr ); }
 	;
 
 abstract_parameter_declaration:
-	declaration_specifier_nobody default_initialize_opt
+	declaration_specifier_nobody default_initializer_opt
 		{ $$ = $1->addInitializer( $2 ? new InitializerNode( $2 ) : nullptr ); }
-	| declaration_specifier_nobody abstract_parameter_declarator default_initialize_opt
+	| declaration_specifier_nobody abstract_parameter_declarator default_initializer_opt
 		{ $$ = $2->addType( $1 )->addInitializer( $3 ? new InitializerNode( $3 ) : nullptr ); }
 	;
@@ -2441,9 +2441,26 @@
 	type_class identifier_or_type_name
 		{ typedefTable.addToScope( *$2, TYPEDEFname, "9" ); }
-	type_initializer_opt assertion_list_opt
+	  type_initializer_opt assertion_list_opt
 		{ $$ = DeclarationNode::newTypeParam( $1, $2 )->addTypeInitializer( $4 )->addAssertions( $5 ); }
-	| type_specifier identifier_parameter_declarator
+	| identifier_or_type_name new_type_class
+		{ typedefTable.addToScope( *$1, TYPEDEFname, "9" ); }
+	  type_initializer_opt assertion_list_opt
+		{ $$ = DeclarationNode::newTypeParam( $2, $1 )->addTypeInitializer( $4 )->addAssertions( $5 ); }
+	| '[' identifier_or_type_name ']'
+		{ typedefTable.addToScope( *$2, TYPEDEFname, "9" ); }
+	// | type_specifier identifier_parameter_declarator
 	| assertion_list
 		{ $$ = DeclarationNode::newTypeParam( TypeDecl::Dtype, new string( DeclarationNode::anonymous.newName() ) )->addAssertions( $1 ); }
+	;
+
+new_type_class:											// CFA
+	// empty
+		{ $$ = TypeDecl::Otype; }
+	| '&'
+		{ $$ = TypeDecl::Dtype; }
+	| '*'
+		{ $$ = TypeDecl::Dtype; }
+	| ELLIPSIS
+		{ $$ = TypeDecl::Ttype; }
 	;
 
@@ -3476,5 +3493,5 @@
 	;
 
-default_initialize_opt:
+default_initializer_opt:
 	// empty
 		{ $$ = nullptr; }
