Skip to content

Commit

Permalink
keep a weak reference to Grammar* in Parser
Browse files Browse the repository at this point in the history
  • Loading branch information
rsms committed Apr 23, 2011
1 parent 7e291e3 commit 968d608
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 0 deletions.
1 change: 1 addition & 0 deletions runtime/Parser.cc
Expand Up @@ -60,6 +60,7 @@ Parser::~Parser() {




void Parser::setGrammar(Grammar *grammar) { void Parser::setGrammar(Grammar *grammar) {
grammar_ = grammar;
state_ = gzl_alloc_parse_state(); state_ = gzl_alloc_parse_state();
assert(state_ != NULL); assert(state_ != NULL);
state_->user_data = (void*)this; state_->user_data = (void*)this;
Expand Down
3 changes: 3 additions & 0 deletions runtime/include/gazelle/Parser.hh
Expand Up @@ -30,6 +30,7 @@ class Parser {


// Set the grammar which should be used for the next call to parse // Set the grammar which should be used for the next call to parse
void setGrammar(Grammar *grammar); void setGrammar(Grammar *grammar);
Grammar *grammar() { return grammar_; }


// A structure which contains the current state (see parse.h for details) // A structure which contains the current state (see parse.h for details)
inline gzl_parse_state *state() { return state_; } inline gzl_parse_state *state() { return state_; }
Expand Down Expand Up @@ -101,6 +102,8 @@ class Parser {


// The Gazelle parse state // The Gazelle parse state
gzl_parse_state *state_; gzl_parse_state *state_;

Grammar *grammar_; // weak
}; };




Expand Down

0 comments on commit 968d608

Please sign in to comment.