--- /dev/null
+#ifndef Py_ERRCODE_H\r
+#define Py_ERRCODE_H\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+\r
+/* Error codes passed around between file input, tokenizer, parser and\r
+ interpreter. This is necessary so we can turn them into Python\r
+ exceptions at a higher level. Note that some errors have a\r
+ slightly different meaning when passed from the tokenizer to the\r
+ parser than when passed from the parser to the interpreter; e.g.\r
+ the parser only returns E_EOF when it hits EOF immediately, and it\r
+ never returns E_OK. */\r
+\r
+#define E_OK 10 /* No error */\r
+#define E_EOF 11 /* End Of File */\r
+#define E_INTR 12 /* Interrupted */\r
+#define E_TOKEN 13 /* Bad token */\r
+#define E_SYNTAX 14 /* Syntax error */\r
+#define E_NOMEM 15 /* Ran out of memory */\r
+#define E_DONE 16 /* Parsing complete */\r
+#define E_ERROR 17 /* Execution error */\r
+#define E_TABSPACE 18 /* Inconsistent mixing of tabs and spaces */\r
+#define E_OVERFLOW 19 /* Node had too many children */\r
+#define E_TOODEEP 20 /* Too many indentation levels */\r
+#define E_DEDENT 21 /* No matching outer block for dedent */\r
+#define E_DECODE 22 /* Error in decoding into Unicode */\r
+#define E_EOFS 23 /* EOF in triple-quoted string */\r
+#define E_EOLS 24 /* EOL in single-quoted string */\r
+#define E_LINECONT 25 /* Unexpected characters after a line continuation */\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+#endif /* !Py_ERRCODE_H */\r