Skip to content
Snippets Groups Projects
epsilon.c 660 B
Newer Older
Dan Hirsch's avatar
Dan Hirsch committed
#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;
}

Rob Zinkov's avatar
Rob Zinkov committed
static bool episilon_ctrvm(HRVMProg *prog, void* env) {
  return true;
}

Dan Hirsch's avatar
Dan Hirsch committed
static const HParserVtable epsilon_vt = {
  .parse = parse_epsilon,
  .isValidRegular = h_true,
  .isValidCF = h_true,
Rob Zinkov's avatar
Rob Zinkov committed
  .compile_to_rvm = episilon_ctrvm,
Dan Hirsch's avatar
Dan Hirsch committed
static const HParser epsilon_p = {
  .vtable = &epsilon_vt,
  .env = NULL
};

Dan Hirsch's avatar
Dan Hirsch committed
const HParser* h_epsilon_p() {
Dan Hirsch's avatar
Dan Hirsch committed
  return &epsilon_p;
Dan Hirsch's avatar
Dan Hirsch committed
}
const HParser* h_epsilon_p__m(HAllocator* mm__) {
  return &epsilon_p;
}