Why does line 24 give a seg fault?
Rule *parse_file(FILE *fp) {
    Rule *result;
    Rule *prev_rule;

    char line[MAXLINE];
    fgets(&(line[0]), MAXLINE, fp);

    Rule *head_rule = malloc(sizeof(Rule));
    result = head_rule;
    prev_rule = head_rule;

    char *token = strtok(line, ":");
    if (head_rule != NULL && head_rule->target != NULL) {
        head_rule->target = malloc(strlen(token));
        strcpy(head_rule->target, token);
    }
    fgets(line, MAXLINE, fp);
    while (&(line[0]) != NULL) {
        if (is_comment_or_empty(line) == 0 && line[0] != '\t') {
            token = strtok(&(line[0]), ":");

            Rule *new_rule = add_rule(prev_rule);
            head_rule->target = malloc(strlen(token) + 1);
            strcpy(new_rule->target, token);

            prev_rule->next_rule = new_rule;
            prev_rule = new_rule;
        }
        fgets(line, MAXLINE, fp);
        token = strtok(&(line[0]), " ");
    }
    return result;
}