Skip to content

Commit

Permalink
Rename ComputeFunc -> ParseFunc
Browse files Browse the repository at this point in the history
  • Loading branch information
nfomon committed May 26, 2015
1 parent ad57c17 commit 725bcfe
Show file tree
Hide file tree
Showing 21 changed files with 149 additions and 149 deletions.
6 changes: 3 additions & 3 deletions statik/IncParser.cpp
Expand Up @@ -26,8 +26,8 @@ using namespace statik;
/* public */ /* public */


IncParser::IncParser(Rule& grammar, const string& name, const string& graphdir) IncParser::IncParser(Rule& grammar, const string& name, const string& graphdir)
: m_rootRule(name, MakeComputeFunc_Root(name), MakeOutputFunc_Pass()), : m_rootRule(name, MakeParseFunc_Root(name), MakeOutputFunc_Pass()),
m_root(*this, m_rootRule, NULL, MakeComputeFunc_Root(name), MakeOutputFunc_Pass()), m_root(*this, m_rootRule, NULL, MakeParseFunc_Root(name), MakeOutputFunc_Pass()),
m_grammar(grammar), m_grammar(grammar),
m_name(name), m_name(name),
m_needsCleanup(false), m_needsCleanup(false),
Expand Down Expand Up @@ -349,7 +349,7 @@ void IncParser::ProcessActions() {
} }
a->node->StartNode(*a->inode); a->node->StartNode(*a->inode);
} else { } else {
a->node->ComputeNode(a->action, *a->inode, a->initiator); a->node->ParseNode(a->action, *a->inode, a->initiator);
} }
} }
if (m_actions_by_depth.at(depth).empty()) { if (m_actions_by_depth.at(depth).empty()) {
Expand Down
8 changes: 4 additions & 4 deletions statik/IncParser.h
Expand Up @@ -57,7 +57,7 @@ class IncParser {
// Called from a node that's being restarted, to cancel all its listening // Called from a node that's being restarted, to cancel all its listening
void UnlistenAll(STree& x); void UnlistenAll(STree& x);


// IncParser owns the STree nodes. This allows a ComputeFunc() to "unlink" a // IncParser owns the STree nodes. This allows a ParseFunc() to "unlink" a
// node from the tree before it is actually deleted, so that an OutputFunc() // node from the tree before it is actually deleted, so that an OutputFunc()
// can refer to its destruction safely. // can refer to its destruction safely.
STree* OwnNode(std::auto_ptr<STree> node); STree* OwnNode(std::auto_ptr<STree> node);
Expand All @@ -71,7 +71,7 @@ class IncParser {
// Get the first node of the output list // Get the first node of the output list
const List* GetFirstONode() const; const List* GetFirstONode() const;


// Indicate that a node has been computed. Called by STree::ComputeNode() // Indicate that a node has been computed. Called by STree::ParseNode()
void TouchNode(const STree& node); void TouchNode(const STree& node);


int INodeCompare(const List& a, const List& b) const; int INodeCompare(const List& a, const List& b) const;
Expand Down Expand Up @@ -104,8 +104,8 @@ class IncParser {
void CleanupIfNeeded(); void CleanupIfNeeded();


Rule m_rootRule; // Rule for the Root node Rule m_rootRule; // Rule for the Root node
STree m_root; // Root of the output tree STree m_root; // Root of the parse tree
Rule& m_grammar; // Root of the Grammar Rule& m_grammar; // Root of the grammar graph
std::string m_name; std::string m_name;
bool m_needsCleanup; bool m_needsCleanup;
std::auto_ptr<Grapher> m_grapher; std::auto_ptr<Grapher> m_grapher;
Expand Down
10 changes: 5 additions & 5 deletions statik/Keyword.cpp
Expand Up @@ -22,22 +22,22 @@ auto_ptr<Rule> statik::KEYWORD(const string& str) {


auto_ptr<Rule> statik::KEYWORD(const string& name, const string& str) { auto_ptr<Rule> statik::KEYWORD(const string& name, const string& str) {
return auto_ptr<Rule>(new Rule(name, return auto_ptr<Rule>(new Rule(name,
MakeComputeFunc_Keyword(str), MakeParseFunc_Keyword(str),
MakeOutputFunc_Basic(name))); MakeOutputFunc_Basic(name)));
} }


auto_ptr<ComputeFunc> statik::MakeComputeFunc_Keyword(const string& str) { auto_ptr<ParseFunc> statik::MakeParseFunc_Keyword(const string& str) {
return auto_ptr<ComputeFunc>(new ComputeFunc_Keyword(str)); return auto_ptr<ParseFunc>(new ParseFunc_Keyword(str));
} }


ComputeFunc_Keyword::ComputeFunc_Keyword(const string& str) ParseFunc_Keyword::ParseFunc_Keyword(const string& str)
: m_str(str) { : m_str(str) {
if (m_str.empty()) { if (m_str.empty()) {
throw SError("Cannot create empty Keyword"); throw SError("Cannot create empty Keyword");
} }
} }


void ComputeFunc_Keyword::operator() (ParseAction::Action action, const List& inode, const STree* initiator) { void ParseFunc_Keyword::operator() (ParseAction::Action action, const List& inode, const STree* initiator) {
g_log.info() << "Computing Keyword at " << *m_node << " with inode " << inode; g_log.info() << "Computing Keyword at " << *m_node << " with inode " << inode;
State& state = m_node->GetState(); State& state = m_node->GetState();
state.Clear(); state.Clear();
Expand Down
14 changes: 7 additions & 7 deletions statik/Keyword.h
Expand Up @@ -6,9 +6,9 @@


/* Keyword rule */ /* Keyword rule */


#include "ComputeFunc.h"
#include "List.h" #include "List.h"
#include "ParseAction.h" #include "ParseAction.h"
#include "ParseFunc.h"
#include "Rule.h" #include "Rule.h"
#include "STree.h" #include "STree.h"


Expand All @@ -21,20 +21,20 @@ std::auto_ptr<Rule> KEYWORD(const std::string& str);
std::auto_ptr<Rule> KEYWORD(const std::string& name, std::auto_ptr<Rule> KEYWORD(const std::string& name,
const std::string& str); const std::string& str);


class ComputeFunc_Keyword : public ComputeFunc { class ParseFunc_Keyword : public ParseFunc {
public: public:
ComputeFunc_Keyword(const std::string& str); ParseFunc_Keyword(const std::string& str);
virtual ~ComputeFunc_Keyword() {} virtual ~ParseFunc_Keyword() {}
virtual void operator() (ParseAction::Action action, const List& inode, const STree* initiator); virtual void operator() (ParseAction::Action action, const List& inode, const STree* initiator);
virtual std::auto_ptr<ComputeFunc> Clone() { virtual std::auto_ptr<ParseFunc> Clone() {
return std::auto_ptr<ComputeFunc>(new ComputeFunc_Keyword(m_str)); return std::auto_ptr<ParseFunc>(new ParseFunc_Keyword(m_str));
} }


private: private:
const std::string m_str; const std::string m_str;
}; };


std::auto_ptr<ComputeFunc> MakeComputeFunc_Keyword(const std::string& str); std::auto_ptr<ParseFunc> MakeParseFunc_Keyword(const std::string& str);


} }


Expand Down
8 changes: 4 additions & 4 deletions statik/Meta.cpp
Expand Up @@ -21,15 +21,15 @@ auto_ptr<Rule> statik::META(const string& searchName) {


auto_ptr<Rule> statik::META(const string& name, const string& searchName) { auto_ptr<Rule> statik::META(const string& name, const string& searchName) {
return auto_ptr<Rule>(new Rule(name, return auto_ptr<Rule>(new Rule(name,
MakeComputeFunc_Meta(searchName), MakeParseFunc_Meta(searchName),
MakeOutputFunc_IValues(name))); MakeOutputFunc_IValues(name)));
} }


auto_ptr<ComputeFunc> statik::MakeComputeFunc_Meta(const string& searchName) { auto_ptr<ParseFunc> statik::MakeParseFunc_Meta(const string& searchName) {
return auto_ptr<ComputeFunc>(new ComputeFunc_Meta(searchName)); return auto_ptr<ParseFunc>(new ParseFunc_Meta(searchName));
} }


void ComputeFunc_Meta::operator() (ParseAction::Action action, const List& inode, const STree* initiator) { void ParseFunc_Meta::operator() (ParseAction::Action action, const List& inode, const STree* initiator) {
g_log.info() << "Computing Meta at " << *m_node << " with inode "<< inode; g_log.info() << "Computing Meta at " << *m_node << " with inode "<< inode;
State& state = m_node->GetState(); State& state = m_node->GetState();
state.Clear(); state.Clear();
Expand Down
14 changes: 7 additions & 7 deletions statik/Meta.h
Expand Up @@ -9,9 +9,9 @@
* Recognizes a node output by another rule, by its name. * Recognizes a node output by another rule, by its name.
*/ */


#include "ComputeFunc.h"
#include "List.h" #include "List.h"
#include "ParseAction.h" #include "ParseAction.h"
#include "ParseFunc.h"
#include "Rule.h" #include "Rule.h"
#include "STree.h" #include "STree.h"


Expand All @@ -24,21 +24,21 @@ std::auto_ptr<Rule> META(const std::string& searchName);
std::auto_ptr<Rule> META(const std::string& name, std::auto_ptr<Rule> META(const std::string& name,
const std::string& searchName); const std::string& searchName);


class ComputeFunc_Meta : public ComputeFunc { class ParseFunc_Meta : public ParseFunc {
public: public:
ComputeFunc_Meta(const std::string& searchName) ParseFunc_Meta(const std::string& searchName)
: m_searchName(searchName) {} : m_searchName(searchName) {}
virtual ~ComputeFunc_Meta() {} virtual ~ParseFunc_Meta() {}
virtual void operator() (ParseAction::Action action, const List& inode, const STree* initiator); virtual void operator() (ParseAction::Action action, const List& inode, const STree* initiator);
virtual std::auto_ptr<ComputeFunc> Clone() { virtual std::auto_ptr<ParseFunc> Clone() {
return std::auto_ptr<ComputeFunc>(new ComputeFunc_Meta(m_searchName)); return std::auto_ptr<ParseFunc>(new ParseFunc_Meta(m_searchName));
} }


private: private:
std::string m_searchName; std::string m_searchName;
}; };


std::auto_ptr<ComputeFunc> MakeComputeFunc_Meta(const std::string& searchName); std::auto_ptr<ParseFunc> MakeParseFunc_Meta(const std::string& searchName);


} }


Expand Down
26 changes: 13 additions & 13 deletions statik/Or.cpp
Expand Up @@ -19,18 +19,18 @@ using namespace statik;


auto_ptr<Rule> statik::OR(const string& name) { auto_ptr<Rule> statik::OR(const string& name) {
return auto_ptr<Rule>(new Rule(name, return auto_ptr<Rule>(new Rule(name,
MakeComputeFunc_Or(), MakeParseFunc_Or(),
MakeOutputFunc_Winner())); MakeOutputFunc_Winner()));
} }


auto_ptr<ComputeFunc> statik::MakeComputeFunc_Or() { auto_ptr<ParseFunc> statik::MakeParseFunc_Or() {
return auto_ptr<ComputeFunc>(new ComputeFunc_Or()); return auto_ptr<ParseFunc>(new ParseFunc_Or());
} }


// TODO consider initiator, keep vectors as state that gets updated by each // TODO consider initiator, keep vectors as state that gets updated by each
// call to this function, and then we finally just update State from the vecs. // call to this function, and then we finally just update State from the vecs.
void ComputeFunc_Or::operator() (ParseAction::Action action, const List& inode, const STree* initiator) { void ParseFunc_Or::operator() (ParseAction::Action action, const List& inode, const STree* initiator) {
g_log.debug() << "Computing Or at " << *m_node; g_log.debug() << "Parsing Or at " << *m_node;


if (ParseAction::Restart == action) { if (ParseAction::Restart == action) {
if (m_node->children.empty()) { if (m_node->children.empty()) {
Expand Down Expand Up @@ -62,7 +62,7 @@ void ComputeFunc_Or::operator() (ParseAction::Action action, const List& inode,
const STree* lockedChild = NULL; const STree* lockedChild = NULL;


if (m_node->children.empty()) { if (m_node->children.empty()) {
throw SError("Cannot compute Or at " + string(*m_node) + " that has no children"); throw SError("Cannot parse Or at " + string(*m_node) + " that has no children");
} }
m_node->GetIConnection().SetEnd(m_node->IStart()); m_node->GetIConnection().SetEnd(m_node->IStart());


Expand All @@ -79,19 +79,19 @@ void ComputeFunc_Or::operator() (ParseAction::Action action, const List& inode,
bool thisChildLocked = false; bool thisChildLocked = false;
if (istate.IsLocked()) { if (istate.IsLocked()) {
if (lockedChild) { if (lockedChild) {
throw SError("Computing Or at " + string(*m_node) + " found more than one locked children"); throw SError("Parsing Or at " + string(*m_node) + " found more than one locked children");
} }
g_log.info() << "Computing Or at " << *m_node << " found locked child " << **i << " in state " << istate; g_log.info() << "Parsing Or at " << *m_node << " found locked child " << **i << " in state " << istate;
lockedChild = *i; lockedChild = *i;
thisChildLocked = true; thisChildLocked = true;
state.Lock(); state.Lock();
} }
if (!istate.IsBad() && !haveSetEnd) { if (!istate.IsBad() && !haveSetEnd) {
if (&(*i)->IStart() != &m_node->IStart()) { if (&(*i)->IStart() != &m_node->IStart()) {
throw SError("Computing Or at " + string(*m_node) + " and a child disagree about istart"); throw SError("Parsing Or at " + string(*m_node) + " and a child disagree about istart");
} }
m_node->GetIConnection().SetEnd((*i)->IEnd()); m_node->GetIConnection().SetEnd((*i)->IEnd());
g_log.debug() << "Computing Or at " << *m_node << " assigning iend " << m_node->IEnd() << " from istate " << istate; g_log.debug() << "Parsing Or at " << *m_node << " assigning iend " << m_node->IEnd() << " from istate " << istate;
haveSetEnd = true; haveSetEnd = true;
} }
if (istate.IsOK()) { if (istate.IsOK()) {
Expand Down Expand Up @@ -135,15 +135,15 @@ void ComputeFunc_Or::operator() (ParseAction::Action action, const List& inode,
completes.push_back(*i); completes.push_back(*i);
} }
} else { } else {
throw SError("Computing Or at " + string(*m_node) + " found istate " + string(istate) + " in unknown station"); throw SError("Parsing Or at " + string(*m_node) + " found istate " + string(istate) + " in unknown station");
} }
} }
if (1 == completes.size()) { if (1 == completes.size()) {
m_node->GetIConnection().SetEnd(completes.at(0)->IEnd()); m_node->GetIConnection().SetEnd(completes.at(0)->IEnd());
g_log.debug() << "Computing Or at " << *m_node << " declares complete winner " << *completes.at(0); g_log.debug() << "Parsing Or at " << *m_node << " declares complete winner " << *completes.at(0);
} else if (1 == dones.size()) { } else if (1 == dones.size()) {
m_node->GetIConnection().SetEnd(dones.at(0)->IEnd()); m_node->GetIConnection().SetEnd(dones.at(0)->IEnd());
g_log.debug() << "Computing Or at " << *m_node << " declares done winner " << *dones.at(0); g_log.debug() << "Parsing Or at " << *m_node << " declares done winner " << *dones.at(0);
} }
if (1 == completes.size()) { if (1 == completes.size()) {
state.GoComplete(); state.GoComplete();
Expand Down
12 changes: 6 additions & 6 deletions statik/Or.h
Expand Up @@ -4,9 +4,9 @@
#ifndef _statik_Or_h_ #ifndef _statik_Or_h_
#define _statik_Or_h_ #define _statik_Or_h_


#include "ComputeFunc.h"
#include "List.h" #include "List.h"
#include "ParseAction.h" #include "ParseAction.h"
#include "ParseFunc.h"
#include "Rule.h" #include "Rule.h"
#include "STree.h" #include "STree.h"


Expand All @@ -17,15 +17,15 @@ namespace statik {


std::auto_ptr<Rule> OR(const std::string& name); std::auto_ptr<Rule> OR(const std::string& name);


struct ComputeFunc_Or : public ComputeFunc { struct ParseFunc_Or : public ParseFunc {
virtual ~ComputeFunc_Or() {} virtual ~ParseFunc_Or() {}
virtual void operator() (ParseAction::Action action, const List& inode, const STree* initiator); virtual void operator() (ParseAction::Action action, const List& inode, const STree* initiator);
virtual std::auto_ptr<ComputeFunc> Clone() { virtual std::auto_ptr<ParseFunc> Clone() {
return std::auto_ptr<ComputeFunc>(new ComputeFunc_Or()); return std::auto_ptr<ParseFunc>(new ParseFunc_Or());
} }
}; };


std::auto_ptr<ComputeFunc> MakeComputeFunc_Or(); std::auto_ptr<ParseFunc> MakeParseFunc_Or();


} }


Expand Down
12 changes: 6 additions & 6 deletions statik/ComputeFunc.h → statik/ParseFunc.h
@@ -1,8 +1,8 @@
// Copyright (C) 2014 Michael Biggs. See the COPYING file at the top-level // Copyright (C) 2014 Michael Biggs. See the COPYING file at the top-level
// directory of this distribution and at http://shok.io/code/copyright.html // directory of this distribution and at http://shok.io/code/copyright.html


#ifndef _statik_ComputeFunc_h_ #ifndef _statik_ParseFunc_h_
#define _statik_ComputeFunc_h_ #define _statik_ParseFunc_h_


#include "List.h" #include "List.h"
#include "ParseAction.h" #include "ParseAction.h"
Expand All @@ -11,16 +11,16 @@


namespace statik { namespace statik {


struct ComputeFunc { struct ParseFunc {
public: public:
virtual ~ComputeFunc() {} virtual ~ParseFunc() {}
void Init(STree& x) { m_node = &x; } void Init(STree& x) { m_node = &x; }
virtual void operator() (ParseAction::Action action, const List& inode, const STree* initiator) = 0; virtual void operator() (ParseAction::Action action, const List& inode, const STree* initiator) = 0;
virtual std::auto_ptr<ComputeFunc> Clone() = 0; virtual std::auto_ptr<ParseFunc> Clone() = 0;
protected: protected:
STree* m_node; STree* m_node;
}; };


} }


#endif // _statik_ComputeFunc_h_ #endif // _statik_ParseFunc_h_
10 changes: 5 additions & 5 deletions statik/Regexp.cpp
Expand Up @@ -18,22 +18,22 @@ using namespace statik;


auto_ptr<Rule> statik::REGEXP(const string& name, const boost::regex& regex) { auto_ptr<Rule> statik::REGEXP(const string& name, const boost::regex& regex) {
return auto_ptr<Rule>(new Rule(name, return auto_ptr<Rule>(new Rule(name,
MakeComputeFunc_Regexp(regex), MakeParseFunc_Regexp(regex),
MakeOutputFunc_IValues(name))); MakeOutputFunc_IValues(name)));
} }


auto_ptr<ComputeFunc> statik::MakeComputeFunc_Regexp(const boost::regex& regex) { auto_ptr<ParseFunc> statik::MakeParseFunc_Regexp(const boost::regex& regex) {
return auto_ptr<ComputeFunc>(new ComputeFunc_Regexp(regex)); return auto_ptr<ParseFunc>(new ParseFunc_Regexp(regex));
} }


ComputeFunc_Regexp::ComputeFunc_Regexp(const boost::regex& regex) ParseFunc_Regexp::ParseFunc_Regexp(const boost::regex& regex)
: m_regex(regex) { : m_regex(regex) {
if (m_regex.empty()) { if (m_regex.empty()) {
throw SError("Cannot create Regexp with empty regex"); throw SError("Cannot create Regexp with empty regex");
} }
} }


void ComputeFunc_Regexp::operator() (ParseAction::Action action, const List& inode, const STree* initiator) { void ParseFunc_Regexp::operator() (ParseAction::Action action, const List& inode, const STree* initiator) {
g_log.info() << "Computing Regexp at " << *m_node; g_log.info() << "Computing Regexp at " << *m_node;
State& state = m_node->GetState(); State& state = m_node->GetState();
state.Clear(); state.Clear();
Expand Down
14 changes: 7 additions & 7 deletions statik/Regexp.h
Expand Up @@ -6,9 +6,9 @@


/* Regexp rule */ /* Regexp rule */


#include "ComputeFunc.h"
#include "List.h" #include "List.h"
#include "ParseAction.h" #include "ParseAction.h"
#include "ParseFunc.h"
#include "Rule.h" #include "Rule.h"
#include "STree.h" #include "STree.h"


Expand All @@ -22,20 +22,20 @@ namespace statik {
std::auto_ptr<Rule> REGEXP(const std::string& name, std::auto_ptr<Rule> REGEXP(const std::string& name,
const boost::regex& regex); const boost::regex& regex);


class ComputeFunc_Regexp : public ComputeFunc { class ParseFunc_Regexp : public ParseFunc {
public: public:
ComputeFunc_Regexp(const boost::regex& regex); ParseFunc_Regexp(const boost::regex& regex);
virtual ~ComputeFunc_Regexp() {} virtual ~ParseFunc_Regexp() {}
virtual void operator() (ParseAction::Action action, const List& inode, const STree* initiator); virtual void operator() (ParseAction::Action action, const List& inode, const STree* initiator);
virtual std::auto_ptr<ComputeFunc> Clone() { virtual std::auto_ptr<ParseFunc> Clone() {
return std::auto_ptr<ComputeFunc>(new ComputeFunc_Regexp(m_regex)); return std::auto_ptr<ParseFunc>(new ParseFunc_Regexp(m_regex));
} }


private: private:
const boost::regex m_regex; const boost::regex m_regex;
}; };


std::auto_ptr<ComputeFunc> MakeComputeFunc_Regexp(const boost::regex& regex); std::auto_ptr<ParseFunc> MakeParseFunc_Regexp(const boost::regex& regex);


} }


Expand Down

0 comments on commit 725bcfe

Please sign in to comment.