por cierto, una propuesta para la funcion quinaforma (separador-conjugador-funcions_de_codi.h), reduce el código haciendo las comprobaciones de error todas juntas y usando arrays para escoger el resultado a devolver, en lugar de ifs. No se si estará del todo bien. Con PHP hay otras facilidades y es a lo que estoy acostumbrado, pero al menos puede dar ideas.
// Comprobamos si el valor es incorrecto
if(is_afirm(forma)!=0 && is_afirm(forma)!=1) return -1;
int[] forma_te=[NFORMATE,FORMATE];
if(is_fte(forma)) return forma_te[is_afirm(forma)];
// Comprobamos si el valor es incorrecto
if((is_formal(forma)!=0 && is_formal(forma)>1) || (is_present(forma)!=0 && is_present(forma)!=1)) return -1;
int[][][] forma=[ // no formal (no presente/presente) // formal (no presente/presente)
[[CNPASSAT,CNPRESENT],[FNPASSAT,FNPRESENT]]] // No afirmativo
[[FPASSAT,FPRESENT],[CPASSAT,CPRESENT]]] // Afirmativo
];
return forma[is_afirm(forma)][is_formal(forma)][is_present(forma)];
La idea es que tenemos un "cubo" con tres lados, para las variables formal/informal, afirmativo/negativo y presente/pasado. En un array se definen los valores para cada casilla del cubo, y luego se usan las variables devueltas simplemente como índices. Como dije, usando excepciones podríamos incluso eliminar las líneas de comprobación de errores