1 #ifndef INCLUDED_UTIL_H_ 2 #define INCLUDED_UTIL_H_ 3 4 #include <stdio.h> 5 6 // initialization of error-count values: #times an error can be reported 7 // inside a function definition 8 #define ERRCOUNT 5 9 10 typedef enum // update data.c when this enum changes 11 { 12 sem_noMain, 13 sem_mainNotVoid, 14 sem_multiplyDefined, 15 sem_funArgTypeMismatch, 16 sem_funNotDefined, 17 sem_noBreak, 18 sem_argCount, 19 sem_noContinue, 20 sem_zeroDiv, 21 sem_undefined, 22 sem_noModulo0, 23 sem_returnType, 24 sem_typeConflict, 25 sem_illegalType, 26 sem_lvalueNeeded, 27 sem_illegalArgCount, 28 sem_illegalCast, 29 sem_stringsRequired, 30 31 semCOUNT 32 33 } SEMANTIC_ERR; 34 35 typedef struct MsgCount_ 36 { 37 unsigned count; 38 char const *msg; 39 } MsgCount; 40 41 42 char const *util_sourceName(void); 43 char const *util_string(void); 44 45 int util_printf(char const *fmt, ...); /* fill gu_lexstring */ 46 47 void util_catString(char const *txt); 48 void util_out(FILE *bin, void const *source, unsigned sourceSizeInBytes); 49 void util_resetSemErr(void); 50 void util_semantic(SEMANTIC_ERR type, ...); 51 void util_setSourceName(char const *txt); 52 void util_setString(char const *txt); 53 void util_scan(char const *fmt, char const *text); 54 55 #endif 56 57 58