// La regla chain → chain "-" NUMBER | NUMBER, copiada tal cual. No termina.
#include <stdio.h>

#include "lexer.h"

typedef struct {
    Lexer *lexer;
    Token current;
} Parser;

static void advance(Parser *p) {
    p->current = lexer_next(p->lexer);
}

static double parse_chain(Parser *p) {
    double left = parse_chain(p);       // primero la regla misma, sin consumir nada
    if (p->current.kind == TOKEN_MINUS) {
        advance(p);
        double right = p->current.number;
        advance(p);
        return left - right;
    }
    return left;
}

int main(void) {
    Parser parser = {.lexer = lexer_new("1 - 2 - 3")};
    if (parser.lexer == NULL) {
        return 1;
    }
    advance(&parser);
    printf("%g\n", parse_chain(&parser));
    lexer_free(parser.lexer);
    return 0;
}
