OpenCores
URL https://opencores.org/ocsvn/minimips_superscalar/minimips_superscalar/trunk

Subversion Repositories minimips_superscalar

[/] [minimips_superscalar/] [trunk/] [gasm_with_mult2_instruction/] [include/] [preparateur.h] - Blame information for rev 6

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 6 mcafruni
/*********************************************************************************************/
2
/* MODULE PREPARATEUR                                                                        */
3
/* ce module a pour but de lire le fichier Syntaxe du programme et de générer l'arbre des    */
4
/* lexèmes qui lui correspond.                                                               */
5
/*                                                                                           */
6
/* Le seul point d'accès de ce module est la fonction init_arbre qui reçoit le nom du        */
7
/* fichier Syntaxe à utiliser.                                                               */
8
/*                                                                                           */
9
/*********************************************************************************************/
10
 
11
#ifndef M_PREPA_FLAG
12
#define M_PREPA_FLAG
13
 
14
#include <formateur.h>
15
#include <parametres.h>
16
#include <adaptateur.h>
17
 
18
/*********************************************************************************************/
19
/*                              DEFINITION DE L'ARBRE DE LEXEMES                             */
20
/* Définition de l'arbre de lexèmes généré par le préparateur et des autres types auquels il */
21
/* se rapporte.                                                                              */
22
/*********************************************************************************************/
23
 
24
/* Définition de la feuille de l'arbre.                                                      */
25
typedef struct
26
{
27
        type_mask * mask_primaire;      /* masque primaire du codage.                        */
28
        char nbr_func;                  /* nombre de fonctions.                              */
29
        type_ptr_fgm * ptr_func;        /* adresse du début du tableau des fonctions.        */
30
} type_feuille;
31
 
32
/* Définition de la structure arbre elle-même.                                               */
33
typedef struct noeud_arbre
34
{
35
        type_lexeme lexeme;
36
        struct noeud_arbre * ptr_fils;
37
        struct noeud_arbre * ptr_frere;
38
        type_feuille * ptr_feuille;
39
} type_noeud;
40
 
41
#define ALLOC_FEUILLE(feuille)  \
42
{\
43
        feuille=(type_feuille *) malloc(sizeof(type_feuille));\
44
        if (feuille==NULL) DIALOGUE(msg_orig, 0, F_ERR_MEM);\
45
        feuille->mask_primaire=NULL;\
46
        feuille->nbr_func=0;\
47
        feuille->ptr_func=NULL;\
48
}
49
 
50
#define FREE_FEUILLE(feuille)   \
51
{\
52
        if (feuille->mask_primaire!=NULL) FREE_MASK(feuille->mask_primaire);\
53
        if (feuille->ptr_func!=NULL) free(feuille->ptr_func);\
54
        free(feuille);\
55
}
56
 
57
#define ALLOC_NOEUD(noeud)      \
58
{\
59
        noeud=(type_noeud *) malloc(sizeof(type_noeud));\
60
        if (noeud==NULL) DIALOGUE(msg_orig, 0, F_ERR_MEM);\
61
        noeud->lexeme.type=0;\
62
        noeud->lexeme.valeur.op=0;\
63
        noeud->ptr_fils=NULL;\
64
        noeud->ptr_frere=NULL;\
65
        noeud->ptr_feuille=NULL;\
66
}
67
 
68
#define FREE_NOEUD(noeud)       \
69
{\
70
        if (noeud->ptr_feuille!=NULL) FREE_FEUILLE(noeud->ptr_feuille);\
71
        free(noeud);\
72
}
73
 
74
 
75
/* Exportation de la racine de l'arbre des lexèmes.                                          */
76
extern type_noeud * root;
77
 
78
 
79
/* Nombre maximal de fonctions pour une instruction dans le fichier Syntaxe.                 */
80
#define MAX_FONCTIONS           16
81
 
82
int init_arbre(char * fichier_syntaxe);
83
void clear_preparateur();
84
 
85
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.