Lo que buscas es un parser (analizador sintáctico), que te compruebe la línea que introduzcas con la función. Básicamente, deberá eliminar espacios en blanco (si no son relevantes), comprobar el balance de paréntesis, comprobar que las operaciones y los nombres de funciones que se introduzcan están previstos en tu programa, decidir cuándo un nombre es de una variable y cuándo es de una función, etc.
Intenta obtener el código fuente de algún compilador, por ejemplo el LCC, (claro que solamente te haría falta la parte del analizador sintáctico), busca aquí:
https://sites.google.com/site/lccretargetablecompiler/