Здравствуйте, снова пишу интерпретатор, так вот..... Есть, допустим, входной файл, содержащий в себе инструкции вида:
A := B + C;;; ss D := E & G;;;;;
C := F <> z;;
X := \A;
rEad(D, base);
write(D, base);
Инструкции могут быть записаны в одну строку, иметь множество пробелов и табуляций, содержать ошибки и тд, но суть не в этом. У меня есть метод, который просто парсит эту строку и возвращает динамический массив строк(То есть, допустим, строку C := F <> z;; он распарсит как "C" ":=" "F" "<>" "z" ";" ";" ).
Я хочу, чтобы инструкции выводились на экран. Если в строке одна инструкция, как, к примеру, 2-5 строках, то понятно, как их выводить. Проблема в том, как разделить вывод нескольких инструкций, записанных в одной строке. То есть, если у меня в строке <Операция1> <Операция2>(как в 1 строке), то я хочу сделать такой вывод:
<Операция1>
<Операция2>
Важно: разделителями инструкций является символ точка с запятой ;
Подскажите пожалуйста, как это сделать? Это просто, но я уже голову сломал. Вот фрагмент неудачной попытки
#include <stdio.h>
#include <string.h>
#include "stringparse.h"
int operation_processing(FILE *file)
{
int i;
int j;
int k;
int size;
char buf[BUFSIZ];
char **parsed_string = NULL;
i = 0;
size = 0;
while(!feof(file))
{
fgets(buf, sizeof(buf), file);
strtok(buf, "\n");
parsed_string = string_parse(buf, &size);
for(i = 0; i < size; i++)
{
while(strcmp(parsed_string[i], ";"))
{
printf("%s ", parsed_string[i]);
i++;
if(!strcmp(parsed_string[i], ";"))
{
while(!strcmp(parsed_string[i], ";"))
{
printf("; ");
i++;
}
printf("\n");
}
}
}
}
return (0);
}