Home | History | Annotate | Download | only in re2

Lines Matching refs:re

27   // Virtual method called before visiting re's children.
36 virtual T PreVisit(Regexp* re, T parent_arg, bool* stop);
38 // Virtual method called after visiting re's children.
47 virtual T PostVisit(Regexp* re, T parent_arg, T pre_arg,
51 // when Walk notices that more than one child is the same re.
54 // Virtual method called to do a "quick visit" of the re,
56 // has been used up and we're trying to abort the walk
62 virtual T ShortVisit(Regexp* re, T parent_arg) = 0;
65 // Top_arg is passed as parent_arg to PreVisit and PostVisit of re.
66 // Returns the T returned by PostVisit on re.
67 T Walk(Regexp* re, T top_arg);
74 // If the walk *is* cut off early, ShortVisit(re)
77 T WalkExponential(Regexp* re, T top_arg, int max_visits);
93 T WalkInternal(Regexp* re, T top_arg, bool use_copy);
98 template<typename T> T Regexp::Walker<T>::PreVisit(Regexp* re,
104 template<typename T> T Regexp::Walker<T>::PostVisit(Regexp* re,
118 WalkState<T>(Regexp* re, T parent)
119 : re(re),
124 Regexp* re; // The regexp
155 template<typename T> T Regexp::Walker<T>::WalkInternal(Regexp* re, T top_arg,
159 if (re == NULL) {
164 stack_->push(WalkState<T>(re, top_arg));
170 Regexp* re = s->re;
175 t = ShortVisit(re, s->parent_arg);
179 s->pre_arg = PreVisit(re, s->parent_arg, &stop);
186 if (re->nsub_ == 1)
188 else if (re->nsub_ > 1)
189 s->child_args = new T[re->nsub_];
193 if (re->nsub_ > 0) {
194 Regexp** sub = re->sub();
195 if (s->n < re->nsub_) {
206 t = PostVisit(re, s->parent_arg, s->pre_arg, s->child_args, s->n);
207 if (re->nsub_ > 1)
227 template<typename T> T Regexp::Walker<T>::Walk(Regexp* re, T top_arg) {
233 return WalkInternal(re, top_arg, true);
236 template<typename T> T Regexp::Walker<T>::WalkExponential(Regexp* re, T top_arg,
239 return WalkInternal(re, top_arg, false);