Refonte du CLI

This commit is contained in:
2016-03-09 11:35:19 +01:00
parent 1a2afe8ed3
commit bef11c0984

View File

@@ -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);
} }
switch (sortie)
{
case A_LEXI:
test_yylex_internal(yyin);
break;
case A_SYNT:
initialise_premiers(); initialise_premiers();
initialise_suivants(); initialise_suivants();
if (!strcmp(argv[1], "-l")) {
test_yylex_internal(yyin);
} else if (!strcmp(argv[1], "-s")) {
afficheSyntaxyque = 1; afficheSyntaxyque = 1;
uniteCourante = yylex(); uniteCourante = yylex();
programme(); programme();
} else if (!strcmp(argv[1], "-a")) { break;
case A_ABST:
initialise_premiers();
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;
case A_SYMB:
initialise_premiers();
initialise_suivants();
uniteCourante = yylex(); uniteCourante = yylex();
n_prog *p = programme(); p = programme();
affiche_t_table(p); affiche_t_table(p);
} else { break;
fprintf(stderr, "option Inconue");
exit(1); default:
printf("Wrong Argument\n");
usage();
} }
uniteCourante = yylex(); uniteCourante = yylex();