e5959e493e
in documentation to use "capture group", as Perl does.
162 lines
2.4 KiB
Plaintext
162 lines
2.4 KiB
Plaintext
# This set of tests exercises the serialization/deserialization and code copy
|
|
# functions in the library. It does not use UTF or JIT.
|
|
|
|
#forbid_utf
|
|
|
|
# Compile several patterns, push them onto the stack, and then write them
|
|
# all to a file.
|
|
|
|
#pattern push
|
|
|
|
/(?<NAME>(?&NAME_PAT))\s+(?<ADDR>(?&ADDRESS_PAT))
|
|
(?(DEFINE)
|
|
(?<NAME_PAT>[a-z]+)
|
|
(?<ADDRESS_PAT>\d+)
|
|
)/x
|
|
/^(?:((.)(?1)\2|)|((.)(?3)\4|.))$/i
|
|
|
|
#save testsaved1
|
|
|
|
# Do it again for some more patterns.
|
|
|
|
/(*MARK:A)(*SKIP:B)(C|X)/mark
|
|
** Ignored when compiled pattern is stacked with 'push': mark
|
|
/(?:(?<n>foo)|(?<n>bar))\k<n>/dupnames
|
|
|
|
#save testsaved2
|
|
#pattern -push
|
|
|
|
# Reload the patterns, then pop them one by one and check them.
|
|
|
|
#load testsaved1
|
|
#load testsaved2
|
|
|
|
#pop info
|
|
Capture group count = 2
|
|
Max back reference = 2
|
|
Named capture groups:
|
|
n 1
|
|
n 2
|
|
Options: dupnames
|
|
Starting code units: b f
|
|
Subject length lower bound = 6
|
|
foofoo
|
|
0: foofoo
|
|
1: foo
|
|
barbar
|
|
0: barbar
|
|
1: <unset>
|
|
2: bar
|
|
|
|
#pop mark
|
|
C
|
|
0: C
|
|
1: C
|
|
MK: A
|
|
\= Expect no match
|
|
D
|
|
No match, mark = A
|
|
|
|
#pop
|
|
AmanaplanacanalPanama
|
|
0: AmanaplanacanalPanama
|
|
1: <unset>
|
|
2: <unset>
|
|
3: AmanaplanacanalPanama
|
|
4: A
|
|
|
|
#pop info
|
|
Capture group count = 4
|
|
Named capture groups:
|
|
ADDR 2
|
|
ADDRESS_PAT 4
|
|
NAME 1
|
|
NAME_PAT 3
|
|
Options: extended
|
|
Subject length lower bound = 3
|
|
metcalfe 33
|
|
0: metcalfe 33
|
|
1: metcalfe
|
|
2: 33
|
|
|
|
# Check for an error when different tables are used.
|
|
|
|
/abc/push,tables=1
|
|
/xyz/push,tables=2
|
|
#save testsaved1
|
|
Serialization failed: error -30: patterns do not all use the same character tables
|
|
|
|
#pop
|
|
xyz
|
|
0: xyz
|
|
|
|
#pop
|
|
abc
|
|
0: abc
|
|
|
|
#pop should give an error
|
|
** Can't pop off an empty stack
|
|
pqr
|
|
|
|
/abcd/pushcopy
|
|
abcd
|
|
0: abcd
|
|
|
|
#pop
|
|
abcd
|
|
0: abcd
|
|
|
|
#pop should give an error
|
|
** Can't pop off an empty stack
|
|
|
|
/abcd/push
|
|
#popcopy
|
|
abcd
|
|
0: abcd
|
|
|
|
#pop
|
|
abcd
|
|
0: abcd
|
|
|
|
/abcd/push
|
|
#save testsaved1
|
|
#pop should give an error
|
|
** Can't pop off an empty stack
|
|
|
|
#load testsaved1
|
|
#popcopy
|
|
abcd
|
|
0: abcd
|
|
|
|
#pop
|
|
abcd
|
|
0: abcd
|
|
|
|
#pop should give an error
|
|
** Can't pop off an empty stack
|
|
|
|
/abcd/pushtablescopy
|
|
abcd
|
|
0: abcd
|
|
|
|
#popcopy
|
|
abcd
|
|
0: abcd
|
|
|
|
#pop
|
|
abcd
|
|
0: abcd
|
|
|
|
# Must only specify one of these
|
|
|
|
//push,pushcopy
|
|
** Not allowed together: push pushcopy
|
|
|
|
//push,pushtablescopy
|
|
** Not allowed together: push pushtablescopy
|
|
|
|
//pushcopy,pushtablescopy
|
|
** Not allowed together: pushcopy pushtablescopy
|
|
|
|
# End of testinput20
|