#include #include #include #include #include #include #include #include #include char * tepalErrMsg[] = { "[ERROR] using uninitialized variable: %s\n", "[ERROR] using array identifier without index: %s\n", "[ERROR] unknown string operator: %c\n", "[ERROR] unknown float operator: %c\n" }; void exitError (int errNum, ...) { va_list ap; va_start (ap, errNum); switch (errNum) { case ERR_UNDEF_VAR: fprintf (stderr, tepalErrMsg[errNum], va_arg(ap, char *)); break; case ERR_NO_INDEX: fprintf (stderr, tepalErrMsg[errNum], va_arg(ap, char *)); break; case ERR_STRING_OPERATOR: fprintf (stderr, tepalErrMsg[errNum], va_arg(ap, int)); break; case ERR_FLOAT_OPERATOR: fprintf (stderr, tepalErrMsg[errNum], va_arg(ap, int)); break; } va_end (ap); exit (errNum); } void printExpr (s_expVal * val) { switch (expValueGetType (val)) { case EXP_TYP_INT: printf ("%d", expValueInt (val)); break; case EXP_TYP_FLOAT: printf ("%f", expValueFloat (val)); break; case EXP_TYP_STRING: { char * v = expValueString (val); printf (v); free (v); } } }