#include "parser_internal.h"

static HParseResult* parse_epsilon(void* env, HParseState* state) {
  (void)env;
  HParseResult* res = a_new(HParseResult, 1);
  res->ast = NULL;
  res->arena = state->arena;
  return res;
}

static bool episilon_ctrvm(HRVMProg *prog, void* env) {
  return true;
}

static const HParserVtable epsilon_vt = {
  .parse = parse_epsilon,
  .isValidRegular = h_true,
  .isValidCF = h_true,
  .compile_to_rvm = episilon_ctrvm,
};

static const HParser epsilon_p = {
  .vtable = &epsilon_vt,
  .env = NULL
};

const HParser* h_epsilon_p() {
  return &epsilon_p;
}
const HParser* h_epsilon_p__m(HAllocator* mm__) {
  return &epsilon_p;
}