-
Notifications
You must be signed in to change notification settings - Fork 1.2k
/
Copy pathRegCodes.h
49 lines (43 loc) · 2.86 KB
/
RegCodes.h
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
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
// These byte codes _cannot_ appear in the regexOpCode field of a Node.
RegOp(GreedyStar ,Rev,Lng, 0 , 0 ) // 00/00 * label, cchMinRem
RegOp(RevBranch ,Rev,Lng,Lng, 0 ) // 01/01 label, cchMinRem, pnode->cchMinTot
RegOp(GreedyLoop ,Rev,Lng,Lng,Lng) // 02/02 label, min, max, cchMinRem
RegOp(LoopInit ,Fwd,Int,Lng, 0 ) // 03/03 label, #, min
RegOp(GreedyLoopTest ,Rev,Int,Lng,Lng) // 04/04 label, #, max-min, cchMinRem
RegOp(NonGreedyStar ,Rev,Lng, 0 , 0 ) // 05 * label, cchMinRem
RegOp(NonGreedyLoop ,Rev,Lng,Lng,Lng) // 06 label, min, max, cchMinRem
RegOp(NonGreedyLoopTest,Rev,Int,Lng,Lng) // 07 label, #, max-min, cchMinRem
RegOp(Open ,Int, 0 , 0 , 0 ) // 05/08 ( #
RegOp(Close ,Int, 0 , 0 , 0 ) // 06/09 ) #
RegOp(MatchOne ,Chr, 0 , 0 , 0 ) // 07/0A character
RegOp(Need ,Lng, 0 , 0 , 0 ) // 08/0B cchMinRem
RegOp(Fail , 0 , 0 , 0 , 0 ) // 09/0C no way to match this
RegOp(Jump ,Fwd, 0 , 0 , 0 ) // 0A/0D label
RegOp(PosLookahead ,Fwd, 0 , 0 , 0 ) // 0E label
RegOp(NegLookahead ,Fwd, 0 , 0 , 0 ) // 0F label
RegOp(LookaheadEnd , 0 , 0 , 0 , 0 ) // 10
RegOp(End , 0 , 0 , 0 , 0 ) // 0B/11
// These byte codes _can_ appear in the regexOpCode field of a Node.
RegOp(Branch ,Fwd, 0 , 0 , 0 ) // 0C/12 label
RegOp(Match ,Cch, 0 , 0 , 0 ) // 0D/13 cch, characters
RegOp(MatchGroup ,Int, 0 , 0 , 0 ) // 0E/14 \1 #
RegOp(Head , 0 , 0 , 0 , 0 ) // 0F/15 ^
RegOp(Tail , 0 , 0 , 0 , 0 ) // 10/16 $
RegOp(WordBound , 0 , 0 , 0 , 0 ) // 11/17 \b
RegOp(NotWordBound , 0 , 0 , 0 , 0 ) // 12/18 \B
RegOp(Any , 0 , 0 , 0 , 0 ) // 13/19 No longer used
RegOp(AnyOf ,Cch, 0 , 0 , 0 ) // 14/1A [] cch, transition characters
RegOp(AnyBut ,Cch, 0 , 0 , 0 ) // 15/1B [^] cch, transition characters
RegOp(Digit , 0 , 0 , 0 , 0 ) // 16/1C \d
RegOp(NotDigit , 0 , 0 , 0 , 0 ) // 17/1D \D
RegOp(Space , 0 , 0 , 0 , 0 ) // 18/1E \s
RegOp(NotSpace , 0 , 0 , 0 , 0 ) // 19/1F \S
RegOp(Letter , 0 , 0 , 0 , 0 ) // 1A/20 \w
RegOp(NotLetter , 0 , 0 , 0 , 0 ) // 1B/21 \W
RegOp(NotLF , 0 , 0 , 0 , 0 ) // 1C/22 .
RegOp(Dummy , 0 , 0 , 0 , 0 ) // 1D/23 Dummy. Default opcode to check for absence of opcode
#undef RegOp