Refonte du CLI
This commit is contained in:
@@ -6,41 +6,101 @@
|
|||||||
#include "affiche_table_symbole.h"
|
#include "affiche_table_symbole.h"
|
||||||
#include "symboles.h"
|
#include "symboles.h"
|
||||||
|
|
||||||
|
#define A_LEXI 1
|
||||||
|
#define A_SYNT 2
|
||||||
|
#define A_ABST 3
|
||||||
|
#define A_SYMB 4
|
||||||
|
|
||||||
extern int uniteCourante;
|
extern int uniteCourante;
|
||||||
extern int afficheSyntaxyque;
|
extern int afficheSyntaxyque;
|
||||||
|
|
||||||
char yytext[100];
|
char yytext[100];
|
||||||
FILE *yyin;
|
FILE *yyin;
|
||||||
|
n_prog *p;
|
||||||
|
|
||||||
|
void usage()
|
||||||
|
{
|
||||||
|
printf("Usage:\n");
|
||||||
|
printf("./compilateur-l -l fileName\n");
|
||||||
|
printf("./compilateur-l -s fileName\n");
|
||||||
|
printf("./compilateur-l -a fileName\n");
|
||||||
|
printf("./compilateur-l -t fileName\n");
|
||||||
|
printf("./compilateur-l fileName\n");
|
||||||
|
exit (8);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
yyin = fopen(argv[2], "r");
|
|
||||||
if(argc < 3 && yyin == NULL){
|
int sortie = A_SYMB;
|
||||||
|
while ((argc > 1) && (argv[1][0] == '-'))
|
||||||
|
{
|
||||||
|
switch (argv[1][1])
|
||||||
|
{
|
||||||
|
case 'l':
|
||||||
|
sortie = A_LEXI;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 's':
|
||||||
|
sortie = A_SYNT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'a':
|
||||||
|
sortie = A_ABST;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 't':
|
||||||
|
sortie = A_SYMB;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
printf("Wrong Argument: %s\n", argv[1]);
|
||||||
|
usage();
|
||||||
|
}
|
||||||
|
|
||||||
|
++argv;
|
||||||
|
--argc;
|
||||||
|
}
|
||||||
|
|
||||||
|
yyin = fopen(argv[argc-1], "r");
|
||||||
|
if(yyin == NULL){
|
||||||
fprintf(stderr, "impossible d'ouvrir le fichier %s\n", argv[2]);
|
fprintf(stderr, "impossible d'ouvrir le fichier %s\n", argv[2]);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
initialise_premiers();
|
switch (sortie)
|
||||||
initialise_suivants();
|
{
|
||||||
|
case A_LEXI:
|
||||||
|
test_yylex_internal(yyin);
|
||||||
|
break;
|
||||||
|
|
||||||
if (!strcmp(argv[1], "-l")) {
|
case A_SYNT:
|
||||||
test_yylex_internal(yyin);
|
initialise_premiers();
|
||||||
} else if (!strcmp(argv[1], "-s")) {
|
initialise_suivants();
|
||||||
afficheSyntaxyque = 1;
|
afficheSyntaxyque = 1;
|
||||||
|
uniteCourante = yylex();
|
||||||
|
programme();
|
||||||
|
break;
|
||||||
|
|
||||||
uniteCourante = yylex();
|
case A_ABST:
|
||||||
programme();
|
initialise_premiers();
|
||||||
} else if (!strcmp(argv[1], "-a")) {
|
initialise_suivants();
|
||||||
uniteCourante = yylex();
|
uniteCourante = yylex();
|
||||||
n_prog *p = programme();
|
p = programme();
|
||||||
affiche_n_prog(p);
|
affiche_n_prog(p);
|
||||||
} else if (!strcmp(argv[1], "-t")) {
|
break;
|
||||||
uniteCourante = yylex();
|
|
||||||
n_prog *p = programme();
|
case A_SYMB:
|
||||||
affiche_t_table(p);
|
initialise_premiers();
|
||||||
} else {
|
initialise_suivants();
|
||||||
fprintf(stderr, "option Inconue");
|
uniteCourante = yylex();
|
||||||
exit(1);
|
p = programme();
|
||||||
|
affiche_t_table(p);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
printf("Wrong Argument\n");
|
||||||
|
usage();
|
||||||
}
|
}
|
||||||
|
|
||||||
uniteCourante = yylex();
|
uniteCourante = yylex();
|
||||||
|
|||||||
Reference in New Issue
Block a user