From f7d9fcc2158f6f1f15ea87a9e302a1afe1cb4c0d Mon Sep 17 00:00:00 2001 From: David Walter Seikel Date: Tue, 17 Jan 2012 11:40:47 +1000 Subject: Better error message. --- LuaSL/src/LuaSL_LSL_tree.c | 80 +++++++++++++++++++++++----------------------- LuaSL/src/LuaSL_LSL_tree.h | 1 + 2 files changed, 41 insertions(+), 40 deletions(-) (limited to 'LuaSL') diff --git a/LuaSL/src/LuaSL_LSL_tree.c b/LuaSL/src/LuaSL_LSL_tree.c index 3d53ed7..2a9d5d6 100644 --- a/LuaSL/src/LuaSL_LSL_tree.c +++ b/LuaSL/src/LuaSL_LSL_tree.c @@ -131,38 +131,38 @@ LSL_Token LSL_Tokens[] = allowedTypes allowed[] = { - {OT_nothing, (ST_NONE)}, - - {OT_bool, (ST_BOOL_NOT)}, - {OT_integer, (ST_BIT_NOT | ST_NEGATE)}, - {OT_float, (ST_NONE)}, - {OT_key, (ST_NONE)}, - {OT_list, (ST_NONE)}, - {OT_rotation, (ST_NONE)}, - {OT_string, (ST_NONE)}, - {OT_vector, (ST_NONE)}, - {OT_other, (ST_NONE)}, - - {OT_bool, (ST_BOOLEAN | ST_EQUALITY)}, - {OT_integer, (ST_MULTIPLY | ST_ADD | ST_SUBTRACT | ST_EQUALITY | ST_COMPARISON | ST_CONCATENATION | ST_ASSIGNMENT | ST_MODULO | ST_BITWISE)}, - {OT_float, (ST_MULTIPLY | ST_ADD | ST_SUBTRACT | ST_EQUALITY | ST_COMPARISON | ST_CONCATENATION | ST_ASSIGNMENT)}, - {OT_float, (ST_MULTIPLY | ST_ADD | ST_SUBTRACT | ST_EQUALITY | ST_COMPARISON | ST_CONCATENATION | ST_ASSIGNMENT)}, - {OT_float, (ST_MULTIPLY | ST_ADD | ST_SUBTRACT | ST_EQUALITY | ST_COMPARISON | ST_CONCATENATION | ST_ASSIGNMENT)}, - {OT_string, (ST_ADD | ST_EQUALITY | ST_CONCATENATION)}, - {OT_string, (ST_ADD | ST_EQUALITY | ST_CONCATENATION)}, - {OT_string, (ST_ADD | ST_EQUALITY | ST_CONCATENATION)}, - {OT_list, (ST_ADD | ST_EQUALITY | ST_CONCATENATION)}, - {OT_list, (ST_ADD | ST_COMPARISON | ST_CONCATENATION)}, - {OT_list, (ST_ADD | ST_COMPARISON | ST_CONCATENATION)}, - {OT_integer, (ST_ADD | ST_COMPARISON)}, - {OT_float, (ST_ADD | ST_COMPARISON)}, - {OT_list, (ST_ADD | ST_CONCATENATION)}, - {OT_vector, (ST_MULTIPLY | ST_ADD | ST_SUBTRACT | ST_EQUALITY | ST_CONCATENATION | ST_ASSIGNMENT | ST_MODULO)}, - {OT_vector, (ST_MULTIPLY)}, - {OT_vector, (ST_MULTIPLY)}, - {OT_rotation, (ST_MULTIPLY | ST_ADD | ST_SUBTRACT | ST_EQUALITY | ST_CONCATENATION | ST_ASSIGNMENT)}, - {OT_other, (ST_NONE)}, - {OT_invalid, (ST_NONE)} + {OT_nothing, "nothing", (ST_NONE)}, + + {OT_bool, "boolean", (ST_BOOL_NOT)}, + {OT_integer, "integer", (ST_BIT_NOT | ST_NEGATE)}, + {OT_float, "float", (ST_NONE)}, + {OT_key, "key", (ST_NONE)}, + {OT_list, "list", (ST_NONE)}, + {OT_rotation, "rotation", (ST_NONE)}, + {OT_string, "string", (ST_NONE)}, + {OT_vector, "vector", (ST_NONE)}, + {OT_other, "other", (ST_NONE)}, + + {OT_bool, "boolean", (ST_BOOLEAN | ST_EQUALITY)}, + {OT_integer, "integer", (ST_MULTIPLY | ST_ADD | ST_SUBTRACT | ST_EQUALITY | ST_COMPARISON | ST_CONCATENATION | ST_ASSIGNMENT | ST_MODULO | ST_BITWISE)}, + {OT_float, "float", (ST_MULTIPLY | ST_ADD | ST_SUBTRACT | ST_EQUALITY | ST_COMPARISON | ST_CONCATENATION | ST_ASSIGNMENT)}, + {OT_float, "float", (ST_MULTIPLY | ST_ADD | ST_SUBTRACT | ST_EQUALITY | ST_COMPARISON | ST_CONCATENATION | ST_ASSIGNMENT)}, + {OT_float, "float", (ST_MULTIPLY | ST_ADD | ST_SUBTRACT | ST_EQUALITY | ST_COMPARISON | ST_CONCATENATION | ST_ASSIGNMENT)}, + {OT_string, "string", (ST_ADD | ST_EQUALITY | ST_CONCATENATION)}, + {OT_string, "string", (ST_ADD | ST_EQUALITY | ST_CONCATENATION)}, + {OT_string, "string", (ST_ADD | ST_EQUALITY | ST_CONCATENATION)}, + {OT_list, "list", (ST_ADD | ST_EQUALITY | ST_CONCATENATION)}, + {OT_list, "list", (ST_ADD | ST_COMPARISON | ST_CONCATENATION)}, + {OT_list, "list", (ST_ADD | ST_COMPARISON | ST_CONCATENATION)}, + {OT_integer, "integer", (ST_ADD | ST_COMPARISON)}, + {OT_float, "float", (ST_ADD | ST_COMPARISON)}, + {OT_list, "list", (ST_ADD | ST_CONCATENATION)}, + {OT_vector, "vector", (ST_MULTIPLY | ST_ADD | ST_SUBTRACT | ST_EQUALITY | ST_CONCATENATION | ST_ASSIGNMENT | ST_MODULO)}, + {OT_vector, "vector", (ST_MULTIPLY)}, + {OT_vector, "vector", (ST_MULTIPLY)}, + {OT_rotation, "rotation", (ST_MULTIPLY | ST_ADD | ST_SUBTRACT | ST_EQUALITY | ST_CONCATENATION | ST_ASSIGNMENT)}, + {OT_other, "other", (ST_NONE)}, + {OT_invalid, "invalid", (ST_NONE)} }; opType opExpr[][10] = @@ -277,14 +277,14 @@ LSL_Leaf *addOperation(LSL_Leaf *left, LSL_Leaf *lval, LSL_Leaf *right) } if (OT_invalid == lval->basicType) { - if ((left) && (right)) - fprintf(stderr, "Invalid operation [%s %s %s] type at line %d column %d\n", left->token->token, lval->token->token, right->token->token, lval->line, lval->column); - else if (left) - fprintf(stderr, "Invalid operation [%s %s] type at line %d column %d\n", left->token->token, lval->token->token, lval->line, lval->column); - else if (left) - fprintf(stderr, "Invalid operation [%s %s] type at line %d column %d\n", lval->token->token, right->token->token, lval->line, lval->column); - else - fprintf(stderr, "Invalid operation [%s] type at line %d column %d\n", lval->token->token, lval->line, lval->column); + char *leftType = "", *rightType = ""; + + if (left) + leftType = allowed[left->basicType].name; + if (right) + rightType = allowed[right->basicType].name; + + fprintf(stderr, "Invalid operation [%s %s %s] @ line %d column %d\n", leftType, lval->token->token, rightType, lval->line, lval->column); } } diff --git a/LuaSL/src/LuaSL_LSL_tree.h b/LuaSL/src/LuaSL_LSL_tree.h index c33d77d..84610b6 100644 --- a/LuaSL/src/LuaSL_LSL_tree.h +++ b/LuaSL/src/LuaSL_LSL_tree.h @@ -160,6 +160,7 @@ typedef enum struct _allowedTypes { opType result; + char *name; int subTypes; }; -- cgit v1.1