summaryrefslogtreecommitdiff
path: root/regcomp.h
diff options
context:
space:
mode:
authorPerl 5 Porters <perl5-porters@africa.nicoh.com>1996-11-26 20:48:00 +1200
committerChip Salzenberg <chip@atlantic.net>1996-11-26 20:48:00 +1200
commitbbce6d69784bf43b0e69e8d312042d65f258af23 (patch)
treeeb5810e67656c19b6fb34dd0160c9131f24f65d1 /regcomp.h
parent6d82b38436d2a39ffb7413e68ad91495cd645fff (diff)
downloadperl-bbce6d69784bf43b0e69e8d312042d65f258af23.tar.gz
[inseparable changes from patch from perl5.003_08 to perl5.003_09]
CORE LANGUAGE CHANGES Subject: Lexical locales From: Chip Salzenberg <chip@atlantic.net> Files: too many to list make effectiveness of locales depend on C<use locale> Subject: Lexical scoping cleanup From: Chip Salzenberg <chip@atlantic.net> Files: many... but mostly perly.y and toke.c tighten scoping of lexical variables, somewhat on the new constructs and somewhat on the old Subject: memory corruption / security bug in sysread,syswrite + patch Date: Mon, 25 Nov 1996 21:46:31 +0200 (EET) From: Jarkko Hietaniemi <jhi@cc.hut.fi> Files: MANIFEST pod/perldiag.pod pod/perlfunc.pod pp_sys.c t/op/sysio.t Msg-ID: <199611251946.VAA30459@alpha.hut.fi> (applied based on p5p patch as commit d7090df90a9cb89c83787d916e40d92a616b146d) DOCUMENTATION Subject: perldiag documentation patch. Date: Wed, 20 Nov 96 16:07:28 GMT From: Paul Marquess <pmarquess@bfsec.bt.co.uk> Files: pod/perldiag.pod private-msgid: <9611201607.AA12729@claudius.bfsec.bt.co.uk> Subject: a missing perldiag entry Date: Thu, 21 Nov 1996 15:24:02 -0500 From: Gurusamy Sarathy <gsar@engin.umich.edu> Files: pod/perldiag.pod private-msgid: <199611212024.PAA15758@aatma.engin.umich.edu> Subject: perlfunc patch Date: Wed, 20 Nov 96 14:04:08 GMT From: Paul Marquess <pmarquess@bfsec.bt.co.uk> Files: pod/perlfunc.pod Following on from the patch to make uc, lc etc default to $_ (as per Camel II), here is a followup patch to perlfunc that documents the change. I think I have documented all the other cases where $_ defaulting works as well. p5p-msgid: <9611201404.AA12477@claudius.bfsec.bt.co.uk> OTHER CORE CHANGES Subject: Properly prototype safe{malloc,calloc,realloc,free}. From: Chip Salzenberg <chip@atlantic.net> Files: proto.h Subject: UnixWare 2.1 fix for perl5.003_08 - cope with fp->_cnt < -1, allow debugging Date: Wed, 20 Nov 1996 14:27:06 +0100 From: John Hughes <john@AtlanTech.COM> Files: sv.c UnixWare 2.1 has no fp->_base so most of the debugging stuff in sv_gets just core dumps. Also, for some unknown reason fp->_cnt is sometimes < -1, screwing up the initial SvGROW in svgets. Appart from that its io is std. p5p-msgid: <01BBD6EE.E915C860@malvinas.AtlanTech.COM> Subject: die -> croak Date: Thu, 21 Nov 1996 16:11:21 -0500 From: Gurusamy Sarathy <gsar@engin.umich.edu> Files: pp_ctl.c private-msgid: <199611212111.QAA17070@aatma.engin.umich.edu> Subject: Cleanup of {,un}pack('w'). From: Chip Salzenberg <chip@atlantic.net> Files: pp.c Subject: Cleanups from Ilya. From: Chip Salzenberg <chip@atlantic.net> Files: gv.c malloc.c pod/perlguts.pod pp_ctl.c Subject: Fix for unpack('w') on 64-bit systems. From: Chip Salzenberg <chip@atlantic.net> Files: pp.c Subject: Re: LC_NUMERIC support is ready + performance Date: Mon, 25 Nov 1996 22:08:27 -0500 (EST) From: Ilya Zakharevich <ilya@math.ohio-state.edu> Files: sv.c Chip Salzenberg writes: > > Having thought about the use of our own gcvt() and atof(), I've run > away in horror. It's just too hairy. > > So I've implemented the only viable alternative I know of: Toggling > LC_NUMERIC to/from "C" as needed. > > Patch follows. > > I think _09 is *very* close. Since _09 is going to be alpha anyway, I reiterate my question: Is there any reason to not include my hash/array performance patches in _09? Btw, here is the next performance patch. It makes PADTMP values stealable too. I do not do by setting TEMP flags on them, since it would be a very distributed patch, and it would break some places which check for TEMP for some other reasons (yes, I checked ;-). This patch decreases *twice* the memory usage of perl -e '$a = "a" x 1e6; 1' Enjoy, p5p-msgid: <199611260308.WAA02677@monk.mps.ohio-state.edu> Subject: Hash key sharing improvements from Ilya. From: Chip Salzenberg <chip@atlantic.net> Files: hv.c hv.h proto.h Subject: Mortal stack pre-allocation from Ilya. From: Chip Salzenberg <chip@atlantic.net> Files: pp.c pp.h pp_ctl.c pp_hot.c pp_sys.c PORTABILITY Subject: VMS patches post-5.003_08 Date: Fri, 22 Nov 1996 18:16:31 -0500 (EST) From: Charles Bailey <bailey@hmivax.humgen.upenn.edu> Files: lib/ExtUtils/MM_Unix.pm lib/ExtUtils/MM_VMS.pm lib/ExtUtils/MakeMaker.pm lib/File/Path.pm mg.c pp_ctl.c utils/h2xs.PL vms/config.vms vms/descrip.mms vms/gen_shrfls.pl vms/genconfig.pl vms/perlvms.pod vms/vms.c vms/vmsish.h Here're diffs to bring a base 5.003_08 up to the current VMS working sources. Nearly all of the changes are VMS-specific, and comprise miscellaneous bugfixes accumulated since 5.003_07, rather than any particular problem with 5.003_08. I'm posting them here since some of the patches change core files, and I'd like to insure that I haven't accidentally created problems for anyone else. With these and a couple of of the small patches already send to p5p, 5.003_08 builds clean and passes all tests under VMS. Thanks, Chip, for all the work. p5p-msgid: <1996Nov22.181631.1603238@hmivax.humgen.upenn.edu>
Diffstat (limited to 'regcomp.h')
-rw-r--r--regcomp.h121
1 files changed, 80 insertions, 41 deletions
diff --git a/regcomp.h b/regcomp.h
index b2d9b846f7..9d07ff9d1c 100644
--- a/regcomp.h
+++ b/regcomp.h
@@ -48,41 +48,49 @@
*/
/* definition number opnd? meaning */
-#define END 0 /* no End of program. */
-#define BOL 1 /* no Match "" at beginning of line. */
-#define MBOL 2 /* no Same, assuming multiline. */
-#define SBOL 3 /* no Same, assuming singleline. */
-#define EOL 4 /* no Match "" at end of line. */
-#define MEOL 5 /* no Same, assuming multiline. */
-#define SEOL 6 /* no Same, assuming singleline. */
-#define ANY 7 /* no Match any one character (except newline). */
-#define SANY 8 /* no Match any one character. */
-#define ANYOF 9 /* sv Match character in (or not in) this class. */
+#define END 0 /* no End of program. */
+#define BOL 1 /* no Match "" at beginning of line. */
+#define MBOL 2 /* no Same, assuming multiline. */
+#define SBOL 3 /* no Same, assuming singleline. */
+#define EOL 4 /* no Match "" at end of line. */
+#define MEOL 5 /* no Same, assuming multiline. */
+#define SEOL 6 /* no Same, assuming singleline. */
+#define ANY 7 /* no Match any one character (except newline). */
+#define SANY 8 /* no Match any one character. */
+#define ANYOF 9 /* sv Match character in (or not in) this class. */
#define CURLY 10 /* sv Match this simple thing {n,m} times. */
#define CURLYX 11 /* sv Match this complex thing {n,m} times. */
#define BRANCH 12 /* node Match this alternative, or the next... */
#define BACK 13 /* no Match "", "next" ptr points backward. */
-#define EXACTLY 14 /* sv Match this string (preceded by length). */
-#define NOTHING 15 /* no Match empty string. */
-#define STAR 16 /* node Match this (simple) thing 0 or more times. */
-#define PLUS 17 /* node Match this (simple) thing 1 or more times. */
-#define ALNUM 18 /* no Match any alphanumeric character */
-#define NALNUM 19 /* no Match any non-alphanumeric character */
+#define EXACT 14 /* sv Match this string (preceded by length). */
+#define EXACTF 15 /* sv Match this string, folded (prec. by length). */
+#define EXACTFL 16 /* sv Match this string, folded in locale (w/len). */
+#define NOTHING 17 /* no Match empty string. */
+#define STAR 18 /* node Match this (simple) thing 0 or more times. */
+#define PLUS 19 /* node Match this (simple) thing 1 or more times. */
#define BOUND 20 /* no Match "" at any word boundary */
-#define NBOUND 21 /* no Match "" at any word non-boundary */
-#define SPACE 22 /* no Match any whitespace character */
-#define NSPACE 23 /* no Match any non-whitespace character */
-#define DIGIT 24 /* no Match any numeric character */
-#define NDIGIT 25 /* no Match any non-numeric character */
-#define REF 26 /* num Match some already matched string */
-#define OPEN 27 /* num Mark this point in input as start of #n. */
-#define CLOSE 28 /* num Analogous to OPEN. */
-#define MINMOD 29 /* no Next operator is not greedy. */
-#define GBOL 30 /* no Matches where last m//g left off. */
-#define IFMATCH 31 /* no Succeeds if the following matches. */
-#define UNLESSM 32 /* no Fails if the following matches. */
-#define SUCCEED 33 /* no Return from a subroutine, basically. */
-#define WHILEM 34 /* no Do curly processing and see if rest matches. */
+#define BOUNDL 21 /* no Match "" at any word boundary */
+#define NBOUND 22 /* no Match "" at any word non-boundary */
+#define NBOUNDL 23 /* no Match "" at any word non-boundary */
+#define REF 24 /* num Match some already matched string */
+#define OPEN 25 /* num Mark this point in input as start of #n. */
+#define CLOSE 26 /* num Analogous to OPEN. */
+#define MINMOD 27 /* no Next operator is not greedy. */
+#define GBOL 28 /* no Matches where last m//g left off. */
+#define IFMATCH 29 /* no Succeeds if the following matches. */
+#define UNLESSM 30 /* no Fails if the following matches. */
+#define SUCCEED 31 /* no Return from a subroutine, basically. */
+#define WHILEM 32 /* no Do curly processing and see if rest matches. */
+#define ALNUM 33 /* no Match any alphanumeric character */
+#define ALNUML 34 /* no Match any alphanumeric char in locale */
+#define NALNUM 35 /* no Match any non-alphanumeric character */
+#define NALNUML 36 /* no Match any non-alphanumeric char in locale */
+#define SPACE 37 /* no Match any whitespace character */
+#define SPACEL 38 /* no Match any whitespace char in locale */
+#define NSPACE 39 /* no Match any non-whitespace character */
+#define NSPACEL 40 /* no Match any non-whitespace char in locale */
+#define DIGIT 41 /* no Match any numeric character */
+#define NDIGIT 42 /* no Match any non-numeric character */
/*
* Opcode notes:
@@ -109,7 +117,13 @@
#ifndef DOINIT
EXT char regarglen[];
#else
-EXT char regarglen[] = {0,0,0,0,0,0,0,0,0,0,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,0,0,0,0,0};
+EXT char regarglen[] = {
+ 0,0,0,0,0,0,0,0,0,0,
+ /*CURLY*/ 4, /*CURLYX*/ 4,
+ 0,0,0,0,0,0,0,0,0,0,0,0,
+ /*REF*/ 2, /*OPEN*/ 2, /*CLOSE*/ 2,
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+};
#endif
#ifndef DOINIT
@@ -130,18 +144,16 @@ EXT char regkind[] = {
CURLY,
BRANCH,
BACK,
- EXACTLY,
+ EXACT,
+ EXACT,
+ EXACT,
NOTHING,
STAR,
PLUS,
- ALNUM,
- NALNUM,
+ BOUND,
BOUND,
NBOUND,
- SPACE,
- NSPACE,
- DIGIT,
- NDIGIT,
+ NBOUND,
REF,
OPEN,
CLOSE,
@@ -150,7 +162,17 @@ EXT char regkind[] = {
BRANCH,
BRANCH,
END,
- WHILEM
+ WHILEM,
+ ALNUM,
+ ALNUM,
+ NALNUM,
+ NALNUM,
+ SPACE,
+ SPACE,
+ NSPACE,
+ NSPACE,
+ DIGIT,
+ NDIGIT,
};
#endif
@@ -158,14 +180,21 @@ EXT char regkind[] = {
#ifndef DOINIT
EXT char varies[];
#else
-EXT char varies[] = {BRANCH,BACK,STAR,PLUS,CURLY,CURLYX,REF,WHILEM,0};
+EXT char varies[] = {
+ BRANCH, BACK, STAR, PLUS, CURLY, CURLYX, REF, WHILEM, 0
+};
#endif
/* The following always have a length of 1. */
#ifndef DOINIT
EXT char simple[];
#else
-EXT char simple[] = {ANY,SANY,ANYOF,ALNUM,NALNUM,SPACE,NSPACE,DIGIT,NDIGIT,0};
+EXT char simple[] = {
+ ANY, SANY, ANYOF,
+ ALNUM, ALNUML, NALNUM, NALNUML,
+ SPACE, SPACEL, NSPACE, NSPACEL,
+ DIGIT, NDIGIT, 0
+};
#endif
EXT char regdummy;
@@ -222,6 +251,16 @@ EXT char regdummy;
#define MAGIC 0234
+/* Flags for first parameter byte of ANYOF */
+#define ANYOF_INVERT 0x40
+#define ANYOF_FOLD 0x20
+#define ANYOF_LOCALE 0x10
+#define ANYOF_ISA 0x0F
+#define ANYOF_ALNUML 0x08
+#define ANYOF_NALNUML 0x04
+#define ANYOF_SPACEL 0x02
+#define ANYOF_NSPACEL 0x01
+
/*
* Utility definitions.
*/