diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2020-01-19 14:38:36 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2020-01-19 14:39:14 +0100 |
commit | e0baeba546f8f45bc1ec981a60b615a28f4142af (patch) | |
tree | a71ec1879c612c55f22fae35d4f2eb767bf45e42 /js/src/irregexp/RegExpAST.h | |
parent | b1abb9aebe9de3507c93f31cf1b7ffff3432e481 (diff) | |
download | UXP-e0baeba546f8f45bc1ec981a60b615a28f4142af.tar UXP-e0baeba546f8f45bc1ec981a60b615a28f4142af.tar.gz UXP-e0baeba546f8f45bc1ec981a60b615a28f4142af.tar.lz UXP-e0baeba546f8f45bc1ec981a60b615a28f4142af.tar.xz UXP-e0baeba546f8f45bc1ec981a60b615a28f4142af.zip |
Issue #1362 - Revert "Implement regular expression lookbehind"
This reverts commit fa473930f424bf17a9e545b601c84dd2e61364e3.
Diffstat (limited to 'js/src/irregexp/RegExpAST.h')
-rw-r--r-- | js/src/irregexp/RegExpAST.h | 33 |
1 files changed, 10 insertions, 23 deletions
diff --git a/js/src/irregexp/RegExpAST.h b/js/src/irregexp/RegExpAST.h index 6f59842bc..7bda6fc7e 100644 --- a/js/src/irregexp/RegExpAST.h +++ b/js/src/irregexp/RegExpAST.h @@ -360,7 +360,6 @@ class RegExpCapture : public RegExpTree virtual int min_match() { return body_->min_match(); } virtual int max_match() { return body_->max_match(); } RegExpTree* body() { return body_; } - void set_body(RegExpTree* body) { body_ = body; } int index() { return index_; } static int StartRegister(int index) { return index * 2; } static int EndRegister(int index) { return index * 2 + 1; } @@ -370,29 +369,25 @@ class RegExpCapture : public RegExpTree int index_; }; -class RegExpLookaround : public RegExpTree +class RegExpLookahead : public RegExpTree { public: - enum Type { LOOKAHEAD, LOOKBEHIND }; - - RegExpLookaround(RegExpTree* body, - bool is_positive, - int capture_count, - int capture_from, - Type type) + RegExpLookahead(RegExpTree* body, + bool is_positive, + int capture_count, + int capture_from) : body_(body), is_positive_(is_positive), capture_count_(capture_count), - capture_from_(capture_from), - type_(type) + capture_from_(capture_from) {} virtual void* Accept(RegExpVisitor* visitor, void* data); virtual RegExpNode* ToNode(RegExpCompiler* compiler, RegExpNode* on_success); - virtual RegExpLookaround* AsLookaround(); + virtual RegExpLookahead* AsLookahead(); virtual Interval CaptureRegisters(); - virtual bool IsLookaround(); + virtual bool IsLookahead(); virtual bool IsAnchoredAtStart(); virtual int min_match() { return 0; } virtual int max_match() { return 0; } @@ -400,14 +395,12 @@ class RegExpLookaround : public RegExpTree bool is_positive() { return is_positive_; } int capture_count() { return capture_count_; } int capture_from() { return capture_from_; } - Type type() { return type_; } private: RegExpTree* body_; bool is_positive_; int capture_count_; int capture_from_; - Type type_; }; typedef InfallibleVector<RegExpCapture*, 1> RegExpCaptureVector; @@ -424,14 +417,8 @@ class RegExpBackReference : public RegExpTree RegExpNode* on_success); virtual RegExpBackReference* AsBackReference(); virtual bool IsBackReference(); - virtual int min_match() override { return 0; } - // The capture may not be completely parsed yet, if the reference occurs - // before the capture. In the ordinary case, nothing has been captured yet, - // so the back reference must have the length 0. If the back reference is - // inside a lookbehind, effectively making it a forward reference, we return - virtual int max_match() override { - return capture_->body() ? capture_->max_match() : 0; - } + virtual int min_match() { return 0; } + virtual int max_match() { return capture_->max_match(); } int index() { return capture_->index(); } RegExpCapture* capture() { return capture_; } private: |