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

Side by Side Diff: src/regexp/regexp-parser.h

Issue 2788873002: [regexp] Allow named captures and back-references in non-unicode patterns (Closed)
Patch Set: Created 3 years, 8 months 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_REGEXP_REGEXP_PARSER_H_ 5 #ifndef V8_REGEXP_REGEXP_PARSER_H_
6 #define V8_REGEXP_REGEXP_PARSER_H_ 6 #define V8_REGEXP_REGEXP_PARSER_H_
7 7
8 #include "src/objects.h" 8 #include "src/objects.h"
9 #include "src/regexp/regexp-ast.h" 9 #include "src/regexp/regexp-ast.h"
10 #include "src/zone/zone.h" 10 #include "src/zone/zone.h"
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 bool ParseNamedBackReference(RegExpBuilder* builder, 286 bool ParseNamedBackReference(RegExpBuilder* builder,
287 RegExpParserState* state); 287 RegExpParserState* state);
288 288
289 // After the initial parsing pass, patch corresponding RegExpCapture objects 289 // After the initial parsing pass, patch corresponding RegExpCapture objects
290 // into all RegExpBackReferences. This is done after initial parsing in order 290 // into all RegExpBackReferences. This is done after initial parsing in order
291 // to avoid complicating cases in which references comes before the capture. 291 // to avoid complicating cases in which references comes before the capture.
292 void PatchNamedBackReferences(); 292 void PatchNamedBackReferences();
293 293
294 Handle<FixedArray> CreateCaptureNameMap(); 294 Handle<FixedArray> CreateCaptureNameMap();
295 295
296 // Returns true iff the pattern contains named captures. May call
297 // ScanForCaptures to look ahead at the remaining pattern.
298 bool HasNamedCaptures();
299
296 Isolate* isolate() { return isolate_; } 300 Isolate* isolate() { return isolate_; }
297 Zone* zone() const { return zone_; } 301 Zone* zone() const { return zone_; }
298 302
299 uc32 current() { return current_; } 303 uc32 current() { return current_; }
300 bool has_more() { return has_more_; } 304 bool has_more() { return has_more_; }
301 bool has_next() { return next_pos_ < in()->length(); } 305 bool has_next() { return next_pos_ < in()->length(); }
302 uc32 Next(); 306 uc32 Next();
303 template <bool update_position> 307 template <bool update_position>
304 uc32 ReadNext(); 308 uc32 ReadNext();
305 FlatStringReader* in() { return in_; } 309 FlatStringReader* in() { return in_; }
306 void ScanForCaptures(); 310 void ScanForCaptures();
307 311
308 Isolate* isolate_; 312 Isolate* isolate_;
309 Zone* zone_; 313 Zone* zone_;
310 Handle<String>* error_; 314 Handle<String>* error_;
311 ZoneList<RegExpCapture*>* captures_; 315 ZoneList<RegExpCapture*>* captures_;
312 ZoneList<RegExpCapture*>* named_captures_; 316 ZoneList<RegExpCapture*>* named_captures_;
313 ZoneList<RegExpBackReference*>* named_back_references_; 317 ZoneList<RegExpBackReference*>* named_back_references_;
314 FlatStringReader* in_; 318 FlatStringReader* in_;
315 uc32 current_; 319 uc32 current_;
316 bool dotall_; 320 bool dotall_;
317 bool ignore_case_; 321 bool ignore_case_;
318 bool multiline_; 322 bool multiline_;
319 bool unicode_; 323 bool unicode_;
320 int next_pos_; 324 int next_pos_;
321 int captures_started_; 325 int captures_started_;
322 // The capture count is only valid after we have scanned for captures. 326 int capture_count_; // Only valid after we have scanned for captures.
323 int capture_count_;
324 bool has_more_; 327 bool has_more_;
325 bool simple_; 328 bool simple_;
326 bool contains_anchor_; 329 bool contains_anchor_;
327 bool is_scanned_for_captures_; 330 bool is_scanned_for_captures_;
331 bool has_named_captures_; // Only valid after we have scanned for captures.
328 bool failed_; 332 bool failed_;
329 }; 333 };
330 334
331 } // namespace internal 335 } // namespace internal
332 } // namespace v8 336 } // namespace v8
333 337
334 #endif // V8_REGEXP_REGEXP_PARSER_H_ 338 #endif // V8_REGEXP_REGEXP_PARSER_H_
OLDNEW
« no previous file with comments | « no previous file | src/regexp/regexp-parser.cc » ('j') | test/mjsunit/harmony/regexp-named-captures.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698