#include "expr.h"

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

// --- Por escribir. Lo que debe hacer cada una está en expr.h. ---
// Pueden agregar funciones auxiliares static. Sin variables globales.

// Sesión 1

Expr *expr_number(double value) {
    (void) value;
    return NULL;
}

Expr *expr_variable(const char *name) {
    (void) name;
    return NULL;
}

Expr *expr_binary(BinaryOp op, Expr *left, Expr *right) {
    (void) op;
    (void) left;
    (void) right;
    return NULL;
}

void expr_free(Expr *e) {
    (void) e;
}

void expr_print(const Expr *e, FILE *out) {
    (void) e;
    (void) out;
}

int expr_eval(const Expr *e, const Env *env, double *result) {
    (void) e;
    (void) env;
    (void) result;
    return 0;
}

// Sesión 2

Expr *expr_copy(const Expr *e) {
    (void) e;
    return NULL;
}

int expr_equal(const Expr *a, const Expr *b) {
    (void) a;
    (void) b;
    return -1;
}

Expr *expr_simplify(Expr *e) {
    (void) e;
    return NULL;
}

Expr *expr_derive(const Expr *e, const char *name) {
    (void) e;
    (void) name;
    return NULL;
}
