Skip to content

Instantly share code, notes, and snippets.

@geofflangdale
Created May 25, 2018 06:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save geofflangdale/5f674e56bda1fd3599b1ab0f4abbc0a4 to your computer and use it in GitHub Desktop.
Save geofflangdale/5f674e56bda1fd3599b1ab0f4abbc0a4 to your computer and use it in GitHub Desktop.
Basic DFA snippet
struct BasicDFA {
typedef u8 State;
u8 transitions[16][256];
State start_state;
BasicDFA(std::vector<std::tuple<u32, u32, u8>> & trans_vec, u8 start_state_, u8 default_state) {
...
}
State apply(const u8 * data, size_t len, State s) {
size_t i = 0;
for (; i+7 < len; i+=8) {
u8 c1 = data[i+0];
...
u8 c8 = data[i+7];
s = transitions[s][c1];
...
s = transitions[s][c8];
}
for (; i < len; ++i) {
s = transitions[s][data[i]];
}
return s;
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment