Create compile module combining passes together
This commit is contained in:
28
lib/compile.c
Normal file
28
lib/compile.c
Normal file
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* Copyright (c) Camden Dixie O'Brien
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
#include "compile.h"
|
||||
|
||||
#include "parse.h"
|
||||
#include "desugar.h"
|
||||
#include "construct.h"
|
||||
#include "convert.h"
|
||||
|
||||
bool compile(const char *regex, int len, fsa_t *dfa_out)
|
||||
{
|
||||
regex_t pt;
|
||||
if (-1 == parse_expr(regex, len, &pt))
|
||||
return false;
|
||||
desugar_regex(&pt);
|
||||
|
||||
fsa_t nfa;
|
||||
construct_nfa(&pt, &nfa);
|
||||
regex_free(&pt);
|
||||
|
||||
convert_to_dfa(&nfa, dfa_out);
|
||||
fsa_free(&nfa);
|
||||
|
||||
return true;
|
||||
}
|
||||
Reference in New Issue
Block a user