Lines Matching refs:post
91 // post: the current postfix sequence
96 // For example, if post were ["a", "b", "%s%s", "c"],
101 void RegexpGenerator::GeneratePostfix(vector<string>* post, int nstk,
104 RunPostfix(*post);
115 post->push_back(atoms_[i]);
116 GeneratePostfix(post, nstk + 1, ops, atoms + 1);
117 post->pop_back();
127 post->push_back(fmt);
128 GeneratePostfix(post, nstk - nargs + 1, ops + 1, atoms);
129 post->pop_back();
137 bool RegexpGenerator::GenerateRandomPostfix(vector<string> *post, int nstk,
142 RunPostfix(*post);
157 post->push_back(fmt);
158 bool ret = GenerateRandomPostfix(post, nstk - nargs + 1,
160 post->pop_back();
168 post->push_back(atoms_[acm_->Uniform(atoms_.size())]);
169 bool ret = GenerateRandomPostfix(post, nstk + 1, ops, atoms + 1);
170 post->pop_back();
180 void RegexpGenerator::RunPostfix(const vector<string>& post) {
182 for (int i = 0; i < post.size(); i++) {
183 switch (CountArgs(post[i])) {
185 LOG(FATAL) << "Bad operator: " << post[i];
187 regexps.push(post[i]);
192 regexps.push("(?:" + StringPrintf(post[i].c_str(), a.c_str()) + ")");
201 StringPrintf(post[i].c_str(), a.c_str(), b.c_str()) +
211 for (int i = 0; i < post.size(); i++) {
212 printf(" %s\n", CEscape(post[i]).c_str());