summaryrefslogtreecommitdiff
path: root/testdata/testoutput20
blob: 5ce720fa1be0b2df22f1e1f549d6614d895260e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# 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