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

Classes

struct  hobbes::makeSuccStateF
 
struct  hobbes::scorePatternF
 
struct  hobbes::liftDFAExprF
 
struct  hobbes::IfCheck
 
struct  hobbes::reachableRowExprsF
 
struct  hobbes::makePrimDFASF
 
class  hobbes::primdfafunc
 
struct  hobbes::IDFAState
 

Namespaces

 hobbes
 

Typedefs

typedef std::pair< ExprPtr, PrimitivePtr > hobbes::ExprCheck
 
typedef std::vector< ExprCheck > hobbes::ExprChecks
 
typedef std::map< size_t, ExprPtr > hobbes::RowResults
 
typedef std::map< std::string, llvm::Value * > hobbes::Args
 
typedef std::map< stateidx_t, llvm::BasicBlock * > hobbes::StateBranches
 
typedef variant< int, long > hobbes::IDFATransition
 
typedef array< std::pair< long, IDFATransition > > hobbes::IDFATransitions
 
typedef std::unordered_map< std::string, size_t > hobbes::ArgPos
 
typedef std::unordered_map< size_t, size_t > hobbes::GlobalToLocalState
 

Functions

MStatePtr hobbes::makeSwitch (const MDFA *dfa, const std::string &switchVar, const SwitchVal::Jumps &jmps, stateidx_t defState)
 
void hobbes::addRef (MDFA *dfa, stateidx_t s)
 
stateidx_t hobbes::addState (MDFA *dfa, const MStatePtr &state, bool addref=true)
 
ExprPtr hobbes::varName (MDFA *dfa, const std::string &vn)
 
ExprPtr hobbes::arrayElement (MDFA *dfa, const std::string &vn, size_t i)
 
ExprPtr hobbes::charArrElement (MDFA *dfa, const std::string &packFn, const std::string &vn, size_t i)
 
ExprPtr hobbes::openArray (MDFA *dfa, const std::string &vn)
 
ExprPtr hobbes::arraySize (MDFA *dfa, const std::string &vn)
 
ExprPtr hobbes::field (MDFA *dfa, const std::string &vn, const std::string &fn)
 
void hobbes::tableTail (PatternRows *out, const PatternRows &in)
 
void hobbes::dropUnusedColumns (PatternRows *out, const PatternRows &in)
 
void hobbes::copyRowWithoutColumn (PatternRows *out, const PatternRow &row, size_t c)
 
void hobbes::prependPatterns (PatternRow *row, const Patterns &ps)
 
Patterns hobbes::arrayPatterns (const MatchArray &ma)
 
Patterns hobbes::arrayAnyMatches (size_t n)
 
Patterns hobbes::recordFieldPatterns (const MatchRecord &mr)
 
template<typename MType , typename SValue , SValue(*)(const MType &) svalueF, void(*)(const MType &, PatternRows *, const PatternRow &, size_t) makeMatchRow, void(*)(SValue, PatternRows *, const PatternRow &, size_t) makeMatchAnyRow, stateidx_t(*)(const std::string &, SValue, MDFA *, const PatternRows &) makeNextState, MStatePtr(*)(const std::string &, MDFA *, const std::vector< std::pair< SValue, stateidx_t > > &, stateidx_t) makeSwitchState, typename SVLT = std::less<SValue>>
MStatePtr hobbes::makeSplitState (MDFA *dfa, const PatternRows &ps, size_t c)
 
PrimitivePtr hobbes::litValue (const MatchLiteral &ml)
 
void hobbes::makeLitSplitRow (const MatchLiteral &, PatternRows *out, const PatternRow &r, size_t c)
 
void hobbes::makeLSAnyRow (PrimitivePtr, PatternRows *out, const PatternRow &r, size_t c)
 
stateidx_t hobbes::makeLSSuccState (const std::string &, PrimitivePtr, MDFA *dfa, const PatternRows &nps)
 
MStatePtr hobbes::makeLSSwitch (const std::string &switchVar, MDFA *dfa, const SwitchVal::Jumps &jmps, stateidx_t defState)
 
MStatePtr hobbes::makeLSCvtSwitch (const std::string &switchVar, MDFA *dfa, const SwitchVal::Jumps &jmps, stateidx_t defState)
 
bool hobbes::forConvertibility (const PatternPtr &p)
 
MStatePtr hobbes::makeLiteralState (MDFA *dfa, const PatternRows &ps, size_t c)
 
size_t hobbes::maSize (const MatchArray &ma)
 
void hobbes::makeASplitRow (const MatchArray &ma, PatternRows *out, const PatternRow &r, size_t c)
 
void hobbes::makeASAnyRow (size_t len, PatternRows *out, const PatternRow &r, size_t c)
 
stateidx_t hobbes::makeASSuccState (const std::string &arrayVar, size_t len, MDFA *dfa, const PatternRows &nps)
 
MStatePtr hobbes::makeASSwitch (const std::string &arrayVar, MDFA *dfa, const std::vector< std::pair< size_t, stateidx_t > > &lenjmps, stateidx_t defState)
 
MStatePtr hobbes::makeArrayState (MDFA *dfa, const PatternRows &ps, size_t c)
 
size_t hobbes::maxStringLen (const PatternRows &ps, size_t c)
 
size_t hobbes::packedSValues (size_t cs)
 
unsigned char hobbes::spatChar (const MatchArray &ma, size_t i)
 
template<typename T >
hobbes::translatep (const MatchArray &ma, size_t i)
 
Patterns hobbes::sarrayPatterns (const std::string &svarName, size_t cs, const MatchArray &ma)
 
void hobbes::addSATableRow (size_t len, const PatternRow &r, size_t c, PatternRows *out)
 
MStatePtr hobbes::makeCharArrayState (MDFA *dfa, const PatternRows &ps, size_t c)
 
bool hobbes::canMakeCharArrayState (const PatternRows &ps, size_t c)
 
size_t hobbes::canMakeCharArrStateAtColumn (const PatternRows &ps)
 
MStatePtr hobbes::makeRecordState (MDFA *dfa, const PatternRows &ps, size_t c)
 
std::string hobbes::varCtor (const MatchVariant &mv)
 
void hobbes::makeVariantSplitRow (const MatchVariant &mv, PatternRows *out, const PatternRow &r, size_t c)
 
void hobbes::makeVSAnyRow (std::string, PatternRows *out, const PatternRow &r, size_t c)
 
stateidx_t hobbes::makeVSSuccState (const std::string &, std::string, MDFA *dfa, const PatternRows &nps)
 
MStatePtr hobbes::makeVSSwitch (const std::string &switchVar, MDFA *dfa, const SwitchVariant::CtorJumps &jmps, stateidx_t defState)
 
MStatePtr hobbes::makeVariantState (MDFA *dfa, const PatternRows &ps, size_t c)
 
MStatePtr hobbes::makeRegexState (MDFA *dfa, const PatternRows &ps, size_t c)
 
MStatePtr hobbes::makeSuccState (MDFA *dfa, const PatternRows &ps, size_t c)
 
size_t hobbes::columnScore (const PatternRows &ps, size_t c)
 
size_t hobbes::choosePivotColumn (const PatternRows &ps)
 
bool hobbes::isPrimSelection (bool alwaysLowerPrimMatchTables, const PatternRows &ps)
 
PrimFArgs hobbes::makePrimFArgs (const PatternRows &ps)
 
stateidx_t hobbes::makeDFAState (MDFA *dfa, const PatternRows &ps)
 
stateidx_t hobbes::makeDFA (MDFA *, const PatternRows &, const LexicalAnnotation &)
 
ExprPtr hobbes::liftDFAExpr (MDFA *dfa, stateidx_t state)
 
ExprPtr hobbes::checkExpr (const ExprChecks &cs, const LexicalAnnotation &la)
 
bool hobbes::compressToIfCheck (MDFA *dfa, const SwitchVal &sv, IfCheck *out)
 
ExprPtr hobbes::liftDFAExprWithSwitchCompression (MDFA *dfa, stateidx_t state)
 
bool hobbes::shouldInlineState (const MDFA *dfa, stateidx_t state)
 
ExprPtr hobbes::liftPrimMatchExpr (MDFA *dfa, stateidx_t state)
 
ExprPtr hobbes::liftDFAExpr (cc *, const PatternRows &, const LexicalAnnotation &)
 
RowResults hobbes::findRowResults (MDFA *dfa, stateidx_t s)
 
llvm::Function * hobbes::makePrimMatchDFAFunc (const std::string &fname, MDFA *dfa, stateidx_t s, const PrimFArgs &args)
 
void hobbes::makeCompiledPrimMatchFunction (const std::string &fname, MDFA *dfa, stateidx_t state)
 
MonoTypePtr hobbes::dfaStateType ()
 
void hobbes::mapStatesFrom (MDFA *dfa, stateidx_t state, GlobalToLocalState *localstate)
 
size_t hobbes::localState (const GlobalToLocalState &localstate, stateidx_t state)
 
size_t hobbes::reads (const ArgPos &argpos, const std::string &a)
 
IDFATransitions * hobbes::transitions (const ArgPos &, MDFA *, const SwitchVal::Jumps &, const GlobalToLocalState &, std::set< stateidx_t > *, array< IDFAState > *)
 
IDFATransition hobbes::transitionDef (const ArgPos &, MDFA *, stateidx_t, const GlobalToLocalState &, std::set< stateidx_t > *, array< IDFAState > *)
 
void hobbes::copyStateDef (const ArgPos &argpos, MDFA *dfa, stateidx_t state, const GlobalToLocalState &localstate, std::set< stateidx_t > *dones, array< IDFAState > *dfaStates)
 
void hobbes::makeInterpretedPrimMatchFunction (const std::string &fname, MDFA *dfa, stateidx_t state)
 
bool hobbes::canMakeInterpretedPrimMatchFunction (MDFA *dfa, stateidx_t state)