Create compile module combining passes together
This commit is contained in:
parent
018aec5339
commit
18271a2988
@ -1,4 +1,5 @@
|
||||
add_library(lib
|
||||
compile.c
|
||||
construct.c
|
||||
convert.c
|
||||
desugar.c
|
||||
|
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;
|
||||
}
|
13
lib/include/compile.h
Normal file
13
lib/include/compile.h
Normal file
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* Copyright (c) Camden Dixie O'Brien
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
#ifndef COMPILE_H
|
||||
#define COMPILE_H
|
||||
|
||||
#include "fsa.h"
|
||||
|
||||
bool compile(const char *regex, int len, fsa_t *dfa_out);
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user