hobbes
a language, embedded compiler, and runtime for efficient dynamic expression evaluation, data storage and analysis
Classes | Namespaces | Typedefs | Functions | Variables
regex.C File Reference
#include <hobbes/eval/cc.H>
#include <hobbes/lang/pat/regex.H>
#include <hobbes/util/array.H>
#include <hobbes/util/str.H>
#include <hobbes/util/rmap.H>
Include dependency graph for regex.C:

Classes

struct  hobbes::REps
 
struct  hobbes::RCharRange
 
struct  hobbes::RStar
 
struct  hobbes::REither
 
struct  hobbes::RSeq
 
struct  hobbes::RBind
 
struct  hobbes::switchRegex< T >
 
struct  hobbes::bnamesF
 
struct  hobbes::char_range_ord
 
struct  hobbes::NFAState
 
struct  hobbes::linkStateF
 
struct  hobbes::DFAState
 

Namespaces

 hobbes
 

Typedefs

typedef uint8_t hobbes::rchar_t
 
typedef std::pair< rchar_t, rchar_t > hobbes::CharRange
 
typedef std::vector< CharRange > hobbes::CharRanges
 
typedef std::pair< size_t, std::set< rchar_t > > hobbes::DCharset
 
typedef std::pair< size_t, RegexPtr > hobbes::DRegex
 
typedef uint32_t hobbes::state
 
typedef std::set< state > hobbes::stateset
 
typedef uint32_t hobbes::result
 
typedef range_map< rchar_t, stateset, char_range_ord > hobbes::ntransitions
 
typedef std::map< result, str::sethobbes::srcmarkers
 
typedef std::vector< NFAState > hobbes::NFA
 
typedef std::map< state, stateset > hobbes::EpsClosure
 
typedef std::vector< bool > hobbes::statemarks
 
typedef range_map< rchar_t, state, char_range_ord > hobbes::dtransitions
 
typedef std::vector< DFAState > hobbes::DFA
 
typedef std::map< stateset, state > hobbes::Nss2Ds
 
typedef std::map< state, state > hobbes::EqStates
 

Functions

template<typename T >
hobbes::switchOf (const RegexPtr &p, const switchRegex< T > &f)
 
RegexPtr hobbes::epsilon ()
 
RegexPtr hobbes::charLit (rchar_t c)
 
RegexPtr hobbes::charRange (rchar_t b, rchar_t e)
 
RegexPtr hobbes::zeroOrMore (const RegexPtr &p)
 
RegexPtr hobbes::either (const RegexPtr &p0, const RegexPtr &p1)
 
RegexPtr hobbes::bindTo (const std::string &name, const RegexPtr &p)
 
RegexPtr hobbes::sequence (const RegexPtr &p0, const RegexPtr &p1)
 
RegexPtr hobbes::anyOf (const Regexes &rs)
 
CharRanges hobbes::toRanges (const std::set< rchar_t > &cs)
 
RegexPtr hobbes::anyOf (const std::set< rchar_t > &cs)
 
void hobbes::unescapeInto (rchar_t e, std::set< rchar_t > *out)
 
RegexPtr hobbes::unescapePatChar (rchar_t x)
 
void hobbes::charRange (rchar_t i, rchar_t e, std::set< rchar_t > *out)
 
const std::set< rchar_t > & hobbes::anyChars ()
 
DCharset hobbes::readCharset (const std::string &x, size_t i)
 
DRegex hobbes::diffRegex (const RegexPtr &lhs, const std::string &x, size_t i)
 
DRegex hobbes::returnR (const std::string &x, size_t k, const RegexPtr &r)
 
DRegex hobbes::seqR (const RegexPtr &lhs, const RegexPtr &c, const std::string &x, size_t k)
 
RegexPtr hobbes::parseRegex (const std::string &)
 
str::seq hobbes::bindingNames (const RegexPtr &)
 
CharRanges hobbes::usedCharRanges (const NFA &nfa, const stateset &ss)
 
state hobbes::regexBefore (const RegexPtr &, state cont, result, NFA *)
 
state hobbes::accumRegex (const RegexPtr &p, result x, NFA *nfa)
 
std::set< rchar_t > hobbes::usedChars (const NFA &nfa)
 
std::string hobbes::descStates (const stateset &ss)
 
void hobbes::print (std::ostream &out, const NFA &nfa)
 
void hobbes::findEpsClosure (const NFA &nfa, state s, statemarks *sms, EpsClosure *ec)
 
void hobbes::findEpsClosure (const NFA &nfa, EpsClosure *ec)
 
const stateset & hobbes::epsState (const EpsClosure &ec, state s)
 
stateset hobbes::epsState (const EpsClosure &ec, const stateset &ss)
 
void hobbes::print (std::ostream &out, const EpsClosure &ec)
 
void hobbes::insert (stateset *o, const stateset &i)
 
stateset hobbes::nfaTransition (const NFA &nfa, const EpsClosure &ec, const stateset &ss, const CharRange &cr)
 
state hobbes::dfaState (const NFA &nfa, const EpsClosure &ec, Nss2Ds *nss2ds, DFA *dfa, const stateset &ss, RStates *rstates)
 
void hobbes::disambiguate (const NFA &nfa, DFA *dfa, RStates *rstates)
 
std::set< rchar_t > hobbes::usedChars (const DFA &dfa)
 
void hobbes::print (std::ostream &out, const DFA &dfa)
 
static ExprPtr hobbes::transitionToState (const std::string &fname, int s, const LexicalAnnotation &rootLA)
 
static ExprPtr hobbes::transitionAsCharSwitch (const std::string &fname, const DFAState &s, const ExprPtr &charExpr, const ExprPtr &defaultResult, const LexicalAnnotation &rootLA)
 
static ExprPtr hobbes::charInRange (const ExprPtr &c, const std::pair< rchar_t, rchar_t > &crange, const LexicalAnnotation &rootLA)
 
static ExprPtr hobbes::transitionAsRangeChecks (const std::string &fname, const std::vector< std::pair< std::pair< rchar_t, rchar_t >, state >> &ranges, const ExprPtr &charExpr, const ExprPtr &defaultResult, const LexicalAnnotation &rootLA)
 
static ExprPtr hobbes::transitionMapping (const std::string &fname, const DFAState &s, const ExprPtr &charExpr, const ExprPtr &defaultResult, const LexicalAnnotation &rootLA)
 
void hobbes::makeDFAFunc (cc *c, const std::string &fname, const DFA &dfa, const LexicalAnnotation &rootLA)
 
void hobbes::mergeCharRangesAndEqResults (DFA *dfa, const RStates &fstates, RStates *rstates)
 
EqStates hobbes::findEquivStates (const DFA &dfa)
 
DFA hobbes::removeEquivStates (const DFA &dfa, const EqStates &eqs)
 
MonoTypePtr hobbes::regexCaptureBufferType (const Regexes &regexes)
 
ExprPtr hobbes::makeRegexCaptureBuffer (const Regexes &regexes, const LexicalAnnotation &rootLA)
 
CRegexes hobbes::makeRegexFn (cc *, const Regexes &, const LexicalAnnotation &)
 
CVarDefs hobbes::unpackCaptureVars (const std::string &strVar, const std::string &bufferVar, const CRegexes &, size_t state, const LexicalAnnotation &)
 

Variables

static const result hobbes::nullResult = (result)-1