PageRenderTime 48ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/error.h

https://github.com/justinmeza/lci
C Header | 111 lines | 80 code | 9 blank | 22 comment | 0 complexity | f1d0de506fd95b28eaf05742c2f52960 MD5 | raw file
Possible License(s): GPL-3.0
  1. /**
  2. * Error type definitions.
  3. *
  4. * \file error.h
  5. *
  6. * \author Justin J. Meza
  7. *
  8. * \date 2012
  9. */
  10. #ifndef __ERROR_H__
  11. #define __ERROR_H__
  12. #include <stdlib.h>
  13. #include <stdio.h>
  14. #include <stdarg.h>
  15. /**
  16. * Represents an error type. The error types are organized based on which
  17. * module they occur in:
  18. *
  19. * - MN_* for the main body,
  20. * - LX_* for the lexer,
  21. * - TK_* for the tokenizer,
  22. * - PR_* for the parser,
  23. * - IN_* for the interpreter
  24. *
  25. * \note Remember to update the error message and error code arrays (in the
  26. * error C file) with the appropriate error message and code.
  27. */
  28. typedef enum {
  29. MN_ERROR_OPENING_FILE,
  30. MN_ERROR_CLOSING_FILE,
  31. LX_LINE_CONTINUATION,
  32. LX_MULTIPLE_LINE_COMMENT,
  33. LX_EXPECTED_TOKEN_DELIMITER,
  34. TK_EXPECTED_FLOATING_POINT,
  35. TK_EXPECTED_INTEGER,
  36. TK_UNKNOWN_TOKEN,
  37. PR_UNKNOWN_IDENTIFIER_TYPE,
  38. PR_UNKNOWN_STATEMENT_TYPE,
  39. PR_UNKNOWN_EXPRESSION_TYPE,
  40. PR_EXPECTED_BOOLEAN,
  41. PR_EXPECTED_INTEGER,
  42. PR_EXPECTED_FLOAT,
  43. PR_EXPECTED_STRING,
  44. PR_EXPECTED_CONSTANT,
  45. PR_EXPECTED_TYPE,
  46. PR_EXPECTED_IDENTIFIER,
  47. PR_EXPECTED_TOKEN,
  48. PR_INVALID_OPERATOR,
  49. PR_EXPECTED_EXPRESSION,
  50. PR_EXPECTED_END_OF_EXPRESSION,
  51. PR_EXPECTED_END_OF_STATEMENT,
  52. PR_CANNOT_USE_STR_AS_LITERAL,
  53. PR_LITERAL_MUST_BE_UNIQUE,
  54. PR_EXPECTED_LOOP_NAME,
  55. PR_EXPECTED_EITHER_TOKEN,
  56. PR_EXPECTED_UNARY_FUNCTION,
  57. PR_EXPECTED_MATCHING_LOOP_NAME,
  58. PR_EXPECTED_STATEMENT,
  59. PR_UNHANDLED_STRING,
  60. IN_INVALID_IDENTIFIER_TYPE,
  61. IN_UNABLE_TO_STORE_VARIABLE,
  62. IN_VARIABLE_DOES_NOT_EXIST,
  63. IN_CANNOT_IMPLICITLY_CAST_NIL,
  64. IN_CANNOT_CAST_FUNCTION_TO_BOOLEAN,
  65. IN_CANNOT_CAST_ARRAY_TO_BOOLEAN,
  66. IN_UNKNOWN_VALUE_DURING_BOOLEAN_CAST,
  67. IN_UNABLE_TO_CAST_VALUE,
  68. IN_EXPECTED_INTEGER_VALUE,
  69. IN_CANNOT_CAST_FUNCTION_TO_INTEGER,
  70. IN_CANNOT_CAST_ARRAY_TO_INTEGER,
  71. IN_UNKNOWN_VALUE_DURING_INTEGER_CAST,
  72. IN_EXPECTED_DECIMAL,
  73. IN_CANNOT_CAST_FUNCTION_TO_DECIMAL,
  74. IN_CANNOT_CAST_ARRAY_TO_DECIMAL,
  75. IN_UNKNOWN_VALUE_DURING_DECIMAL_CAST,
  76. IN_CANNOT_CAST_BOOLEAN_TO_STRING,
  77. IN_EXPECTED_CLOSING_PAREN,
  78. IN_INVALID_HEX_NUMBER,
  79. IN_CODE_POINT_MUST_BE_POSITIVE,
  80. IN_EXPECTED_CLOSING_SQUARE_BRACKET,
  81. IN_EXPECTED_CLOSING_CURLY_BRACE,
  82. IN_VARIABLE_NOT_AN_ARRAY,
  83. IN_CANNOT_CAST_FUNCTION_TO_STRING,
  84. IN_CANNOT_CAST_ARRAY_TO_STRING,
  85. IN_UNKNOWN_VALUE_DURING_STRING_CAST,
  86. IN_UNKNOWN_CAST_TYPE,
  87. IN_UNDEFINED_FUNCTION,
  88. IN_INCORRECT_NUMBER_OF_ARGUMENTS,
  89. IN_INVALID_RETURN_TYPE,
  90. IN_UNKNOWN_CONSTANT_TYPE,
  91. IN_DIVISION_BY_ZERO,
  92. IN_INVALID_OPERAND_TYPE,
  93. IN_INVALID_BOOLEAN_OPERATION_TYPE,
  94. IN_INVALID_EQUALITY_OPERATION_TYPE,
  95. IN_REDEFINITION_OF_VARIABLE,
  96. IN_INVALID_DECLARATION_TYPE,
  97. IN_INVALID_TYPE,
  98. IN_FUNCTION_NAME_USED_BY_VARIABLE,
  99. IN_CANNOT_CAST_VALUE_TO_ARRAY,
  100. } ErrorType;
  101. void error(ErrorType, ...);
  102. #endif /* __ERROR_H__ */