Esto es algo rápido que he hecho, una base de datos para procesar la conjugación de los verbos (está en PostgreSQL):
http://pastebin.com/NbNggcLNCon ella puedo hacer consultas del tipo:
SELECT p.pronombre || ' ' || r.raiz || c.conjugacion
FROM raiz_verbos r
INNER JOIN tipos_conjugacion t ON r.id_tipo_conjugacion = t.id_tipo
INNER JOIN conjugaciones c ON c.id_tipo_conjugacion = t.id_tipo
INNER JOIN tiempos ON c.id_tiempo = tiempos.id_tiempo
INNER JOIN personas p ON c.id_persona = p.id_persona
WHERE r.infinitivo = 'amar'
AND tiempos.tiempo='Presente Indicativo'
AND p.persona = 'Segunda Plural';
Resultando en:
?column?
----------------
vosotros amáis
(1 fila)
Así, si quiero agregar otro verbo solo hago
INSERT INTO raiz_verbos (raiz, id_tipo_conjugacion, infinitivo) VALUES ('abale', 1, 'abalear');
Y ya tengo la conjugación:
SELECT p.pronombre || ' ' || r.raiz || c.conjugacion
FROM raiz_verbos r
INNER JOIN tipos_conjugacion t ON r.id_tipo_conjugacion = t.id_tipo
INNER JOIN conjugaciones c ON c.id_tipo_conjugacion = t.id_tipo
INNER JOIN tiempos ON c.id_tiempo = tiempos.id_tiempo
INNER JOIN personas p ON c.id_persona = p.id_persona
WHERE r.infinitivo = 'abalear'
AND tiempos.tiempo='Presente Indicativo'
AND p.persona = 'Segunda Plural';
?column?
-------------------
vosotros abaleáis
(1 fila)
Claro que casi que solo es el esqueleto, lo que faltaría es poblarla y luego ver qué lógica seguir con los verbos irregulares (sería una labor bien grande).
La ventaja de tenerlo en una base de datos es que es independiente del lenguaje y cualquiera podría contribuir.