00001
00007 #include"operations.h"
00008 #include<stdio.h>
00009 #include<stdlib.h>
00010 #include<string.h>
00011 #include"erreur.h"
00012
00018 void analyse(FILE *stream){
00019 char ligne[200];
00020 int i;
00021 while(1){
00022
00023
00024 for(i=0;i<200;i++){
00025 ligne[i]=fgetc(stream);
00026 if(ligne[i]=='\n'){
00027 ligne[i]='\0';
00028 break;
00029 }
00030 }
00031
00032 if(i==200){
00033 num_erreur=E_LONG;
00034 print_erreur("!");
00035 continue;
00036 }
00037 switch(ligne[0]){
00038 case '@':
00039 if( !traiteConstante(ligne+1) )
00040 print_erreur("assignation");
00041 break;
00042 case ';': break;
00043 case '\t':
00044 if( !traiteInstruction(ligne+1) )
00045 print_erreur("instruction");
00046 break;
00047 case '\0': end(); return ;
00048 default:
00049 num_erreur=E_UNSUP;
00050 print_erreur("ligne inconnue");
00051 }
00052 }
00053 }
00054
00062 int main(int argc, char** argv){
00063 FILE *stream;
00064
00065 if(argc!=2){
00066 fprintf(stderr,"Usage : %s file\n",argv[0]);
00067 return EXIT_FAILURE;
00068 }
00069
00070 if(strcmp(argv[1],"-")){
00071 stream=fopen(argv[1],"r");
00072 if(stream==NULL){
00073 print_erreur(argv[1]);
00074 return EXIT_FAILURE;
00075 }
00076 }
00077 else
00078 stream=stdin;
00079
00080 analyse(stream);
00081 return EXIT_SUCCESS;
00082 }