mes fichiers locaux
Cette révision appartient à :
révision
41b3703245
3 fichiers modifiés avec 128 ajouts et 0 suppressions
22
main.c
Fichier normal
22
main.c
Fichier normal
|
@ -0,0 +1,22 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include "pile.h"
|
||||
|
||||
int main(int argc, char * argv[])
|
||||
{
|
||||
/*struct Pile P;
|
||||
Init_Pile(&P);
|
||||
Empiler(&P, 4);
|
||||
Empiler(&P, 5);
|
||||
Affichage(P.Pil);*/
|
||||
|
||||
Programme * P;
|
||||
P = lexer(argv[1]);
|
||||
|
||||
for(int i=0; i<P->taille; i++)
|
||||
{
|
||||
printf("TOKEN : %s \n", P->tokens[i]);
|
||||
}
|
||||
}
|
75
pile.c
Fichier normal
75
pile.c
Fichier normal
|
@ -0,0 +1,75 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
#include "pile.h"
|
||||
|
||||
void Init_Pile(struct Pile *new)
|
||||
{
|
||||
//struct Pile new;
|
||||
new->Pil=NULL;
|
||||
new->nbElements=0;
|
||||
//return new;
|
||||
}
|
||||
|
||||
void Empiler(struct Pile * P, int i)
|
||||
{
|
||||
struct Cell * cel= malloc(sizeof(struct Cell));
|
||||
cel->Ent = i;
|
||||
cel->Suiv = P->Pil;
|
||||
P->Pil = cel;
|
||||
P->nbElements +=1;
|
||||
}
|
||||
|
||||
struct Cell * Depiler(struct Pile * P)
|
||||
{
|
||||
struct Cell * res;
|
||||
if (P->nbElements != 0)
|
||||
{
|
||||
res = P->Pil;
|
||||
P->Pil= P->Pil->Suiv;
|
||||
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
void Affichage(struct Cell * C)
|
||||
{
|
||||
if(C == NULL)
|
||||
{
|
||||
//printf("Rien a afficher");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("%d \n", C->Ent);
|
||||
Affichage(C->Suiv);
|
||||
}
|
||||
}
|
||||
|
||||
int numberOfDelimiters(char* string) {
|
||||
int count = 0;
|
||||
for (int i=0;i<strlen(string);i++) {
|
||||
if (string[i] == ' ')
|
||||
{count++;}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
Programme* lexer(char* chaine) {
|
||||
char *token,*str;
|
||||
str = strdup(chaine);
|
||||
int i=0;
|
||||
int arraysize = (numberOfDelimiters(str)+1);
|
||||
char** programme = (char**)malloc(sizeof(char*)*arraysize);
|
||||
|
||||
while ( (token = strsep(&str, " ")) ) {
|
||||
programme[i] = token;
|
||||
i++;
|
||||
}
|
||||
|
||||
Programme *retour = (Programme*)malloc(sizeof(Programme));
|
||||
retour->tokens = programme;
|
||||
retour->taille = i;
|
||||
return retour;
|
||||
}
|
31
pile.h
Fichier normal
31
pile.h
Fichier normal
|
@ -0,0 +1,31 @@
|
|||
#ifndef PILE_H
|
||||
#define PILE_H
|
||||
|
||||
|
||||
|
||||
struct Cell;
|
||||
|
||||
struct Cell{
|
||||
int Ent;
|
||||
struct Cell * Suiv;
|
||||
};
|
||||
|
||||
struct Pile{
|
||||
int nbElements;
|
||||
struct Cell * Pil;
|
||||
};
|
||||
|
||||
typedef struct Programme {
|
||||
char **tokens;
|
||||
int taille;
|
||||
} Programme;
|
||||
|
||||
void Init_Pile(struct Pile * new);
|
||||
void Empiler(struct Pile * P, int i);
|
||||
struct Cell * Depiler(struct Pile * P);
|
||||
void Affichage(struct Cell * C);
|
||||
|
||||
int numberOfDelimiters(char* string);
|
||||
Programme* lexer(char* chaine);
|
||||
|
||||
#endif
|
Chargement…
Référencer dans un nouveau ticket