/media/sda-magnetic/david/Dokumente-15/fernuni-hagen/cs-i-ii/old-cs-2-03/pascal-compiler/siac4t/virtualmachine02.c


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define N_LINES             256
#define LINE_MAX_CH         128
#define N_VAR_ABC            26
#define N_VAR_X            1024
#define N_ATOM               20
#define ATOM_MAX_CH          16

char code[N_LINES][LINE_MAX_CH];
int var_abc[N_VAR_ABC];
int var_x[N_VAR_X];

char atom[N_ATOM][ATOM_MAX_CH];

int get_atom_token(char *d, char *s) {
    char *p;
    
    p = s;
    while ((*s != ' ' ) && (*s != 0) && (*s != ',') && (*s != '\n')) {
        *d = *s;
        s++;
        d++;
    }
    *d = 0;
    while ((*s == ',') || (*s == ' ') || (*s == '\n')) s++;
return (s-p);
}

int get_atoms(int line) {
    int i;
    int length;
    int length2;
    
    length = 0;
    for (i = 0;  ; i++) {
        if((length2 = get_atom_token(atom[i], code[line] + length)) == 0)
            break;
        length += length2;
        printf("%s\n", atom[i]);
    }
    printf("\n");
    

    
return 9;
}

int main(int argc, char *argv[]) {
    FILE *fp;
    int line_counter;
    int i;
    
    if((fp = fopen(argv[1], "r")) == NULL) {
        perror("Can't open file");
        exit(1);
    }
    
    line_counter = 0;
    while(!feof(fp)) {
        fgets(code[line_counter], LINE_MAX_CH, fp);
        line_counter++;
    }
    
    for (i = 0;  i < N_VAR_ABC;  i++)
        var_abc[i] = 0;
    for (i = 0;  i < N_VAR_X;  i++)
        var_x[i] = 0;
    
    for (i = 0;  i < line_counter;  i++) {
        get_atoms(i);
        if(strcmp(atom[0], "add") == 0) {
            
        }
    }
    
    
    fclose(fp);
    
return 0;
}