summaryrefslogtreecommitdiff
path: root/src/include/regex
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/regex')
-rw-r--r--src/include/regex/regex.h32
-rw-r--r--src/include/regex/regguts.h13
2 files changed, 24 insertions, 21 deletions
diff --git a/src/include/regex/regex.h b/src/include/regex/regex.h
index dc31899aa4d..2b48a19fb7d 100644
--- a/src/include/regex/regex.h
+++ b/src/include/regex/regex.h
@@ -56,21 +56,23 @@ typedef struct
{
int re_magic; /* magic number */
size_t re_nsub; /* number of subexpressions */
- long re_info; /* information about RE */
-#define REG_UBACKREF 000001
-#define REG_ULOOKAROUND 000002
-#define REG_UBOUNDS 000004
-#define REG_UBRACES 000010
-#define REG_UBSALNUM 000020
-#define REG_UPBOTCH 000040
-#define REG_UBBS 000100
-#define REG_UNONPOSIX 000200
-#define REG_UUNSPEC 000400
-#define REG_UUNPORT 001000
-#define REG_ULOCALE 002000
-#define REG_UEMPTYMATCH 004000
-#define REG_UIMPOSSIBLE 010000
-#define REG_USHORTEST 020000
+ long re_info; /* bitmask of the following flags: */
+#define REG_UBACKREF 000001 /* has back-reference (\n) */
+#define REG_ULOOKAROUND 000002 /* has lookahead/lookbehind constraint */
+#define REG_UBOUNDS 000004 /* has bounded quantifier ({m,n}) */
+#define REG_UBRACES 000010 /* has { that doesn't begin a quantifier */
+#define REG_UBSALNUM 000020 /* has backslash-alphanumeric in non-ARE */
+#define REG_UPBOTCH 000040 /* has unmatched right paren in ERE (legal
+ * per spec, but that was a mistake) */
+#define REG_UBBS 000100 /* has backslash within bracket expr */
+#define REG_UNONPOSIX 000200 /* has any construct that extends POSIX */
+#define REG_UUNSPEC 000400 /* has any case disallowed by POSIX, e.g.
+ * an empty branch */
+#define REG_UUNPORT 001000 /* has numeric character code dependency */
+#define REG_ULOCALE 002000 /* has locale dependency */
+#define REG_UEMPTYMATCH 004000 /* can match a zero-length string */
+#define REG_UIMPOSSIBLE 010000 /* provably cannot match anything */
+#define REG_USHORTEST 020000 /* has non-greedy quantifier */
int re_csize; /* sizeof(character) */
char *re_endp; /* backward compatibility kludge */
Oid re_collation; /* Collation that defines LC_CTYPE behavior */
diff --git a/src/include/regex/regguts.h b/src/include/regex/regguts.h
index 90ee16957ac..306525eb5fa 100644
--- a/src/include/regex/regguts.h
+++ b/src/include/regex/regguts.h
@@ -422,7 +422,7 @@ struct cnfa
* "op" is one of:
* '=' plain regex without interesting substructure (implemented as DFA)
* 'b' back-reference (has no substructure either)
- * '(' capture node: captures the match of its single child
+ * '(' no-op capture node: captures the match of its single child
* '.' concatenation: matches a match for first child, then second child
* '|' alternation: matches a match for any of its children
* '*' iteration: matches some number of matches of its single child
@@ -446,8 +446,8 @@ struct subre
#define LONGER 01 /* prefers longer match */
#define SHORTER 02 /* prefers shorter match */
#define MIXED 04 /* mixed preference below */
-#define CAP 010 /* capturing parens below */
-#define BACKR 020 /* back reference below */
+#define CAP 010 /* capturing parens here or below */
+#define BACKR 020 /* back reference here or below */
#define INUSE 0100 /* in use in final tree */
#define NOPROP 03 /* bits which may not propagate up */
#define LMIX(f) ((f)<<2) /* LONGER -> MIXED */
@@ -457,9 +457,10 @@ struct subre
#define PREF(f) ((f)&NOPROP)
#define PREF2(f1, f2) ((PREF(f1) != 0) ? PREF(f1) : PREF(f2))
#define COMBINE(f1, f2) (UP((f1)|(f2)) | PREF2(f1, f2))
- short id; /* ID of subre (1..ntree-1) */
- int subno; /* subexpression number for 'b' and '(', or
- * LATYPE code for lookaround constraint */
+ char latype; /* LATYPE code, if lookaround constraint */
+ int id; /* ID of subre (1..ntree-1) */
+ int capno; /* if capture node, subno to capture into */
+ int backno; /* if backref node, subno it refers to */
short min; /* min repetitions for iteration or backref */
short max; /* max repetitions for iteration or backref */
struct subre *child; /* first child, if any (also freelist chain) */