diff options
author | Yves Orton <demerphq@gmail.com> | 2007-02-01 18:06:37 +0100 |
---|---|---|
committer | Steve Peters <steve@fisharerojo.org> | 2007-02-03 06:25:11 +0000 |
commit | fae667d5a60f37538a5761795f7af2165c7d4fb0 (patch) | |
tree | 2330f8756ac2cf6a6c343d54eb76170a2fb170af /regexp.h | |
parent | 77348331ba668328554e7a9d261f69ef327189e7 (diff) | |
download | perl-fae667d5a60f37538a5761795f7af2165c7d4fb0.tar.gz |
Re: prerelease checklist for Perl 5.10
Date: Thu, 1 Feb 2007 17:06:37 +0100
Message-ID: <9b18b3110702010806n7e095317v77f5dc1eb765f8d@mail.gmail.com>
Subject: Re: prerelease checklist for Perl 5.10
From: demerphq <demerphq@gmail.com>
Date: Fri, 2 Feb 2007 18:10:14 +0100
Message-ID: <9b18b3110702020910l31c7784fi5e37bf777b6eafb3@mail.gmail.com>
Regular expression changes to fix failing tests in XML::Twig and
Mail::SpamAssassin. The breakages occured in changes #28785 and
#29279.
p4raw-id: //depot/perl@30104
Diffstat (limited to 'regexp.h')
-rw-r--r-- | regexp.h | 78 |
1 files changed, 49 insertions, 29 deletions
@@ -310,16 +310,41 @@ typedef struct regmatch_state { struct regmatch_state *prev_yes_state; } yes; - struct { + /* branchlike members */ + /* this is a fake union member that matches the first elements + * of each member that needs to behave like a branch */ + struct { /* this first element must match u.yes */ struct regmatch_state *prev_yes_state; - reg_trie_accepted *accept_buff; + U32 lastparen; + CHECKPOINT cp; + + } branchlike; + + struct { + /* the first elements must match u.branchlike */ + struct regmatch_state *prev_yes_state; + U32 lastparen; + CHECKPOINT cp; + + regnode *next_branch; /* next branch node */ + } branch; + + struct { + /* the first elements must match u.branchlike */ + struct regmatch_state *prev_yes_state; + U32 lastparen; + CHECKPOINT cp; + + reg_trie_accepted *accept_buff; /* accepting states we have seen */ U32 accepted; /* how many accepting states we have seen */ U16 *jump; /* positive offsets from me */ regnode *B; /* node following the trie */ regnode *me; /* Which node am I - needed for jump tries*/ } trie; + /* special types - these members are used to store state for special + regops like eval, if/then, lookaround and the markpoint state */ struct { /* this first element must match u.yes */ struct regmatch_state *prev_yes_state; @@ -338,6 +363,28 @@ typedef struct regmatch_state { struct { /* this first element must match u.yes */ struct regmatch_state *prev_yes_state; + I32 wanted; + I32 logical; /* saved copy of 'logical' var */ + regnode *me; /* the IFMATCH/SUSPEND/UNLESSM node */ + } ifmatch; /* and SUSPEND/UNLESSM */ + + struct { + /* this first element must match u.yes */ + struct regmatch_state *prev_yes_state; + struct regmatch_state *prev_mark; + SV* mark_name; + char *mark_loc; + } mark; + + struct { + int val; + } keeper; + + /* quantifiers - these members are used for storing state for + for the regops used to implement quantifiers */ + struct { + /* this first element must match u.yes */ + struct regmatch_state *prev_yes_state; struct regmatch_state *prev_curlyx; /* previous cur_curlyx */ CHECKPOINT cp; /* remember current savestack index */ bool minmod; @@ -365,14 +412,6 @@ typedef struct regmatch_state { struct { /* this first element must match u.yes */ struct regmatch_state *prev_yes_state; - U32 lastparen; - regnode *next_branch; /* next branch node */ - CHECKPOINT cp; - } branch; - - struct { - /* this first element must match u.yes */ - struct regmatch_state *prev_yes_state; I32 c1, c2; /* case fold search */ CHECKPOINT cp; I32 alen; /* length of first-matched A string */ @@ -393,25 +432,6 @@ typedef struct regmatch_state { regnode *A, *B; /* the nodes corresponding to /A*B/ */ } curly; /* and CURLYN/PLUS/STAR */ - struct { - /* this first element must match u.yes */ - struct regmatch_state *prev_yes_state; - I32 wanted; - I32 logical; /* saved copy of 'logical' var */ - regnode *me; /* the IFMATCH/SUSPEND/UNLESSM node */ - } ifmatch; /* and SUSPEND/UNLESSM */ - - struct { - /* this first element must match u.yes */ - struct regmatch_state *prev_yes_state; - struct regmatch_state *prev_mark; - SV* mark_name; - char *mark_loc; - } mark; - - struct { - int val; - } keeper; } u; } regmatch_state; |