+ [[[int x[]]], [declare x as array of int]],
+ [[[int []]], [type array of int]])
+
+SIMPLE_DECLS(
+ [[[int x[n]]], [declare x as variable-length array n of int]],
+ [[[int x[*]]], [declare x as variable-length array of int]],
+ [[[int [n]]], [type variable-length array n of int]],
+ [[[int [*]]], [type variable-length array of int]])
+
+SIMPLE_DECLS(
+ [[int f(a, b)], [declare f as function (a, b) returning int]],
+ [[int f(int, b)], [declare f as function (int, b) returning int]],
+ [[int f(a, int)], [declare f as function (a, int) returning int]],
+ [[int (a, b)], [type function (a, b) returning int]],
+ [[int (int, b)], [type function (int, b) returning int]],
+ [[int (a, int)], [type function (a, int) returning int]])
+
+SIMPLE_DECLS(
+ [[int f(a, b, ...)], [declare f as function (a, b, ...) returning int]],
+ [[int f(int, b, ...)], [declare f as function (int, b, ...) returning int]],
+ [[int f(a, int, ...)], [declare f as function (a, int, ...) returning int]],
+ [[int (a, b, ...)], [type function (a, b, ...) returning int]],
+ [[int (int, b, ...)], [type function (int, b, ...) returning int]],
+ [[int (a, int, ...)], [type function (a, int, ...) returning int]])
+
+SIMPLE_DECLS(
+ [[[int f(int (*)[])]],
+ [declare f as function (pointer to array of int) returning int]],
+ [[[int f(int (*)[][1])]],
+ [declare f as function (pointer to array of array 1 of int) returning int]],
+ [[[int f(int (*)())]],
+ [declare f as function (pointer to function returning int) returning int]],
+ [[[int f(a (*)[])]],
+ [declare f as function (pointer to array of a) returning int]],
+ [[[int f(a (*)[][1])]],
+ [declare f as function (pointer to array of array 1 of a) returning int]],
+ [[[int f(a (*)())]],
+ [declare f as function (pointer to function returning a) returning int]],
+ [[[int (int (*)[])]],
+ [type function (pointer to array of int) returning int]],
+ [[[int (int (*)[][1])]],
+ [type function (pointer to array of array 1 of int) returning int]],
+ [[[int (int (*)())]],
+ [type function (pointer to function returning int) returning int]],
+ [[[int (a (*)[])]],
+ [type function (pointer to array of a) returning int]],
+ [[[int (a (*)[][1])]],
+ [type function (pointer to array of array 1 of a) returning int]],
+ [[[int (a (*)())]],
+ [type function (pointer to function returning a) returning int]])
+
+SIMPLE_DECLS_EXPLAIN(
+ [[[int f(int ([]))]],
+ [declare f as function (array of int) returning int],
+ [[int f(int [])]]],
+ [[[int f(a ([]))]],
+ [declare f as function (array of a) returning int],
+ [[int f(a [])]]],
+ [[[int f(int (()))]],
+ [declare f as function (function returning int) returning int],
+ [[int f(int ())]]],
+ [[[int f(a (()))]],
+ [declare f as function (function returning a) returning int],
+ [[int f(a ())]]],
+ [[[int (int ([]))]],
+ [type function (array of int) returning int],
+ [[int (int [])]]],
+ [[[int (a ([]))]],
+ [type function (array of a) returning int],
+ [[int (a [])]]],
+ [[[int (int (()))]],
+ [type function (function returning int) returning int],
+ [[int (int ())]]],
+ [[[int (a (()))]],
+ [type function (function returning a) returning int],
+ [[int (a ())]]])