1 |
13 |
louismarie |
/*********************************************************************************************/
|
2 |
|
|
/* MODULE DIALOGUE */
|
3 |
|
|
/* ce module a pour but d'afficher les erreurs rencontrées lors de l'exécution du programme. */
|
4 |
|
|
/* Il peut s'agir d'erreurs fatales, correspondant à un plantage, ou d'erreurs de syntaxe */
|
5 |
|
|
/* correspondant à une erreur de l'utilisateur, par exemple dans un fichier source. */
|
6 |
|
|
/* Sont également gérés les avertissements et les indications en mode verbose. */
|
7 |
|
|
/* */
|
8 |
|
|
/* Le module exporte des noms symboliques pour tous les codes d'erreurs et dispose de deux */
|
9 |
|
|
/* points d'entrées pour les deux types d'erreurs */
|
10 |
|
|
/* */
|
11 |
|
|
/*********************************************************************************************/
|
12 |
|
|
|
13 |
|
|
#ifndef M_ERREUR_FLAG
|
14 |
|
|
#define M_ERREUR_FLAG
|
15 |
|
|
|
16 |
|
|
/*********************************************************************************************
|
17 |
|
|
* Identification de l'erreur *
|
18 |
|
|
*********************************************************************************************/
|
19 |
|
|
|
20 |
|
|
/* Ce drapeau doit etre positionné à chaque erreur rencontrée */
|
21 |
|
|
extern int err_code;
|
22 |
|
|
|
23 |
|
|
/* Il faut garder à l'esprit que rien n'empeche un module d'utiliser les codes d'erreurs *
|
24 |
|
|
* qui ont à l'origine été créés pour un autre module. */
|
25 |
|
|
|
26 |
|
|
#define NO_ERR 0 /* Pas d'erreur détectée. */
|
27 |
|
|
|
28 |
|
|
/* Erreurs fatales */
|
29 |
|
|
#define F_FLUX_NULL 1 /* Tentative de lecture dans un flux NULL */
|
30 |
|
|
#define F_ERR_LECT 2 /* Erreur de lecture imprévisible */
|
31 |
|
|
#define F_ERR_OUV 3 /* Erreur d'ouverture de fichier imprévisible */
|
32 |
|
|
#define F_ERR_MEM 4 /* Erreur d'allocation, mémoire insuffisante ? */
|
33 |
|
|
|
34 |
|
|
/* Erreurs plutot du formateur */
|
35 |
|
|
#define S_ERR_FORMAT 301
|
36 |
|
|
#define S_INT_INVALID 302 /* Entier invalide */
|
37 |
|
|
#define S_ALPHA_LONG 303 /* Alpha trop long */
|
38 |
|
|
#define S_ALPHA_INVALID 304
|
39 |
|
|
#define S_CAR_INVALID 305
|
40 |
|
|
|
41 |
|
|
/* Erreurs plutot du préprocesseur */
|
42 |
|
|
#define S_CIRCULAR_FILE 401 /* Inclusion circulaire de fichiers */
|
43 |
|
|
#define S_CIRCULAR_MACRO 402 /* Appel circulaire de macros */
|
44 |
|
|
#define S_FICH_NON_TROUVE 403 /* Fichier spécifié en argument introuvable */
|
45 |
|
|
#define S_DEF_MACRO_EOF 404 /* Troisème accolade fermante non rencontrée */
|
46 |
|
|
#define S_USE_MACRO_EOF 405 /* Troisème accolade fermante non rencontrée */
|
47 |
|
|
#define S_NOM_MAC_INVALID 406 /* Nom de la macro dans sa déclaration invalide */
|
48 |
|
|
#define S_NOM_INCFICH_INVALID 407 /* Nom du fichier à inclure invalide */
|
49 |
|
|
#define S_MAC_NO_MATCH 408 /* Macro incompatible avec sa définition */
|
50 |
|
|
#define S_MAC_TROP_PARAM 409 /* Paramètres non utlisés par la macro */
|
51 |
|
|
|
52 |
|
|
/* Erreurs plutot du du preparateur */
|
53 |
|
|
#define S_ERR_DCL 501
|
54 |
|
|
#define S_DCL_VIDE 502
|
55 |
|
|
#define S_DCL_NON_TERM 503
|
56 |
|
|
#define S_BAD_PROP 504
|
57 |
|
|
#define S_BAD_VAL 505
|
58 |
|
|
#define S_BAD_FUN 506
|
59 |
|
|
#define S_BAD_ARG 507
|
60 |
|
|
#define S_DEP_SST 508 /* Dépassement de la capacité des sous-types. */
|
61 |
|
|
#define S_DEP_FUNC_NB 510 /* Dépassement du nombre maximal de fonctions allouables. */
|
62 |
|
|
#define S_BAD_SST_DEC 511 /* Déclaration du nb de sous-type manquante ou insuffisante. */
|
63 |
|
|
#define S_SEC_SST_DEC 512 /* Second appel à la commande SET SSTNUM non autorisé. */
|
64 |
|
|
#define S_REDEF_INS 513 /* Une instruction est redéfinie dans le fichier Syntaxe. */
|
65 |
|
|
|
66 |
|
|
/* Erreurs pultot de l'analyseur */
|
67 |
|
|
#define S_SYN_ERR 601 /* Erreur de syntaxe dans le fichier source. */
|
68 |
|
|
#define S_FUN_ERR 602 /* Erreur lors de l'application des fonctions de l'adapt. */
|
69 |
|
|
#define S_ADAP_ERR 603 /* Erreur de positionnement du eval_code par l'adaptateur. */
|
70 |
|
|
|
71 |
|
|
/* Erreurs plutot de l'adaptateur. */
|
72 |
|
|
#define S_FUN_INAP 701 /* Erreur, fonction non applicable. */
|
73 |
|
|
#define S_ARG_INCOMP 702 /* Args incompatbiles, erreur dans fichier Syntaxe. */
|
74 |
|
|
#define S_SIGNED_TL 703 /* Entier trop long pour un codage signé */
|
75 |
|
|
#define S_UNSIGNED_TL 704 /* Entier trop long pour le codage non-signé */
|
76 |
|
|
#define S_REDEF_ETIQ 705 /* Etiquette déjà exisante. */
|
77 |
|
|
#define S_BAD_ETIQ 706 /* L'étiquette n'existe pas dans la table. */
|
78 |
|
|
#define S_ADR_INCONNUE 707 /* L'adresse d'implantation est indéterminée. */
|
79 |
|
|
#define S_UNSIGNED_EXPECTED 708 /* Entier non signé attendu */
|
80 |
|
|
#define S_BAD_ALIGN 709 /* Saut à une étiquette non alignée sur 32 bits */
|
81 |
|
|
#define S_TOO_FAR 710 /* Saut à une adresse trop éloignée */
|
82 |
|
|
|
83 |
|
|
/* Erreurs plutot du synthetiseur. */
|
84 |
|
|
|
85 |
|
|
/* Warnings */
|
86 |
|
|
#define W_REGLE_TYPAGE 4001 /* Règle invalide, ignorée */
|
87 |
|
|
#define W_NO_LIST_INC 4002 /* La fonctionalité include désactive la liste */
|
88 |
|
|
#define W_NO_LIST_STDIN 4003 /* La lecture dans le flux standard aussi */
|
89 |
|
|
#define W_REDEF_MAC 4004 /* Redéfinition d'une macro */
|
90 |
|
|
#define W_UNDEF_NOMAC 4005 /* Tentative de suppression d'une macro non définie */
|
91 |
|
|
#define W_REDEF_CODE 5001 /* Réutilisation du code, les sst seront les mêmes */
|
92 |
|
|
#define W_REDEF_SST 5002 /* Réutilisation du nom de sous-type */
|
93 |
|
|
#define W_NO_SYNTAX 5004 /* Pas de fichier Syntax trouvé */
|
94 |
|
|
#define W_SEPLEX_INIT 6001 /* seplex non initialisé dans fichier Syntaxe */
|
95 |
|
|
#define W_SRCE_MOD 8001 /* Le flux source a été modifié */
|
96 |
|
|
#define W_ARG_INC 9001 /* Mauvaise utilisation des arguments */
|
97 |
|
|
#define W_FICH_DEF_MACRO 9002 /* Fichier macro principal non ouvert */
|
98 |
|
|
#define W_MACRO_MANQ 9003 /* Auncun fichier des macros par défaut chargé */
|
99 |
|
|
|
100 |
|
|
/* Commentaires. */
|
101 |
|
|
|
102 |
|
|
/* Main */
|
103 |
|
|
#define B_INIT_SYNTAX -901 /* Initialisation de la syntaxe de l'assembleur */
|
104 |
|
|
#define B_INIT_MACRO -902 /* Initialisation des macros par défaut */
|
105 |
|
|
#define B_LECT_SRC -903 /* Lecture des sources.. */
|
106 |
|
|
#define B_STR_OBJ -904 /* Enregistrement du fichier objet... */
|
107 |
|
|
#define B_STR_LST -905 /* Creation de la liste d'assemblage... */
|
108 |
|
|
#define B_ERR_REP -906 /* Rapport d'erreurs : */
|
109 |
|
|
#define B_NBR_ERR_SYN -907 /* erreurs détectées lors de la synthèse */
|
110 |
|
|
#define B_NBR_ERR_ANA -908 /* erreurs détectées lors de l'analyse */
|
111 |
|
|
#define B_SYN -909 /* Analyse du code.. */
|
112 |
|
|
#define B_ANA -910 /* Synthèse.. */
|
113 |
|
|
|
114 |
|
|
/* Preparateur */
|
115 |
|
|
#define B_CASSE -600 /* Basculement en mode sensible à la casse */
|
116 |
|
|
#define B_NOCASSE -601 /* Basculement en mode insensible à la casse */
|
117 |
|
|
#define B_MAC_DEF -602 /* Détection d'un fichier de pseudo-instructions */
|
118 |
|
|
#define B_INIT_D -603 /* Activation du support des macros */
|
119 |
|
|
#define B_INIT_U -604 /* Activation du support de la supression de macros */
|
120 |
|
|
#define B_INIT_I -605 /* Activation du support de l'inclusion de fichiers */
|
121 |
|
|
#define B_INIT_SEP -606 /* Initialisation du séparateur d'instructions */
|
122 |
|
|
#define B_PREP_SST -607 /* Préparation pour l'ajout de sous-types */
|
123 |
|
|
#define B_ADD_SST -608 /* Nouveau sous-type détecté */
|
124 |
|
|
|
125 |
|
|
/* Adaptateur */
|
126 |
|
|
#define B_TABLAB -700 /* Table des étiquettes */
|
127 |
|
|
|
128 |
|
|
/* Preprocesseur */
|
129 |
|
|
#define B_NO_MACRO -401 /* Aucune macro définie */
|
130 |
|
|
#define B_MACRO_DISPO -402 /* Voici la liste des macros disponibles */
|
131 |
|
|
|
132 |
|
|
/*********************************************************************************************
|
133 |
|
|
* Génération des messages d'erreur *
|
134 |
|
|
*********************************************************************************************/
|
135 |
|
|
|
136 |
|
|
/* Exportation du controleur de blabla. */
|
137 |
|
|
extern int verbose;
|
138 |
|
|
|
139 |
|
|
extern char sep_fich_inclus[]; /* "Inclus depuis" */
|
140 |
|
|
char * search_msg(); /* Fonction de recherche du message correspondant au code d'erreur. */
|
141 |
|
|
void display_help(); /* Fonction d'affichage de l'aide en ligne. */
|
142 |
|
|
|
143 |
|
|
void affiche_message(char * orig, int ligne);
|
144 |
|
|
|
145 |
|
|
#define DIALOGUE(ptr_org, ligne, code)\
|
146 |
|
|
{\
|
147 |
|
|
err_code=code;\
|
148 |
|
|
affiche_message(ptr_org, ligne);\
|
149 |
|
|
}
|
150 |
|
|
|
151 |
|
|
#endif
|