Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Unified Diff: src/ast.cc

Issue 10759: Introduce text nodes (Closed)
Patch Set: Fixed repeated RemoveLast issue Created 12 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/ast.h ('k') | src/jsregexp.h » ('j') | src/parser.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/ast.cc
diff --git a/src/ast.cc b/src/ast.cc
index 416d1444c4dc8f44dec1abecc057ab8464b15ac6..60ae5b87cb272e06c97b5e4489bb98a750ddfd7a 100644
--- a/src/ast.cc
+++ b/src/ast.cc
@@ -187,21 +187,21 @@ void Visitor::VisitExpressions(ZoneList<Expression*>* expressions) {
void* RegExp##Name::Accept(RegExpVisitor* visitor, void* data) { \
return visitor->Visit##Name(this, data); \
}
-FOR_EACH_REG_EXP_NODE_TYPE(MAKE_ACCEPT)
+FOR_EACH_REG_EXP_TREE_TYPE(MAKE_ACCEPT)
#undef MAKE_ACCEPT
#define MAKE_CONVERSION(Name) \
RegExp##Name* RegExpTree::As##Name() { \
return NULL; \
}
- FOR_EACH_REG_EXP_NODE_TYPE(MAKE_CONVERSION)
+ FOR_EACH_REG_EXP_TREE_TYPE(MAKE_CONVERSION)
#undef MAKE_CONVERSION
#define MAKE_CONVERSION(Name) \
RegExp##Name* RegExp##Name::As##Name() { \
return this; \
}
-FOR_EACH_REG_EXP_NODE_TYPE(MAKE_CONVERSION)
+FOR_EACH_REG_EXP_TREE_TYPE(MAKE_CONVERSION)
#undef MAKE_CONVERSION
RegExpEmpty RegExpEmpty::kInstance;
@@ -218,7 +218,7 @@ class RegExpUnparser: public RegExpVisitor {
void VisitCharacterRange(CharacterRange that);
SmartPointer<const char> ToString() { return stream_.ToCString(); }
#define MAKE_CASE(Name) virtual void* Visit##Name(RegExp##Name*, void* data);
- FOR_EACH_REG_EXP_NODE_TYPE(MAKE_CASE)
+ FOR_EACH_REG_EXP_TREE_TYPE(MAKE_CASE)
#undef MAKE_CASE
private:
StringStream* stream() { return &stream_; }
@@ -308,6 +308,21 @@ void* RegExpUnparser::VisitAtom(RegExpAtom* that, void* data) {
}
+void* RegExpUnparser::VisitText(RegExpText* that, void* data) {
+ if (that->elements()->length() == 1) {
+ that->elements()->at(0).data.u_atom->Accept(this, data);
+ } else {
+ stream()->Add("(!");
+ for (int i = 0; i < that->elements()->length(); i++) {
+ stream()->Add(" ");
+ that->elements()->at(i).data.u_atom->Accept(this, data);
+ }
+ stream()->Add(")");
+ }
+ return NULL;
+}
+
+
void* RegExpUnparser::VisitQuantifier(RegExpQuantifier* that, void* data) {
stream()->Add("(# %i ", that->min());
if (that->max() == RegExpQuantifier::kInfinity) {
« no previous file with comments | « src/ast.h ('k') | src/jsregexp.h » ('j') | src/parser.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698