summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorleo <leo@azuminha.com>2024-04-18 18:54:23 -0300
committerleo <leo@azuminha.com>2024-04-18 18:54:23 -0300
commitbf199c939018191c575fcd17b4ddd608dd2b9b69 (patch)
treeecc0bcc092fa7a852fec3b087b69c3ace4162655
parent954fc6b9d4bfee8b2eb1af11f4e62a66b9e8da57 (diff)
fixed some bugsHEADmaster
-rw-r--r--lexical.c18
-rw-r--r--main.c22
2 files changed, 26 insertions, 14 deletions
diff --git a/lexical.c b/lexical.c
index b742311..199b3bd 100644
--- a/lexical.c
+++ b/lexical.c
@@ -10,7 +10,7 @@
char proximo = '\n';
int is_EOF = 0;
-int linha = 1; // Numero da linha atual)
+int linha = 0; // Numero da linha atual)
int identificador_num = 1;
FILE *fout;
@@ -89,19 +89,21 @@ void init_all_map(){
void PROXIMO(FILE *fp){
if(is_EOF) return;
- if(fscanf(fp, "%c", &proximo) == EOF){
- is_EOF = 1;
- return ;
- }
if(proximo == '\n'){
- printf("\n");
- fprintf(fout, "\n");
- PROXIMO(fp);
+ if(linha != 0){
+ printf("\n");
+ fprintf(fout, "\n");
+ }
linha++;
printf("linha %d: ", linha);
fprintf(fout, "linha %d: ", linha);
}
+ if(fscanf(fp, "%c", &proximo) == EOF){
+ is_EOF = 1;
+ return ;
+ }
+
return ;
}
diff --git a/main.c b/main.c
index a87807d..fdb93bb 100644
--- a/main.c
+++ b/main.c
@@ -28,8 +28,17 @@ int main(int argc, char *argv[]){
init_all_map();
char *file_path = argv[1];
+ //char *file_path = "asd.asd";
FILE *fp = fopen(file_path, "r");
+ if(fp == NULL){
+ fprintf(stderr, "Nao foi possivel abrir o arquivo\n");
+ exit(2);
+ }
fout = fopen("out.txt", "w");
+ if(fout == NULL){
+ fprintf(stderr, "Nao foi possivel abrir o arquivo de saida\n");
+ exit(3);
+ }
extern char proximo;
char *simbolo;
@@ -37,13 +46,14 @@ int main(int argc, char *argv[]){
PROXIMO(fp);
- printf("linha 1: ");
- fprintf(fout, "linha 1: ");
while(is_EOF == 0){
- while(proximo == ' ' || proximo == '\t' || proximo == '\r') PROXIMO(fp);
- while(proximo == '\n' && is_EOF != 1){
- printf("\n");
- fprintf(fout, "\n");
+ /*while(proximo == ' ' || proximo == 9 || proximo == '\r'){
+ PROXIMO(fp);
+ }*/
+
+ while((proximo == ' ' || proximo == 9 || proximo == '\r' || proximo == '\n') && is_EOF == 0){
+ //printf("\n");
+ //fprintf(fout, "\n");
PROXIMO(fp);
}
if(is_EOF) break;