mirror of
https://github.com/github/codeql.git
synced 2026-07-30 23:13:01 +02:00
C++: Make regex test work
Note that we are currently still implementing what Ruby thinks a regex is. This is not correct as C++ by default uses a variant of ECMAScript regexes. We will address this in the follow-up commits.
This commit is contained in:
@@ -1,489 +1,487 @@
|
||||
regexp.rb:
|
||||
# 5| [RegExpConstant, RegExpNormalChar] abc
|
||||
regexp.cpp:
|
||||
# 18| [RegExpConstant, RegExpNormalChar] abc
|
||||
|
||||
# 8| [RegExpConstant, RegExpNormalChar] a
|
||||
# 21| [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 8| [RegExpStar] a*
|
||||
# 21| [RegExpStar] a*
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 8| [RegExpSequence] a*b+c?d
|
||||
# 21| [RegExpSequence] a*b+c?d
|
||||
#-----| 0 -> [RegExpStar] a*
|
||||
#-----| 1 -> [RegExpPlus] b+
|
||||
#-----| 2 -> [RegExpOpt] c?
|
||||
#-----| 3 -> [RegExpConstant, RegExpNormalChar] d
|
||||
|
||||
# 8| [RegExpConstant, RegExpNormalChar] b
|
||||
# 21| [RegExpConstant, RegExpNormalChar] b
|
||||
|
||||
# 8| [RegExpPlus] b+
|
||||
# 21| [RegExpPlus] b+
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] b
|
||||
|
||||
# 8| [RegExpConstant, RegExpNormalChar] c
|
||||
# 21| [RegExpConstant, RegExpNormalChar] c
|
||||
|
||||
# 8| [RegExpOpt] c?
|
||||
# 21| [RegExpOpt] c?
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] c
|
||||
|
||||
# 8| [RegExpConstant, RegExpNormalChar] d
|
||||
# 21| [RegExpConstant, RegExpNormalChar] d
|
||||
|
||||
# 9| [RegExpConstant, RegExpNormalChar] a
|
||||
# 22| [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 9| [RegExpRange] a{4,8}
|
||||
# 22| [RegExpRange] a{4,8}
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 10| [RegExpConstant, RegExpNormalChar] a
|
||||
# 23| [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 10| [RegExpRange] a{,8}
|
||||
# 23| [RegExpRange] a{,8}
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 11| [RegExpConstant, RegExpNormalChar] a
|
||||
# 24| [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 11| [InfiniteRepetitionQuantifier, RegExpRange] a{3,}
|
||||
# 24| [InfiniteRepetitionQuantifier, RegExpRange] a{3,}
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 12| [RegExpConstant, RegExpNormalChar] a
|
||||
# 25| [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 12| [RegExpRange] a{7}
|
||||
# 25| [RegExpRange] a{7}
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 15| [RegExpConstant, RegExpNormalChar] foo
|
||||
# 28| [RegExpConstant, RegExpNormalChar] foo
|
||||
|
||||
# 15| [RegExpAlt] foo|bar
|
||||
# 28| [RegExpAlt] foo|bar
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] foo
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] bar
|
||||
|
||||
# 15| [RegExpConstant, RegExpNormalChar] bar
|
||||
# 28| [RegExpConstant, RegExpNormalChar] bar
|
||||
|
||||
# 18| [RegExpCharacterClass] [abc]
|
||||
# 31| [RegExpCharacterClass] [abc]
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] b
|
||||
#-----| 2 -> [RegExpConstant, RegExpNormalChar] c
|
||||
|
||||
# 18| [RegExpConstant, RegExpNormalChar] a
|
||||
# 31| [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 18| [RegExpConstant, RegExpNormalChar] b
|
||||
# 31| [RegExpConstant, RegExpNormalChar] b
|
||||
|
||||
# 18| [RegExpConstant, RegExpNormalChar] c
|
||||
# 31| [RegExpConstant, RegExpNormalChar] c
|
||||
|
||||
# 19| [RegExpCharacterClass] [a-fA-F0-9_]
|
||||
# 32| [RegExpCharacterClass] [a-fA-F0-9_]
|
||||
#-----| 0 -> [RegExpCharacterRange] a-f
|
||||
#-----| 1 -> [RegExpCharacterRange] A-F
|
||||
#-----| 2 -> [RegExpCharacterRange] 0-9
|
||||
#-----| 3 -> [RegExpConstant, RegExpNormalChar] _
|
||||
|
||||
# 19| [RegExpConstant, RegExpNormalChar] a
|
||||
# 32| [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 19| [RegExpCharacterRange] a-f
|
||||
# 32| [RegExpCharacterRange] a-f
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] f
|
||||
|
||||
# 19| [RegExpConstant, RegExpNormalChar] f
|
||||
# 32| [RegExpConstant, RegExpNormalChar] f
|
||||
|
||||
# 19| [RegExpConstant, RegExpNormalChar] A
|
||||
# 32| [RegExpConstant, RegExpNormalChar] A
|
||||
|
||||
# 19| [RegExpCharacterRange] A-F
|
||||
# 32| [RegExpCharacterRange] A-F
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] A
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] F
|
||||
|
||||
# 19| [RegExpConstant, RegExpNormalChar] F
|
||||
# 32| [RegExpConstant, RegExpNormalChar] F
|
||||
|
||||
# 19| [RegExpConstant, RegExpNormalChar] 0
|
||||
# 32| [RegExpConstant, RegExpNormalChar] 0
|
||||
|
||||
# 19| [RegExpCharacterRange] 0-9
|
||||
# 32| [RegExpCharacterRange] 0-9
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] 0
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] 9
|
||||
|
||||
# 19| [RegExpConstant, RegExpNormalChar] 9
|
||||
# 32| [RegExpConstant, RegExpNormalChar] 9
|
||||
|
||||
# 19| [RegExpConstant, RegExpNormalChar] _
|
||||
# 32| [RegExpConstant, RegExpNormalChar] _
|
||||
|
||||
# 20| [RegExpCaret] \A
|
||||
# 33| [RegExpCaret] \A
|
||||
|
||||
# 20| [RegExpSequence] \A[+-]?\d+
|
||||
# 33| [RegExpSequence] \A[+-]?\d+
|
||||
#-----| 0 -> [RegExpCaret] \A
|
||||
#-----| 1 -> [RegExpOpt] [+-]?
|
||||
#-----| 2 -> [RegExpPlus] \d+
|
||||
|
||||
# 20| [RegExpCharacterClass] [+-]
|
||||
# 33| [RegExpCharacterClass] [+-]
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] +
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] -
|
||||
|
||||
# 20| [RegExpOpt] [+-]?
|
||||
# 33| [RegExpOpt] [+-]?
|
||||
#-----| 0 -> [RegExpCharacterClass] [+-]
|
||||
|
||||
# 20| [RegExpConstant, RegExpNormalChar] +
|
||||
# 33| [RegExpConstant, RegExpNormalChar] +
|
||||
|
||||
# 20| [RegExpConstant, RegExpNormalChar] -
|
||||
# 33| [RegExpConstant, RegExpNormalChar] -
|
||||
|
||||
# 20| [RegExpCharacterClassEscape] \d
|
||||
# 33| [RegExpCharacterClassEscape] \d
|
||||
|
||||
# 20| [RegExpPlus] \d+
|
||||
# 33| [RegExpPlus] \d+
|
||||
#-----| 0 -> [RegExpCharacterClassEscape] \d
|
||||
|
||||
# 21| [RegExpCharacterClass] [\w]
|
||||
# 34| [RegExpCharacterClass] [\w]
|
||||
#-----| 0 -> [RegExpCharacterClassEscape] \w
|
||||
|
||||
# 21| [RegExpPlus] [\w]+
|
||||
# 34| [RegExpPlus] [\w]+
|
||||
#-----| 0 -> [RegExpCharacterClass] [\w]
|
||||
|
||||
# 21| [RegExpCharacterClassEscape] \w
|
||||
# 34| [RegExpCharacterClassEscape] \w
|
||||
|
||||
# 22| [RegExpConstant, RegExpEscape] \[
|
||||
# 35| [RegExpConstant, RegExpEscape] \[
|
||||
|
||||
# 22| [RegExpSequence] \[\][123]
|
||||
# 35| [RegExpSequence] \[\][123]
|
||||
#-----| 0 -> [RegExpConstant, RegExpEscape] \[
|
||||
#-----| 1 -> [RegExpConstant, RegExpEscape] \]
|
||||
#-----| 2 -> [RegExpCharacterClass] [123]
|
||||
|
||||
# 22| [RegExpConstant, RegExpEscape] \]
|
||||
# 35| [RegExpConstant, RegExpEscape] \]
|
||||
|
||||
# 22| [RegExpCharacterClass] [123]
|
||||
# 35| [RegExpCharacterClass] [123]
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] 1
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] 2
|
||||
#-----| 2 -> [RegExpConstant, RegExpNormalChar] 3
|
||||
|
||||
# 22| [RegExpConstant, RegExpNormalChar] 1
|
||||
# 35| [RegExpConstant, RegExpNormalChar] 1
|
||||
|
||||
# 22| [RegExpConstant, RegExpNormalChar] 2
|
||||
# 35| [RegExpConstant, RegExpNormalChar] 2
|
||||
|
||||
# 22| [RegExpConstant, RegExpNormalChar] 3
|
||||
# 35| [RegExpConstant, RegExpNormalChar] 3
|
||||
|
||||
# 23| [RegExpCharacterClass] [^A-Z]
|
||||
# 36| [RegExpCharacterClass] [^A-Z]
|
||||
#-----| 0 -> [RegExpCharacterRange] A-Z
|
||||
|
||||
# 23| [RegExpConstant, RegExpNormalChar] A
|
||||
# 36| [RegExpConstant, RegExpNormalChar] A
|
||||
|
||||
# 23| [RegExpCharacterRange] A-Z
|
||||
# 36| [RegExpCharacterRange] A-Z
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] A
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] Z
|
||||
|
||||
# 23| [RegExpConstant, RegExpNormalChar] Z
|
||||
# 36| [RegExpConstant, RegExpNormalChar] Z
|
||||
|
||||
# 24| [RegExpCharacterClass] []]
|
||||
# 37| [RegExpCharacterClass] []]
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] ]
|
||||
|
||||
# 24| [RegExpConstant, RegExpNormalChar] ]
|
||||
# 37| [RegExpConstant, RegExpNormalChar] ]
|
||||
|
||||
# 25| [RegExpCharacterClass] [^]]
|
||||
# 38| [RegExpCharacterClass] [^]]
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] ]
|
||||
|
||||
# 25| [RegExpConstant, RegExpNormalChar] ]
|
||||
# 38| [RegExpConstant, RegExpNormalChar] ]
|
||||
|
||||
# 26| [RegExpCharacterClass] [^-]
|
||||
# 39| [RegExpCharacterClass] [^-]
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] -
|
||||
|
||||
# 26| [RegExpConstant, RegExpNormalChar] -
|
||||
# 39| [RegExpConstant, RegExpNormalChar] -
|
||||
|
||||
# 27| [RegExpCharacterClass] [|]
|
||||
# 40| [RegExpCharacterClass] [|]
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] |
|
||||
|
||||
# 27| [RegExpConstant, RegExpNormalChar] |
|
||||
# 40| [RegExpConstant, RegExpNormalChar] |
|
||||
|
||||
# 30| [RegExpCharacterClass] [[a-f]
|
||||
# 43| [RegExpCharacterClass] [[a-f]
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] [
|
||||
#-----| 1 -> [RegExpCharacterRange] a-f
|
||||
|
||||
# 30| [RegExpSequence] [[a-f]A-F]
|
||||
# 43| [RegExpSequence] [[a-f]A-F]
|
||||
#-----| 0 -> [RegExpCharacterClass] [[a-f]
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] A-F]
|
||||
|
||||
# 30| [RegExpConstant, RegExpNormalChar] [
|
||||
# 43| [RegExpConstant, RegExpNormalChar] [
|
||||
|
||||
# 30| [RegExpConstant, RegExpNormalChar] a
|
||||
# 43| [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 30| [RegExpCharacterRange] a-f
|
||||
# 43| [RegExpCharacterRange] a-f
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] f
|
||||
|
||||
# 30| [RegExpConstant, RegExpNormalChar] f
|
||||
# 43| [RegExpConstant, RegExpNormalChar] f
|
||||
|
||||
# 30| [RegExpConstant, RegExpNormalChar] A-F]
|
||||
# 43| [RegExpConstant, RegExpNormalChar] A-F]
|
||||
|
||||
# 33| [RegExpDot] .
|
||||
# 46| [RegExpDot] .
|
||||
|
||||
# 33| [RegExpStar] .*
|
||||
# 46| [RegExpStar] .*
|
||||
#-----| 0 -> [RegExpDot] .
|
||||
|
||||
# 34| [RegExpDot] .
|
||||
# 47| [RegExpDot] .
|
||||
|
||||
# 34| [RegExpStar] .*
|
||||
# 47| [RegExpStar] .*
|
||||
#-----| 0 -> [RegExpDot] .
|
||||
|
||||
# 35| [RegExpCharacterClassEscape] \w
|
||||
# 48| [RegExpCharacterClassEscape] \w
|
||||
|
||||
# 35| [RegExpPlus] \w+
|
||||
# 48| [RegExpPlus] \w+
|
||||
#-----| 0 -> [RegExpCharacterClassEscape] \w
|
||||
|
||||
# 35| [RegExpSequence] \w+\W
|
||||
# 48| [RegExpSequence] \w+\W
|
||||
#-----| 0 -> [RegExpPlus] \w+
|
||||
#-----| 1 -> [RegExpCharacterClassEscape] \W
|
||||
|
||||
# 35| [RegExpCharacterClassEscape] \W
|
||||
# 48| [RegExpCharacterClassEscape] \W
|
||||
|
||||
# 36| [RegExpCharacterClassEscape] \s
|
||||
# 49| [RegExpCharacterClassEscape] \s
|
||||
|
||||
# 36| [RegExpSequence] \s\S
|
||||
# 49| [RegExpSequence] \s\S
|
||||
#-----| 0 -> [RegExpCharacterClassEscape] \s
|
||||
#-----| 1 -> [RegExpCharacterClassEscape] \S
|
||||
|
||||
# 36| [RegExpCharacterClassEscape] \S
|
||||
# 49| [RegExpCharacterClassEscape] \S
|
||||
|
||||
# 37| [RegExpCharacterClassEscape] \d
|
||||
# 50| [RegExpCharacterClassEscape] \d
|
||||
|
||||
# 37| [RegExpSequence] \d\D
|
||||
# 50| [RegExpSequence] \d\D
|
||||
#-----| 0 -> [RegExpCharacterClassEscape] \d
|
||||
#-----| 1 -> [RegExpCharacterClassEscape] \D
|
||||
|
||||
# 37| [RegExpCharacterClassEscape] \D
|
||||
# 50| [RegExpCharacterClassEscape] \D
|
||||
|
||||
# 38| [RegExpCharacterClassEscape] \h
|
||||
# 51| [RegExpCharacterClassEscape] \h
|
||||
|
||||
# 38| [RegExpSequence] \h\H
|
||||
# 51| [RegExpSequence] \h\H
|
||||
#-----| 0 -> [RegExpCharacterClassEscape] \h
|
||||
#-----| 1 -> [RegExpCharacterClassEscape] \H
|
||||
|
||||
# 38| [RegExpCharacterClassEscape] \H
|
||||
# 51| [RegExpCharacterClassEscape] \H
|
||||
|
||||
# 39| [RegExpConstant, RegExpEscape] \n
|
||||
# 52| [RegExpConstant, RegExpEscape] \n
|
||||
|
||||
# 39| [RegExpSequence] \n\r\t
|
||||
# 52| [RegExpSequence] \n\r\t
|
||||
#-----| 0 -> [RegExpConstant, RegExpEscape] \n
|
||||
#-----| 1 -> [RegExpConstant, RegExpEscape] \r
|
||||
#-----| 2 -> [RegExpConstant, RegExpEscape] \t
|
||||
|
||||
# 39| [RegExpConstant, RegExpEscape] \r
|
||||
# 52| [RegExpConstant, RegExpEscape] \r
|
||||
|
||||
# 39| [RegExpConstant, RegExpEscape] \t
|
||||
# 52| [RegExpConstant, RegExpEscape] \t
|
||||
|
||||
# 42| [RegExpSpecialChar] \G
|
||||
# 55| [RegExpSpecialChar] \G
|
||||
|
||||
# 42| [RegExpSequence] \Gabc
|
||||
# 55| [RegExpSequence] \Gabc
|
||||
#-----| 0 -> [RegExpSpecialChar] \G
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] abc
|
||||
|
||||
# 42| [RegExpConstant, RegExpNormalChar] abc
|
||||
# 55| [RegExpConstant, RegExpNormalChar] abc
|
||||
|
||||
# 43| [RegExpSpecialChar] \b
|
||||
# 56| [RegExpSpecialChar] \b
|
||||
|
||||
# 43| [RegExpSequence] \b!a\B
|
||||
# 56| [RegExpSequence] \b!a\B
|
||||
#-----| 0 -> [RegExpSpecialChar] \b
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] !a
|
||||
#-----| 2 -> [RegExpNonWordBoundary] \B
|
||||
|
||||
# 43| [RegExpConstant, RegExpNormalChar] !a
|
||||
# 56| [RegExpConstant, RegExpNormalChar] !a
|
||||
|
||||
# 43| [RegExpNonWordBoundary] \B
|
||||
# 56| [RegExpNonWordBoundary] \B
|
||||
|
||||
# 46| [RegExpGroup] (foo)
|
||||
# 59| [RegExpGroup] (foo)
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] foo
|
||||
|
||||
# 46| [RegExpStar] (foo)*
|
||||
# 59| [RegExpStar] (foo)*
|
||||
#-----| 0 -> [RegExpGroup] (foo)
|
||||
|
||||
# 46| [RegExpSequence] (foo)*bar
|
||||
# 59| [RegExpSequence] (foo)*bar
|
||||
#-----| 0 -> [RegExpStar] (foo)*
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] bar
|
||||
|
||||
# 46| [RegExpConstant, RegExpNormalChar] foo
|
||||
# 59| [RegExpConstant, RegExpNormalChar] foo
|
||||
|
||||
# 46| [RegExpConstant, RegExpNormalChar] bar
|
||||
# 59| [RegExpConstant, RegExpNormalChar] bar
|
||||
|
||||
# 47| [RegExpConstant, RegExpNormalChar] fo
|
||||
# 60| [RegExpConstant, RegExpNormalChar] fo
|
||||
|
||||
# 47| [RegExpSequence] fo(o|b)ar
|
||||
# 60| [RegExpSequence] fo(o|b)ar
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] fo
|
||||
#-----| 1 -> [RegExpGroup] (o|b)
|
||||
#-----| 2 -> [RegExpConstant, RegExpNormalChar] ar
|
||||
|
||||
# 47| [RegExpGroup] (o|b)
|
||||
# 60| [RegExpGroup] (o|b)
|
||||
#-----| 0 -> [RegExpAlt] o|b
|
||||
|
||||
# 47| [RegExpConstant, RegExpNormalChar] o
|
||||
# 60| [RegExpConstant, RegExpNormalChar] o
|
||||
|
||||
# 47| [RegExpAlt] o|b
|
||||
# 60| [RegExpAlt] o|b
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] o
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] b
|
||||
|
||||
# 47| [RegExpConstant, RegExpNormalChar] b
|
||||
# 60| [RegExpConstant, RegExpNormalChar] b
|
||||
|
||||
# 47| [RegExpConstant, RegExpNormalChar] ar
|
||||
# 60| [RegExpConstant, RegExpNormalChar] ar
|
||||
|
||||
# 48| [RegExpGroup] (a|b|cd)
|
||||
# 61| [RegExpGroup] (a|b|cd)
|
||||
#-----| 0 -> [RegExpAlt] a|b|cd
|
||||
|
||||
# 48| [RegExpSequence] (a|b|cd)e
|
||||
# 61| [RegExpSequence] (a|b|cd)e
|
||||
#-----| 0 -> [RegExpGroup] (a|b|cd)
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] e
|
||||
|
||||
# 48| [RegExpConstant, RegExpNormalChar] a
|
||||
# 61| [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 48| [RegExpAlt] a|b|cd
|
||||
# 61| [RegExpAlt] a|b|cd
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] b
|
||||
#-----| 2 -> [RegExpConstant, RegExpNormalChar] cd
|
||||
|
||||
# 48| [RegExpConstant, RegExpNormalChar] b
|
||||
# 61| [RegExpConstant, RegExpNormalChar] b
|
||||
|
||||
# 48| [RegExpConstant, RegExpNormalChar] cd
|
||||
# 61| [RegExpConstant, RegExpNormalChar] cd
|
||||
|
||||
# 48| [RegExpConstant, RegExpNormalChar] e
|
||||
# 61| [RegExpConstant, RegExpNormalChar] e
|
||||
|
||||
# 49| [RegExpGroup] (?::+)
|
||||
# 62| [RegExpGroup] (?::+)
|
||||
#-----| 0 -> [RegExpPlus] :+
|
||||
|
||||
# 49| [RegExpSequence] (?::+)\w
|
||||
# 62| [RegExpSequence] (?::+)\w
|
||||
#-----| 0 -> [RegExpGroup] (?::+)
|
||||
#-----| 1 -> [RegExpCharacterClassEscape] \w
|
||||
|
||||
# 49| [RegExpConstant, RegExpNormalChar] :
|
||||
# 62| [RegExpConstant, RegExpNormalChar] :
|
||||
|
||||
# 49| [RegExpPlus] :+
|
||||
# 62| [RegExpPlus] :+
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] :
|
||||
|
||||
# 49| [RegExpCharacterClassEscape] \w
|
||||
# 62| [RegExpCharacterClassEscape] \w
|
||||
|
||||
# 52| [RegExpGroup] (?<id>\w+)
|
||||
# 65| [RegExpGroup] (?<id>\w+)
|
||||
#-----| 0 -> [RegExpPlus] \w+
|
||||
|
||||
# 52| [RegExpCharacterClassEscape] \w
|
||||
# 65| [RegExpCharacterClassEscape] \w
|
||||
|
||||
# 52| [RegExpPlus] \w+
|
||||
# 65| [RegExpPlus] \w+
|
||||
#-----| 0 -> [RegExpCharacterClassEscape] \w
|
||||
|
||||
# 53| [RegExpGroup] (?'foo'fo+)
|
||||
# 66| [RegExpGroup] (?'foo'fo+)
|
||||
#-----| 0 -> [RegExpSequence] fo+
|
||||
|
||||
# 53| [RegExpConstant, RegExpNormalChar] f
|
||||
# 66| [RegExpConstant, RegExpNormalChar] f
|
||||
|
||||
# 53| [RegExpSequence] fo+
|
||||
# 66| [RegExpSequence] fo+
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] f
|
||||
#-----| 1 -> [RegExpPlus] o+
|
||||
|
||||
# 53| [RegExpConstant, RegExpNormalChar] o
|
||||
# 66| [RegExpConstant, RegExpNormalChar] o
|
||||
|
||||
# 53| [RegExpPlus] o+
|
||||
# 66| [RegExpPlus] o+
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] o
|
||||
|
||||
# 56| [RegExpGroup] (a+)
|
||||
# 69| [RegExpGroup] (a+)
|
||||
#-----| 0 -> [RegExpPlus] a+
|
||||
|
||||
# 56| [RegExpSequence] (a+)b+\1
|
||||
# 69| [RegExpSequence] (a+)b+\1
|
||||
#-----| 0 -> [RegExpGroup] (a+)
|
||||
#-----| 1 -> [RegExpPlus] b+
|
||||
#-----| 2 -> [RegExpBackRef] \1
|
||||
|
||||
# 56| [RegExpConstant, RegExpNormalChar] a
|
||||
# 69| [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 56| [RegExpPlus] a+
|
||||
# 69| [RegExpPlus] a+
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 56| [RegExpConstant, RegExpNormalChar] b
|
||||
# 69| [RegExpConstant, RegExpNormalChar] b
|
||||
|
||||
# 56| [RegExpPlus] b+
|
||||
# 69| [RegExpPlus] b+
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] b
|
||||
|
||||
# 56| [RegExpBackRef] \1
|
||||
# 69| [RegExpBackRef] \1
|
||||
|
||||
# 57| [RegExpGroup] (?<qux>q+)
|
||||
# 70| [RegExpGroup] (?<qux>q+)
|
||||
#-----| 0 -> [RegExpPlus] q+
|
||||
|
||||
# 57| [RegExpSequence] (?<qux>q+)\s+\k<qux>+
|
||||
# 70| [RegExpSequence] (?<qux>q+)\s+\k<qux>+
|
||||
#-----| 0 -> [RegExpGroup] (?<qux>q+)
|
||||
#-----| 1 -> [RegExpPlus] \s+
|
||||
#-----| 2 -> [RegExpPlus] \k<qux>+
|
||||
|
||||
# 57| [RegExpConstant, RegExpNormalChar] q
|
||||
# 70| [RegExpConstant, RegExpNormalChar] q
|
||||
|
||||
# 57| [RegExpPlus] q+
|
||||
# 70| [RegExpPlus] q+
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] q
|
||||
|
||||
# 57| [RegExpCharacterClassEscape] \s
|
||||
# 70| [RegExpCharacterClassEscape] \s
|
||||
|
||||
# 57| [RegExpPlus] \s+
|
||||
# 70| [RegExpPlus] \s+
|
||||
#-----| 0 -> [RegExpCharacterClassEscape] \s
|
||||
|
||||
# 57| [RegExpBackRef] \k<qux>
|
||||
# 70| [RegExpBackRef] \k<qux>
|
||||
|
||||
# 57| [RegExpPlus] \k<qux>+
|
||||
# 70| [RegExpPlus] \k<qux>+
|
||||
#-----| 0 -> [RegExpBackRef] \k<qux>
|
||||
|
||||
# 60| [RegExpNamedCharacterProperty] \p{Word}
|
||||
# 73| [RegExpNamedCharacterProperty] \p{Word}
|
||||
|
||||
# 60| [RegExpStar] \p{Word}*
|
||||
# 73| [RegExpStar] \p{Word}*
|
||||
#-----| 0 -> [RegExpNamedCharacterProperty] \p{Word}
|
||||
|
||||
# 61| [RegExpNamedCharacterProperty] \P{Digit}
|
||||
# 74| [RegExpNamedCharacterProperty] \P{Digit}
|
||||
|
||||
# 61| [RegExpPlus] \P{Digit}+
|
||||
# 74| [RegExpPlus] \P{Digit}+
|
||||
#-----| 0 -> [RegExpNamedCharacterProperty] \P{Digit}
|
||||
|
||||
# 62| [RegExpNamedCharacterProperty] \p{^Alnum}
|
||||
# 75| [RegExpNamedCharacterProperty] \p{^Alnum}
|
||||
|
||||
# 62| [RegExpRange] \p{^Alnum}{2,3}
|
||||
# 75| [RegExpRange] \p{^Alnum}{2,3}
|
||||
#-----| 0 -> [RegExpNamedCharacterProperty] \p{^Alnum}
|
||||
|
||||
# 63| [RegExpCharacterClass] [a-f\p{Digit}]
|
||||
# 76| [RegExpCharacterClass] [a-f\p{Digit}]
|
||||
#-----| 0 -> [RegExpCharacterRange] a-f
|
||||
#-----| 1 -> [RegExpNamedCharacterProperty] \p{Digit}
|
||||
|
||||
# 63| [RegExpPlus] [a-f\p{Digit}]+
|
||||
# 76| [RegExpPlus] [a-f\p{Digit}]+
|
||||
#-----| 0 -> [RegExpCharacterClass] [a-f\p{Digit}]
|
||||
|
||||
# 63| [RegExpConstant, RegExpNormalChar] a
|
||||
# 76| [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 63| [RegExpCharacterRange] a-f
|
||||
# 76| [RegExpCharacterRange] a-f
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] f
|
||||
|
||||
# 63| [RegExpConstant, RegExpNormalChar] f
|
||||
# 76| [RegExpConstant, RegExpNormalChar] f
|
||||
|
||||
# 63| [RegExpNamedCharacterProperty] \p{Digit}
|
||||
# 76| [RegExpNamedCharacterProperty] \p{Digit}
|
||||
|
||||
# 66| [RegExpCharacterClass] [[:alpha:]]
|
||||
# 79| [RegExpCharacterClass] [[:alpha:]]
|
||||
#-----| 0 -> [RegExpNamedCharacterProperty] [:alpha:]
|
||||
|
||||
# 66| [RegExpSequence] [[:alpha:]][[:digit:]]
|
||||
# 79| [RegExpSequence] [[:alpha:]][[:digit:]]
|
||||
#-----| 0 -> [RegExpCharacterClass] [[:alpha:]]
|
||||
#-----| 1 -> [RegExpCharacterClass] [[:digit:]]
|
||||
|
||||
# 66| [RegExpNamedCharacterProperty] [:alpha:]
|
||||
# 79| [RegExpNamedCharacterProperty] [:alpha:]
|
||||
|
||||
# 66| [RegExpCharacterClass] [[:digit:]]
|
||||
# 79| [RegExpCharacterClass] [[:digit:]]
|
||||
#-----| 0 -> [RegExpNamedCharacterProperty] [:digit:]
|
||||
|
||||
# 66| [RegExpNamedCharacterProperty] [:digit:]
|
||||
# 79| [RegExpNamedCharacterProperty] [:digit:]
|
||||
|
||||
# 69| [RegExpCharacterClass] [[:alpha:][:digit:]]
|
||||
# 82| [RegExpCharacterClass] [[:alpha:][:digit:]]
|
||||
#-----| 0 -> [RegExpNamedCharacterProperty] [:alpha:]
|
||||
#-----| 1 -> [RegExpNamedCharacterProperty] [:digit:]
|
||||
|
||||
# 69| [RegExpNamedCharacterProperty] [:alpha:]
|
||||
# 82| [RegExpNamedCharacterProperty] [:alpha:]
|
||||
|
||||
# 69| [RegExpNamedCharacterProperty] [:digit:]
|
||||
# 82| [RegExpNamedCharacterProperty] [:digit:]
|
||||
|
||||
# 72| [RegExpCharacterClass] [A-F[:digit:]a-f]
|
||||
# 85| [RegExpCharacterClass] [A-F[:digit:]a-f]
|
||||
#-----| 0 -> [RegExpCharacterRange] A-F
|
||||
#-----| 1 -> [RegExpNamedCharacterProperty] [:digit:]
|
||||
#-----| 2 -> [RegExpCharacterRange] a-f
|
||||
|
||||
# 72| [RegExpConstant, RegExpNormalChar] A
|
||||
# 85| [RegExpConstant, RegExpNormalChar] A
|
||||
|
||||
# 72| [RegExpCharacterRange] A-F
|
||||
# 85| [RegExpCharacterRange] A-F
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] A
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] F
|
||||
|
||||
# 72| [RegExpConstant, RegExpNormalChar] F
|
||||
# 85| [RegExpConstant, RegExpNormalChar] F
|
||||
|
||||
# 72| [RegExpNamedCharacterProperty] [:digit:]
|
||||
# 85| [RegExpNamedCharacterProperty] [:digit:]
|
||||
|
||||
# 72| [RegExpConstant, RegExpNormalChar] a
|
||||
# 85| [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 72| [RegExpCharacterRange] a-f
|
||||
# 85| [RegExpCharacterRange] a-f
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
|
||||
#-----| 1 -> [RegExpConstant, RegExpNormalChar] f
|
||||
|
||||
# 72| [RegExpConstant, RegExpNormalChar] f
|
||||
# 85| [RegExpConstant, RegExpNormalChar] f
|
||||
|
||||
# 75| [RegExpNamedCharacterProperty] [:digit:]
|
||||
# 88| [RegExpNamedCharacterProperty] [:digit:]
|
||||
|
||||
# 79| [RegExpConstant, RegExpNormalChar] abc
|
||||
|
||||
# 82| [RegExpConstant, RegExpEscape] \u{987
|
||||
# 91| [RegExpConstant, RegExpEscape] \u{987
|
||||
|
||||
@@ -2,8 +2,14 @@
|
||||
* @kind graph
|
||||
*/
|
||||
|
||||
import semmle.code.cpp.regex.internal.ParseRegExp
|
||||
import semmle.code.cpp.regex.RegexTreeView
|
||||
|
||||
// Stop gap for missing flow configs
|
||||
class RegExpTest extends RegExp {
|
||||
RegExpTest() { any() }
|
||||
}
|
||||
|
||||
query predicate nodes(RegExpTerm n, string attr, string val) {
|
||||
attr = "semmle.label" and
|
||||
val = "[" + concat(n.getAPrimaryQlClass(), ", ") + "] " + n.toString()
|
||||
|
||||
@@ -1,82 +1,91 @@
|
||||
# Empty
|
||||
//
|
||||
// semmle-extractor-options: -std=c++17
|
||||
|
||||
# Basic sequence
|
||||
/abc/
|
||||
namespace std {
|
||||
template <class CharT>
|
||||
class basic_regex {
|
||||
public:
|
||||
basic_regex(const char *s) {}
|
||||
basic_regex(const char *s, int flags) {}
|
||||
basic_regex &assign(const char *s) { return *this; }
|
||||
};
|
||||
typedef basic_regex<char> regex;
|
||||
} // namespace std
|
||||
|
||||
# Repetition
|
||||
/a*b+c?d/
|
||||
/a{4,8}/
|
||||
/a{,8}/
|
||||
/a{3,}/
|
||||
/a{7}/
|
||||
// Empty
|
||||
std::regex r_empty("");
|
||||
|
||||
# Alternation
|
||||
/foo|bar/
|
||||
// Basic sequence
|
||||
std::regex r_abc("abc");
|
||||
|
||||
# Character classes
|
||||
/[abc]/
|
||||
/[a-fA-F0-9_]/
|
||||
/\A[+-]?\d+/
|
||||
/[\w]+/
|
||||
/\[\][123]/
|
||||
/[^A-Z]/
|
||||
/[]]/ # MRI gives a warning, but accepts this as matching ']'
|
||||
/[^]]/ # MRI gives a warning, but accepts this as matching anything except ']'
|
||||
/[^-]/
|
||||
/[|]/
|
||||
// Repetition
|
||||
std::regex r_rep1("a*b+c?d");
|
||||
std::regex r_rep2("a{4,8}");
|
||||
std::regex r_rep3("a{,8}");
|
||||
std::regex r_rep4("a{3,}");
|
||||
std::regex r_rep5("a{7}");
|
||||
|
||||
# Nested character classes
|
||||
/[[a-f]A-F]/ # BAD - not parsed correctly
|
||||
// Alternation
|
||||
std::regex r_alt("foo|bar");
|
||||
|
||||
# Meta-character classes
|
||||
/.*/
|
||||
/.*/m
|
||||
/\w+\W/
|
||||
/\s\S/
|
||||
/\d\D/
|
||||
/\h\H/
|
||||
/\n\r\t/
|
||||
// Character classes
|
||||
std::regex r_cc1("[abc]");
|
||||
std::regex r_cc2("[a-fA-F0-9_]");
|
||||
std::regex r_cc3("\\A[+-]?\\d+");
|
||||
std::regex r_cc4("[\\w]+");
|
||||
std::regex r_cc5("\\[\\][123]");
|
||||
std::regex r_cc6("[^A-Z]");
|
||||
std::regex r_cc7("[]]"); // MRI gives a warning, but accepts this as matching ']'
|
||||
std::regex r_cc8("[^]]"); // MRI gives a warning, but accepts this as matching anything except ']'
|
||||
std::regex r_cc9("[^-]");
|
||||
std::regex r_cc10("[|]");
|
||||
|
||||
# Anchors
|
||||
/\Gabc/
|
||||
/\b!a\B/
|
||||
// Nested character classes (BAD - not parsed correctly)
|
||||
std::regex r_nested("[[a-f]A-F]");
|
||||
|
||||
# Groups
|
||||
/(foo)*bar/
|
||||
/fo(o|b)ar/
|
||||
/(a|b|cd)e/
|
||||
/(?::+)\w/ # Non-capturing group matching colons
|
||||
// Meta-character classes
|
||||
std::regex r_meta1(".*");
|
||||
std::regex r_meta1m(".*"); // /.*/m mode variant — mode flags are constructor args in C++
|
||||
std::regex r_meta2("\\w+\\W");
|
||||
std::regex r_meta3("\\s\\S");
|
||||
std::regex r_meta4("\\d\\D");
|
||||
std::regex r_meta5("\\h\\H");
|
||||
std::regex r_meta6("\\n\\r\\t");
|
||||
|
||||
# Named groups
|
||||
/(?<id>\w+)/
|
||||
/(?'foo'fo+)/
|
||||
// Anchors
|
||||
std::regex r_anc1("\\Gabc");
|
||||
std::regex r_anc2("\\b!a\\B");
|
||||
|
||||
# Backreferences
|
||||
/(a+)b+\1/
|
||||
/(?<qux>q+)\s+\k<qux>+/
|
||||
// Groups
|
||||
std::regex r_grp1("(foo)*bar");
|
||||
std::regex r_grp2("fo(o|b)ar");
|
||||
std::regex r_grp3("(a|b|cd)e");
|
||||
std::regex r_grp4("(?::+)\\w"); // Non-capturing group matching colons
|
||||
|
||||
# Named character properties using the p-style syntax
|
||||
/\p{Word}*/
|
||||
/\P{Digit}+/
|
||||
/\p{^Alnum}{2,3}/
|
||||
/[a-f\p{Digit}]+/ # Also valid inside character classes
|
||||
// Named groups
|
||||
std::regex r_ng1("(?<id>\\w+)");
|
||||
std::regex r_ng2("(?'foo'fo+)"); // single-quote named-group form
|
||||
|
||||
# Two separate character classes, each containing a single POSIX bracket expression
|
||||
/[[:alpha:]][[:digit:]]/
|
||||
// Backreferences
|
||||
std::regex r_bref1("(a+)b+\\1");
|
||||
std::regex r_bref2("(?<qux>q+)\\s+\\k<qux>+");
|
||||
|
||||
# A single character class containing two POSIX bracket expressions
|
||||
/[[:alpha:][:digit:]]/
|
||||
// Named character properties using the p-style syntax
|
||||
std::regex r_prop1("\\p{Word}*");
|
||||
std::regex r_prop2("\\P{Digit}+");
|
||||
std::regex r_prop3("\\p{^Alnum}{2,3}");
|
||||
std::regex r_prop4("[a-f\\p{Digit}]+"); // Also valid inside character classes
|
||||
|
||||
# A single character class containing two ranges and one POSIX bracket expression
|
||||
/[A-F[:digit:]a-f]/
|
||||
// Two separate character classes, each containing a single POSIX bracket expression
|
||||
std::regex r_posix1("[[:alpha:]][[:digit:]]");
|
||||
|
||||
# *Not* a POSIX bracket expression; just a regular character class.
|
||||
/[:digit:]/
|
||||
// A single character class containing two POSIX bracket expressions
|
||||
std::regex r_posix2("[[:alpha:][:digit:]]");
|
||||
|
||||
# Simple constant interpolation
|
||||
A = "a"
|
||||
/#{A}bc/
|
||||
// A single character class containing two ranges and one POSIX bracket expression
|
||||
std::regex r_posix3("[A-F[:digit:]a-f]");
|
||||
|
||||
# unicode
|
||||
/\u{9879}/
|
||||
// *Not* a POSIX bracket expression; just a regular character class.
|
||||
std::regex r_posix4("[:digit:]");
|
||||
|
||||
// unicode
|
||||
std::regex r_uni("\\u{9879}");
|
||||
|
||||
@@ -1,270 +1,268 @@
|
||||
groupName
|
||||
| regexp.rb:52:2:52:11 | (?<id>\\w+) | id |
|
||||
| regexp.rb:53:2:53:12 | (?'foo'fo+) | foo |
|
||||
| regexp.rb:57:2:57:11 | (?<qux>q+) | qux |
|
||||
| regexp.cpp:65:19:65:28 | (?<id>\\w+) | id |
|
||||
| regexp.cpp:66:19:66:29 | (?'foo'fo+) | foo |
|
||||
| regexp.cpp:70:21:70:30 | (?<qux>q+) | qux |
|
||||
groupNumber
|
||||
| regexp.rb:46:2:46:6 | (foo) | 1 |
|
||||
| regexp.rb:47:4:47:8 | (o\|b) | 1 |
|
||||
| regexp.rb:48:2:48:9 | (a\|b\|cd) | 1 |
|
||||
| regexp.rb:53:2:53:12 | (?'foo'fo+) | 1 |
|
||||
| regexp.rb:56:2:56:5 | (a+) | 1 |
|
||||
| regexp.cpp:59:20:59:24 | (foo) | 1 |
|
||||
| regexp.cpp:60:22:60:26 | (o\|b) | 1 |
|
||||
| regexp.cpp:61:20:61:27 | (a\|b\|cd) | 1 |
|
||||
| regexp.cpp:66:19:66:29 | (?'foo'fo+) | 1 |
|
||||
| regexp.cpp:69:21:69:24 | (a+) | 1 |
|
||||
term
|
||||
| regexp.rb:5:2:5:4 | abc | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:8:2:8:2 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:8:2:8:3 | a* | RegExpStar |
|
||||
| regexp.rb:8:2:8:8 | a*b+c?d | RegExpSequence |
|
||||
| regexp.rb:8:4:8:4 | b | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:8:4:8:5 | b+ | RegExpPlus |
|
||||
| regexp.rb:8:6:8:6 | c | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:8:6:8:7 | c? | RegExpOpt |
|
||||
| regexp.rb:8:8:8:8 | d | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:9:2:9:2 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:9:2:9:7 | a{4,8} | RegExpRange |
|
||||
| regexp.rb:10:2:10:2 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:10:2:10:6 | a{,8} | RegExpRange |
|
||||
| regexp.rb:11:2:11:2 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:11:2:11:6 | a{3,} | InfiniteRepetitionQuantifier,RegExpRange |
|
||||
| regexp.rb:12:2:12:2 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:12:2:12:5 | a{7} | RegExpRange |
|
||||
| regexp.rb:15:2:15:4 | foo | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:15:2:15:8 | foo\|bar | RegExpAlt |
|
||||
| regexp.rb:15:6:15:8 | bar | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:18:2:18:6 | [abc] | RegExpCharacterClass |
|
||||
| regexp.rb:18:3:18:3 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:18:4:18:4 | b | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:18:5:18:5 | c | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:19:2:19:13 | [a-fA-F0-9_] | RegExpCharacterClass |
|
||||
| regexp.rb:19:3:19:3 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:19:3:19:5 | a-f | RegExpCharacterRange |
|
||||
| regexp.rb:19:5:19:5 | f | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:19:6:19:6 | A | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:19:6:19:8 | A-F | RegExpCharacterRange |
|
||||
| regexp.rb:19:8:19:8 | F | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:19:9:19:9 | 0 | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:19:9:19:11 | 0-9 | RegExpCharacterRange |
|
||||
| regexp.rb:19:11:19:11 | 9 | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:19:12:19:12 | _ | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:20:2:20:3 | \\A | RegExpCaret |
|
||||
| regexp.rb:20:2:20:11 | \\A[+-]?\\d+ | RegExpSequence |
|
||||
| regexp.rb:20:4:20:7 | [+-] | RegExpCharacterClass |
|
||||
| regexp.rb:20:4:20:8 | [+-]? | RegExpOpt |
|
||||
| regexp.rb:20:5:20:5 | + | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:20:6:20:6 | - | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:20:9:20:10 | \\d | RegExpCharacterClassEscape |
|
||||
| regexp.rb:20:9:20:11 | \\d+ | RegExpPlus |
|
||||
| regexp.rb:21:2:21:5 | [\\w] | RegExpCharacterClass |
|
||||
| regexp.rb:21:2:21:6 | [\\w]+ | RegExpPlus |
|
||||
| regexp.rb:21:3:21:4 | \\w | RegExpCharacterClassEscape |
|
||||
| regexp.rb:22:2:22:3 | \\[ | RegExpConstant,RegExpEscape |
|
||||
| regexp.rb:22:2:22:10 | \\[\\][123] | RegExpSequence |
|
||||
| regexp.rb:22:4:22:5 | \\] | RegExpConstant,RegExpEscape |
|
||||
| regexp.rb:22:6:22:10 | [123] | RegExpCharacterClass |
|
||||
| regexp.rb:22:7:22:7 | 1 | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:22:8:22:8 | 2 | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:22:9:22:9 | 3 | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:23:2:23:7 | [^A-Z] | RegExpCharacterClass |
|
||||
| regexp.rb:23:4:23:4 | A | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:23:4:23:6 | A-Z | RegExpCharacterRange |
|
||||
| regexp.rb:23:6:23:6 | Z | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:24:2:24:4 | []] | RegExpCharacterClass |
|
||||
| regexp.rb:24:3:24:3 | ] | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:25:2:25:5 | [^]] | RegExpCharacterClass |
|
||||
| regexp.rb:25:4:25:4 | ] | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:26:2:26:5 | [^-] | RegExpCharacterClass |
|
||||
| regexp.rb:26:4:26:4 | - | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:27:2:27:4 | [\|] | RegExpCharacterClass |
|
||||
| regexp.rb:27:3:27:3 | \| | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:30:2:30:7 | [[a-f] | RegExpCharacterClass |
|
||||
| regexp.rb:30:2:30:11 | [[a-f]A-F] | RegExpSequence |
|
||||
| regexp.rb:30:3:30:3 | [ | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:30:4:30:4 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:30:4:30:6 | a-f | RegExpCharacterRange |
|
||||
| regexp.rb:30:6:30:6 | f | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:30:8:30:11 | A-F] | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:33:2:33:2 | . | RegExpDot |
|
||||
| regexp.rb:33:2:33:3 | .* | RegExpStar |
|
||||
| regexp.rb:34:2:34:2 | . | RegExpDot |
|
||||
| regexp.rb:34:2:34:3 | .* | RegExpStar |
|
||||
| regexp.rb:35:2:35:3 | \\w | RegExpCharacterClassEscape |
|
||||
| regexp.rb:35:2:35:4 | \\w+ | RegExpPlus |
|
||||
| regexp.rb:35:2:35:6 | \\w+\\W | RegExpSequence |
|
||||
| regexp.rb:35:5:35:6 | \\W | RegExpCharacterClassEscape |
|
||||
| regexp.rb:36:2:36:3 | \\s | RegExpCharacterClassEscape |
|
||||
| regexp.rb:36:2:36:5 | \\s\\S | RegExpSequence |
|
||||
| regexp.rb:36:4:36:5 | \\S | RegExpCharacterClassEscape |
|
||||
| regexp.rb:37:2:37:3 | \\d | RegExpCharacterClassEscape |
|
||||
| regexp.rb:37:2:37:5 | \\d\\D | RegExpSequence |
|
||||
| regexp.rb:37:4:37:5 | \\D | RegExpCharacterClassEscape |
|
||||
| regexp.rb:38:2:38:3 | \\h | RegExpCharacterClassEscape |
|
||||
| regexp.rb:38:2:38:5 | \\h\\H | RegExpSequence |
|
||||
| regexp.rb:38:4:38:5 | \\H | RegExpCharacterClassEscape |
|
||||
| regexp.rb:39:2:39:3 | \\n | RegExpConstant,RegExpEscape |
|
||||
| regexp.rb:39:2:39:7 | \\n\\r\\t | RegExpSequence |
|
||||
| regexp.rb:39:4:39:5 | \\r | RegExpConstant,RegExpEscape |
|
||||
| regexp.rb:39:6:39:7 | \\t | RegExpConstant,RegExpEscape |
|
||||
| regexp.rb:42:2:42:3 | \\G | RegExpSpecialChar |
|
||||
| regexp.rb:42:2:42:6 | \\Gabc | RegExpSequence |
|
||||
| regexp.rb:42:4:42:6 | abc | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:43:2:43:3 | \\b | RegExpSpecialChar |
|
||||
| regexp.rb:43:2:43:7 | \\b!a\\B | RegExpSequence |
|
||||
| regexp.rb:43:4:43:5 | !a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:43:6:43:7 | \\B | RegExpNonWordBoundary |
|
||||
| regexp.rb:46:2:46:6 | (foo) | RegExpGroup |
|
||||
| regexp.rb:46:2:46:7 | (foo)* | RegExpStar |
|
||||
| regexp.rb:46:2:46:10 | (foo)*bar | RegExpSequence |
|
||||
| regexp.rb:46:3:46:5 | foo | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:46:8:46:10 | bar | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:47:2:47:3 | fo | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:47:2:47:10 | fo(o\|b)ar | RegExpSequence |
|
||||
| regexp.rb:47:4:47:8 | (o\|b) | RegExpGroup |
|
||||
| regexp.rb:47:5:47:5 | o | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:47:5:47:7 | o\|b | RegExpAlt |
|
||||
| regexp.rb:47:7:47:7 | b | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:47:9:47:10 | ar | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:48:2:48:9 | (a\|b\|cd) | RegExpGroup |
|
||||
| regexp.rb:48:2:48:10 | (a\|b\|cd)e | RegExpSequence |
|
||||
| regexp.rb:48:3:48:3 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:48:3:48:8 | a\|b\|cd | RegExpAlt |
|
||||
| regexp.rb:48:5:48:5 | b | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:48:7:48:8 | cd | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:48:10:48:10 | e | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:49:2:49:7 | (?::+) | RegExpGroup |
|
||||
| regexp.rb:49:2:49:9 | (?::+)\\w | RegExpSequence |
|
||||
| regexp.rb:49:5:49:5 | : | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:49:5:49:6 | :+ | RegExpPlus |
|
||||
| regexp.rb:49:8:49:9 | \\w | RegExpCharacterClassEscape |
|
||||
| regexp.rb:52:2:52:11 | (?<id>\\w+) | RegExpGroup |
|
||||
| regexp.rb:52:8:52:9 | \\w | RegExpCharacterClassEscape |
|
||||
| regexp.rb:52:8:52:10 | \\w+ | RegExpPlus |
|
||||
| regexp.rb:53:2:53:12 | (?'foo'fo+) | RegExpGroup |
|
||||
| regexp.rb:53:9:53:9 | f | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:53:9:53:11 | fo+ | RegExpSequence |
|
||||
| regexp.rb:53:10:53:10 | o | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:53:10:53:11 | o+ | RegExpPlus |
|
||||
| regexp.rb:56:2:56:5 | (a+) | RegExpGroup |
|
||||
| regexp.rb:56:2:56:9 | (a+)b+\\1 | RegExpSequence |
|
||||
| regexp.rb:56:3:56:3 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:56:3:56:4 | a+ | RegExpPlus |
|
||||
| regexp.rb:56:6:56:6 | b | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:56:6:56:7 | b+ | RegExpPlus |
|
||||
| regexp.rb:56:8:56:9 | \\1 | RegExpBackRef |
|
||||
| regexp.rb:57:2:57:11 | (?<qux>q+) | RegExpGroup |
|
||||
| regexp.rb:57:2:57:22 | (?<qux>q+)\\s+\\k<qux>+ | RegExpSequence |
|
||||
| regexp.rb:57:9:57:9 | q | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:57:9:57:10 | q+ | RegExpPlus |
|
||||
| regexp.rb:57:12:57:13 | \\s | RegExpCharacterClassEscape |
|
||||
| regexp.rb:57:12:57:14 | \\s+ | RegExpPlus |
|
||||
| regexp.rb:57:15:57:21 | \\k<qux> | RegExpBackRef |
|
||||
| regexp.rb:57:15:57:22 | \\k<qux>+ | RegExpPlus |
|
||||
| regexp.rb:60:2:60:9 | \\p{Word} | RegExpNamedCharacterProperty |
|
||||
| regexp.rb:60:2:60:10 | \\p{Word}* | RegExpStar |
|
||||
| regexp.rb:61:2:61:10 | \\P{Digit} | RegExpNamedCharacterProperty |
|
||||
| regexp.rb:61:2:61:11 | \\P{Digit}+ | RegExpPlus |
|
||||
| regexp.rb:62:2:62:11 | \\p{^Alnum} | RegExpNamedCharacterProperty |
|
||||
| regexp.rb:62:2:62:16 | \\p{^Alnum}{2,3} | RegExpRange |
|
||||
| regexp.rb:63:2:63:15 | [a-f\\p{Digit}] | RegExpCharacterClass |
|
||||
| regexp.rb:63:2:63:16 | [a-f\\p{Digit}]+ | RegExpPlus |
|
||||
| regexp.rb:63:3:63:3 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:63:3:63:5 | a-f | RegExpCharacterRange |
|
||||
| regexp.rb:63:5:63:5 | f | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:63:6:63:14 | \\p{Digit} | RegExpNamedCharacterProperty |
|
||||
| regexp.rb:66:2:66:12 | [[:alpha:]] | RegExpCharacterClass |
|
||||
| regexp.rb:66:2:66:23 | [[:alpha:]][[:digit:]] | RegExpSequence |
|
||||
| regexp.rb:66:3:66:11 | [:alpha:] | RegExpNamedCharacterProperty |
|
||||
| regexp.rb:66:13:66:23 | [[:digit:]] | RegExpCharacterClass |
|
||||
| regexp.rb:66:14:66:22 | [:digit:] | RegExpNamedCharacterProperty |
|
||||
| regexp.rb:69:2:69:21 | [[:alpha:][:digit:]] | RegExpCharacterClass |
|
||||
| regexp.rb:69:3:69:11 | [:alpha:] | RegExpNamedCharacterProperty |
|
||||
| regexp.rb:69:12:69:20 | [:digit:] | RegExpNamedCharacterProperty |
|
||||
| regexp.rb:72:2:72:18 | [A-F[:digit:]a-f] | RegExpCharacterClass |
|
||||
| regexp.rb:72:3:72:3 | A | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:72:3:72:5 | A-F | RegExpCharacterRange |
|
||||
| regexp.rb:72:5:72:5 | F | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:72:6:72:14 | [:digit:] | RegExpNamedCharacterProperty |
|
||||
| regexp.rb:72:15:72:15 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:72:15:72:17 | a-f | RegExpCharacterRange |
|
||||
| regexp.rb:72:17:72:17 | f | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:75:2:75:10 | [:digit:] | RegExpNamedCharacterProperty |
|
||||
| regexp.rb:79:2:79:4 | abc | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.rb:82:2:82:7 | \\u{987 | RegExpConstant,RegExpEscape |
|
||||
| regexp.cpp:18:19:18:21 | abc | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:21:20:21:20 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:21:20:21:21 | a* | RegExpStar |
|
||||
| regexp.cpp:21:20:21:26 | a*b+c?d | RegExpSequence |
|
||||
| regexp.cpp:21:22:21:22 | b | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:21:22:21:23 | b+ | RegExpPlus |
|
||||
| regexp.cpp:21:24:21:24 | c | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:21:24:21:25 | c? | RegExpOpt |
|
||||
| regexp.cpp:21:26:21:26 | d | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:22:20:22:20 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:22:20:22:25 | a{4,8} | RegExpRange |
|
||||
| regexp.cpp:23:20:23:20 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:23:20:23:24 | a{,8} | RegExpRange |
|
||||
| regexp.cpp:24:20:24:20 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:24:20:24:24 | a{3,} | InfiniteRepetitionQuantifier,RegExpRange |
|
||||
| regexp.cpp:25:20:25:20 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:25:20:25:23 | a{7} | RegExpRange |
|
||||
| regexp.cpp:28:19:28:21 | foo | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:28:19:28:25 | foo\|bar | RegExpAlt |
|
||||
| regexp.cpp:28:23:28:25 | bar | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:31:19:31:23 | [abc] | RegExpCharacterClass |
|
||||
| regexp.cpp:31:20:31:20 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:31:21:31:21 | b | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:31:22:31:22 | c | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:32:19:32:30 | [a-fA-F0-9_] | RegExpCharacterClass |
|
||||
| regexp.cpp:32:20:32:20 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:32:20:32:22 | a-f | RegExpCharacterRange |
|
||||
| regexp.cpp:32:22:32:22 | f | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:32:23:32:23 | A | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:32:23:32:25 | A-F | RegExpCharacterRange |
|
||||
| regexp.cpp:32:25:32:25 | F | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:32:26:32:26 | 0 | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:32:26:32:28 | 0-9 | RegExpCharacterRange |
|
||||
| regexp.cpp:32:28:32:28 | 9 | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:32:29:32:29 | _ | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:33:19:33:20 | \\A | RegExpCaret |
|
||||
| regexp.cpp:33:19:33:28 | \\A[+-]?\\d+ | RegExpSequence |
|
||||
| regexp.cpp:33:21:33:24 | [+-] | RegExpCharacterClass |
|
||||
| regexp.cpp:33:21:33:25 | [+-]? | RegExpOpt |
|
||||
| regexp.cpp:33:22:33:22 | + | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:33:23:33:23 | - | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:33:26:33:27 | \\d | RegExpCharacterClassEscape |
|
||||
| regexp.cpp:33:26:33:28 | \\d+ | RegExpPlus |
|
||||
| regexp.cpp:34:19:34:22 | [\\w] | RegExpCharacterClass |
|
||||
| regexp.cpp:34:19:34:23 | [\\w]+ | RegExpPlus |
|
||||
| regexp.cpp:34:20:34:21 | \\w | RegExpCharacterClassEscape |
|
||||
| regexp.cpp:35:19:35:20 | \\[ | RegExpConstant,RegExpEscape |
|
||||
| regexp.cpp:35:19:35:27 | \\[\\][123] | RegExpSequence |
|
||||
| regexp.cpp:35:21:35:22 | \\] | RegExpConstant,RegExpEscape |
|
||||
| regexp.cpp:35:23:35:27 | [123] | RegExpCharacterClass |
|
||||
| regexp.cpp:35:24:35:24 | 1 | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:35:25:35:25 | 2 | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:35:26:35:26 | 3 | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:36:19:36:24 | [^A-Z] | RegExpCharacterClass |
|
||||
| regexp.cpp:36:21:36:21 | A | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:36:21:36:23 | A-Z | RegExpCharacterRange |
|
||||
| regexp.cpp:36:23:36:23 | Z | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:37:19:37:21 | []] | RegExpCharacterClass |
|
||||
| regexp.cpp:37:20:37:20 | ] | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:38:19:38:22 | [^]] | RegExpCharacterClass |
|
||||
| regexp.cpp:38:21:38:21 | ] | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:39:19:39:22 | [^-] | RegExpCharacterClass |
|
||||
| regexp.cpp:39:21:39:21 | - | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:40:20:40:22 | [\|] | RegExpCharacterClass |
|
||||
| regexp.cpp:40:21:40:21 | \| | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:43:22:43:27 | [[a-f] | RegExpCharacterClass |
|
||||
| regexp.cpp:43:22:43:31 | [[a-f]A-F] | RegExpSequence |
|
||||
| regexp.cpp:43:23:43:23 | [ | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:43:24:43:24 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:43:24:43:26 | a-f | RegExpCharacterRange |
|
||||
| regexp.cpp:43:26:43:26 | f | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:43:28:43:31 | A-F] | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:46:21:46:21 | . | RegExpDot |
|
||||
| regexp.cpp:46:21:46:22 | .* | RegExpStar |
|
||||
| regexp.cpp:47:22:47:22 | . | RegExpDot |
|
||||
| regexp.cpp:47:22:47:23 | .* | RegExpStar |
|
||||
| regexp.cpp:48:21:48:22 | \\w | RegExpCharacterClassEscape |
|
||||
| regexp.cpp:48:21:48:23 | \\w+ | RegExpPlus |
|
||||
| regexp.cpp:48:21:48:25 | \\w+\\W | RegExpSequence |
|
||||
| regexp.cpp:48:24:48:25 | \\W | RegExpCharacterClassEscape |
|
||||
| regexp.cpp:49:21:49:22 | \\s | RegExpCharacterClassEscape |
|
||||
| regexp.cpp:49:21:49:24 | \\s\\S | RegExpSequence |
|
||||
| regexp.cpp:49:23:49:24 | \\S | RegExpCharacterClassEscape |
|
||||
| regexp.cpp:50:21:50:22 | \\d | RegExpCharacterClassEscape |
|
||||
| regexp.cpp:50:21:50:24 | \\d\\D | RegExpSequence |
|
||||
| regexp.cpp:50:23:50:24 | \\D | RegExpCharacterClassEscape |
|
||||
| regexp.cpp:51:21:51:22 | \\h | RegExpCharacterClassEscape |
|
||||
| regexp.cpp:51:21:51:24 | \\h\\H | RegExpSequence |
|
||||
| regexp.cpp:51:23:51:24 | \\H | RegExpCharacterClassEscape |
|
||||
| regexp.cpp:52:21:52:22 | \\n | RegExpConstant,RegExpEscape |
|
||||
| regexp.cpp:52:21:52:26 | \\n\\r\\t | RegExpSequence |
|
||||
| regexp.cpp:52:23:52:24 | \\r | RegExpConstant,RegExpEscape |
|
||||
| regexp.cpp:52:25:52:26 | \\t | RegExpConstant,RegExpEscape |
|
||||
| regexp.cpp:55:20:55:21 | \\G | RegExpSpecialChar |
|
||||
| regexp.cpp:55:20:55:24 | \\Gabc | RegExpSequence |
|
||||
| regexp.cpp:55:22:55:24 | abc | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:56:20:56:21 | \\b | RegExpSpecialChar |
|
||||
| regexp.cpp:56:20:56:25 | \\b!a\\B | RegExpSequence |
|
||||
| regexp.cpp:56:22:56:23 | !a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:56:24:56:25 | \\B | RegExpNonWordBoundary |
|
||||
| regexp.cpp:59:20:59:24 | (foo) | RegExpGroup |
|
||||
| regexp.cpp:59:20:59:25 | (foo)* | RegExpStar |
|
||||
| regexp.cpp:59:20:59:28 | (foo)*bar | RegExpSequence |
|
||||
| regexp.cpp:59:21:59:23 | foo | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:59:26:59:28 | bar | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:60:20:60:21 | fo | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:60:20:60:28 | fo(o\|b)ar | RegExpSequence |
|
||||
| regexp.cpp:60:22:60:26 | (o\|b) | RegExpGroup |
|
||||
| regexp.cpp:60:23:60:23 | o | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:60:23:60:25 | o\|b | RegExpAlt |
|
||||
| regexp.cpp:60:25:60:25 | b | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:60:27:60:28 | ar | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:61:20:61:27 | (a\|b\|cd) | RegExpGroup |
|
||||
| regexp.cpp:61:20:61:28 | (a\|b\|cd)e | RegExpSequence |
|
||||
| regexp.cpp:61:21:61:21 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:61:21:61:26 | a\|b\|cd | RegExpAlt |
|
||||
| regexp.cpp:61:23:61:23 | b | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:61:25:61:26 | cd | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:61:28:61:28 | e | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:62:20:62:25 | (?::+) | RegExpGroup |
|
||||
| regexp.cpp:62:20:62:27 | (?::+)\\w | RegExpSequence |
|
||||
| regexp.cpp:62:23:62:23 | : | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:62:23:62:24 | :+ | RegExpPlus |
|
||||
| regexp.cpp:62:26:62:27 | \\w | RegExpCharacterClassEscape |
|
||||
| regexp.cpp:65:19:65:28 | (?<id>\\w+) | RegExpGroup |
|
||||
| regexp.cpp:65:25:65:26 | \\w | RegExpCharacterClassEscape |
|
||||
| regexp.cpp:65:25:65:27 | \\w+ | RegExpPlus |
|
||||
| regexp.cpp:66:19:66:29 | (?'foo'fo+) | RegExpGroup |
|
||||
| regexp.cpp:66:26:66:26 | f | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:66:26:66:28 | fo+ | RegExpSequence |
|
||||
| regexp.cpp:66:27:66:27 | o | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:66:27:66:28 | o+ | RegExpPlus |
|
||||
| regexp.cpp:69:21:69:24 | (a+) | RegExpGroup |
|
||||
| regexp.cpp:69:21:69:28 | (a+)b+\\1 | RegExpSequence |
|
||||
| regexp.cpp:69:22:69:22 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:69:22:69:23 | a+ | RegExpPlus |
|
||||
| regexp.cpp:69:25:69:25 | b | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:69:25:69:26 | b+ | RegExpPlus |
|
||||
| regexp.cpp:69:27:69:28 | \\1 | RegExpBackRef |
|
||||
| regexp.cpp:70:21:70:30 | (?<qux>q+) | RegExpGroup |
|
||||
| regexp.cpp:70:21:70:41 | (?<qux>q+)\\s+\\k<qux>+ | RegExpSequence |
|
||||
| regexp.cpp:70:28:70:28 | q | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:70:28:70:29 | q+ | RegExpPlus |
|
||||
| regexp.cpp:70:31:70:32 | \\s | RegExpCharacterClassEscape |
|
||||
| regexp.cpp:70:31:70:33 | \\s+ | RegExpPlus |
|
||||
| regexp.cpp:70:34:70:40 | \\k<qux> | RegExpBackRef |
|
||||
| regexp.cpp:70:34:70:41 | \\k<qux>+ | RegExpPlus |
|
||||
| regexp.cpp:73:21:73:28 | \\p{Word} | RegExpNamedCharacterProperty |
|
||||
| regexp.cpp:73:21:73:29 | \\p{Word}* | RegExpStar |
|
||||
| regexp.cpp:74:21:74:29 | \\P{Digit} | RegExpNamedCharacterProperty |
|
||||
| regexp.cpp:74:21:74:30 | \\P{Digit}+ | RegExpPlus |
|
||||
| regexp.cpp:75:21:75:30 | \\p{^Alnum} | RegExpNamedCharacterProperty |
|
||||
| regexp.cpp:75:21:75:35 | \\p{^Alnum}{2,3} | RegExpRange |
|
||||
| regexp.cpp:76:21:76:34 | [a-f\\p{Digit}] | RegExpCharacterClass |
|
||||
| regexp.cpp:76:21:76:35 | [a-f\\p{Digit}]+ | RegExpPlus |
|
||||
| regexp.cpp:76:22:76:22 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:76:22:76:24 | a-f | RegExpCharacterRange |
|
||||
| regexp.cpp:76:24:76:24 | f | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:76:25:76:33 | \\p{Digit} | RegExpNamedCharacterProperty |
|
||||
| regexp.cpp:79:22:79:32 | [[:alpha:]] | RegExpCharacterClass |
|
||||
| regexp.cpp:79:22:79:43 | [[:alpha:]][[:digit:]] | RegExpSequence |
|
||||
| regexp.cpp:79:23:79:31 | [:alpha:] | RegExpNamedCharacterProperty |
|
||||
| regexp.cpp:79:33:79:43 | [[:digit:]] | RegExpCharacterClass |
|
||||
| regexp.cpp:79:34:79:42 | [:digit:] | RegExpNamedCharacterProperty |
|
||||
| regexp.cpp:82:22:82:41 | [[:alpha:][:digit:]] | RegExpCharacterClass |
|
||||
| regexp.cpp:82:23:82:31 | [:alpha:] | RegExpNamedCharacterProperty |
|
||||
| regexp.cpp:82:32:82:40 | [:digit:] | RegExpNamedCharacterProperty |
|
||||
| regexp.cpp:85:22:85:38 | [A-F[:digit:]a-f] | RegExpCharacterClass |
|
||||
| regexp.cpp:85:23:85:23 | A | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:85:23:85:25 | A-F | RegExpCharacterRange |
|
||||
| regexp.cpp:85:25:85:25 | F | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:85:26:85:34 | [:digit:] | RegExpNamedCharacterProperty |
|
||||
| regexp.cpp:85:35:85:35 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:85:35:85:37 | a-f | RegExpCharacterRange |
|
||||
| regexp.cpp:85:37:85:37 | f | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:88:22:88:30 | [:digit:] | RegExpNamedCharacterProperty |
|
||||
| regexp.cpp:91:19:91:24 | \\u{987 | RegExpConstant,RegExpEscape |
|
||||
regExpNormalCharValue
|
||||
| regexp.rb:5:2:5:4 | abc | abc |
|
||||
| regexp.rb:8:2:8:2 | a | a |
|
||||
| regexp.rb:8:4:8:4 | b | b |
|
||||
| regexp.rb:8:6:8:6 | c | c |
|
||||
| regexp.rb:8:8:8:8 | d | d |
|
||||
| regexp.rb:9:2:9:2 | a | a |
|
||||
| regexp.rb:10:2:10:2 | a | a |
|
||||
| regexp.rb:11:2:11:2 | a | a |
|
||||
| regexp.rb:12:2:12:2 | a | a |
|
||||
| regexp.rb:15:2:15:4 | foo | foo |
|
||||
| regexp.rb:15:6:15:8 | bar | bar |
|
||||
| regexp.rb:18:3:18:3 | a | a |
|
||||
| regexp.rb:18:4:18:4 | b | b |
|
||||
| regexp.rb:18:5:18:5 | c | c |
|
||||
| regexp.rb:19:3:19:3 | a | a |
|
||||
| regexp.rb:19:5:19:5 | f | f |
|
||||
| regexp.rb:19:6:19:6 | A | A |
|
||||
| regexp.rb:19:8:19:8 | F | F |
|
||||
| regexp.rb:19:9:19:9 | 0 | 0 |
|
||||
| regexp.rb:19:11:19:11 | 9 | 9 |
|
||||
| regexp.rb:19:12:19:12 | _ | _ |
|
||||
| regexp.rb:20:5:20:5 | + | + |
|
||||
| regexp.rb:20:6:20:6 | - | - |
|
||||
| regexp.rb:20:9:20:10 | \\d | d |
|
||||
| regexp.rb:21:3:21:4 | \\w | w |
|
||||
| regexp.rb:22:2:22:3 | \\[ | [ |
|
||||
| regexp.rb:22:4:22:5 | \\] | ] |
|
||||
| regexp.rb:22:7:22:7 | 1 | 1 |
|
||||
| regexp.rb:22:8:22:8 | 2 | 2 |
|
||||
| regexp.rb:22:9:22:9 | 3 | 3 |
|
||||
| regexp.rb:23:4:23:4 | A | A |
|
||||
| regexp.rb:23:6:23:6 | Z | Z |
|
||||
| regexp.rb:24:3:24:3 | ] | ] |
|
||||
| regexp.rb:25:4:25:4 | ] | ] |
|
||||
| regexp.rb:26:4:26:4 | - | - |
|
||||
| regexp.rb:27:3:27:3 | \| | \| |
|
||||
| regexp.rb:30:3:30:3 | [ | [ |
|
||||
| regexp.rb:30:4:30:4 | a | a |
|
||||
| regexp.rb:30:6:30:6 | f | f |
|
||||
| regexp.rb:30:8:30:11 | A-F] | A-F] |
|
||||
| regexp.rb:35:2:35:3 | \\w | w |
|
||||
| regexp.rb:35:5:35:6 | \\W | W |
|
||||
| regexp.rb:36:2:36:3 | \\s | s |
|
||||
| regexp.rb:36:4:36:5 | \\S | S |
|
||||
| regexp.rb:37:2:37:3 | \\d | d |
|
||||
| regexp.rb:37:4:37:5 | \\D | D |
|
||||
| regexp.rb:38:2:38:3 | \\h | h |
|
||||
| regexp.rb:38:4:38:5 | \\H | H |
|
||||
| regexp.rb:39:2:39:3 | \\n | \n |
|
||||
| regexp.rb:39:4:39:5 | \\r | \r |
|
||||
| regexp.rb:39:6:39:7 | \\t | \t |
|
||||
| regexp.rb:42:4:42:6 | abc | abc |
|
||||
| regexp.rb:43:4:43:5 | !a | !a |
|
||||
| regexp.rb:46:3:46:5 | foo | foo |
|
||||
| regexp.rb:46:8:46:10 | bar | bar |
|
||||
| regexp.rb:47:2:47:3 | fo | fo |
|
||||
| regexp.rb:47:5:47:5 | o | o |
|
||||
| regexp.rb:47:7:47:7 | b | b |
|
||||
| regexp.rb:47:9:47:10 | ar | ar |
|
||||
| regexp.rb:48:3:48:3 | a | a |
|
||||
| regexp.rb:48:5:48:5 | b | b |
|
||||
| regexp.rb:48:7:48:8 | cd | cd |
|
||||
| regexp.rb:48:10:48:10 | e | e |
|
||||
| regexp.rb:49:5:49:5 | : | : |
|
||||
| regexp.rb:49:8:49:9 | \\w | w |
|
||||
| regexp.rb:52:8:52:9 | \\w | w |
|
||||
| regexp.rb:53:9:53:9 | f | f |
|
||||
| regexp.rb:53:10:53:10 | o | o |
|
||||
| regexp.rb:56:3:56:3 | a | a |
|
||||
| regexp.rb:56:6:56:6 | b | b |
|
||||
| regexp.rb:57:9:57:9 | q | q |
|
||||
| regexp.rb:57:12:57:13 | \\s | s |
|
||||
| regexp.rb:63:3:63:3 | a | a |
|
||||
| regexp.rb:63:5:63:5 | f | f |
|
||||
| regexp.rb:72:3:72:3 | A | A |
|
||||
| regexp.rb:72:5:72:5 | F | F |
|
||||
| regexp.rb:72:15:72:15 | a | a |
|
||||
| regexp.rb:72:17:72:17 | f | f |
|
||||
| regexp.rb:79:2:79:4 | abc | abc |
|
||||
| regexp.rb:82:2:82:7 | \\u{987 | \u0987 |
|
||||
| regexp.cpp:18:19:18:21 | abc | abc |
|
||||
| regexp.cpp:21:20:21:20 | a | a |
|
||||
| regexp.cpp:21:22:21:22 | b | b |
|
||||
| regexp.cpp:21:24:21:24 | c | c |
|
||||
| regexp.cpp:21:26:21:26 | d | d |
|
||||
| regexp.cpp:22:20:22:20 | a | a |
|
||||
| regexp.cpp:23:20:23:20 | a | a |
|
||||
| regexp.cpp:24:20:24:20 | a | a |
|
||||
| regexp.cpp:25:20:25:20 | a | a |
|
||||
| regexp.cpp:28:19:28:21 | foo | foo |
|
||||
| regexp.cpp:28:23:28:25 | bar | bar |
|
||||
| regexp.cpp:31:20:31:20 | a | a |
|
||||
| regexp.cpp:31:21:31:21 | b | b |
|
||||
| regexp.cpp:31:22:31:22 | c | c |
|
||||
| regexp.cpp:32:20:32:20 | a | a |
|
||||
| regexp.cpp:32:22:32:22 | f | f |
|
||||
| regexp.cpp:32:23:32:23 | A | A |
|
||||
| regexp.cpp:32:25:32:25 | F | F |
|
||||
| regexp.cpp:32:26:32:26 | 0 | 0 |
|
||||
| regexp.cpp:32:28:32:28 | 9 | 9 |
|
||||
| regexp.cpp:32:29:32:29 | _ | _ |
|
||||
| regexp.cpp:33:22:33:22 | + | + |
|
||||
| regexp.cpp:33:23:33:23 | - | - |
|
||||
| regexp.cpp:33:26:33:27 | \\d | d |
|
||||
| regexp.cpp:34:20:34:21 | \\w | w |
|
||||
| regexp.cpp:35:19:35:20 | \\[ | [ |
|
||||
| regexp.cpp:35:21:35:22 | \\] | ] |
|
||||
| regexp.cpp:35:24:35:24 | 1 | 1 |
|
||||
| regexp.cpp:35:25:35:25 | 2 | 2 |
|
||||
| regexp.cpp:35:26:35:26 | 3 | 3 |
|
||||
| regexp.cpp:36:21:36:21 | A | A |
|
||||
| regexp.cpp:36:23:36:23 | Z | Z |
|
||||
| regexp.cpp:37:20:37:20 | ] | ] |
|
||||
| regexp.cpp:38:21:38:21 | ] | ] |
|
||||
| regexp.cpp:39:21:39:21 | - | - |
|
||||
| regexp.cpp:40:21:40:21 | \| | \| |
|
||||
| regexp.cpp:43:23:43:23 | [ | [ |
|
||||
| regexp.cpp:43:24:43:24 | a | a |
|
||||
| regexp.cpp:43:26:43:26 | f | f |
|
||||
| regexp.cpp:43:28:43:31 | A-F] | A-F] |
|
||||
| regexp.cpp:48:21:48:22 | \\w | w |
|
||||
| regexp.cpp:48:24:48:25 | \\W | W |
|
||||
| regexp.cpp:49:21:49:22 | \\s | s |
|
||||
| regexp.cpp:49:23:49:24 | \\S | S |
|
||||
| regexp.cpp:50:21:50:22 | \\d | d |
|
||||
| regexp.cpp:50:23:50:24 | \\D | D |
|
||||
| regexp.cpp:51:21:51:22 | \\h | h |
|
||||
| regexp.cpp:51:23:51:24 | \\H | H |
|
||||
| regexp.cpp:52:21:52:22 | \\n | \n |
|
||||
| regexp.cpp:52:23:52:24 | \\r | \r |
|
||||
| regexp.cpp:52:25:52:26 | \\t | \t |
|
||||
| regexp.cpp:55:22:55:24 | abc | abc |
|
||||
| regexp.cpp:56:22:56:23 | !a | !a |
|
||||
| regexp.cpp:59:21:59:23 | foo | foo |
|
||||
| regexp.cpp:59:26:59:28 | bar | bar |
|
||||
| regexp.cpp:60:20:60:21 | fo | fo |
|
||||
| regexp.cpp:60:23:60:23 | o | o |
|
||||
| regexp.cpp:60:25:60:25 | b | b |
|
||||
| regexp.cpp:60:27:60:28 | ar | ar |
|
||||
| regexp.cpp:61:21:61:21 | a | a |
|
||||
| regexp.cpp:61:23:61:23 | b | b |
|
||||
| regexp.cpp:61:25:61:26 | cd | cd |
|
||||
| regexp.cpp:61:28:61:28 | e | e |
|
||||
| regexp.cpp:62:23:62:23 | : | : |
|
||||
| regexp.cpp:62:26:62:27 | \\w | w |
|
||||
| regexp.cpp:65:25:65:26 | \\w | w |
|
||||
| regexp.cpp:66:26:66:26 | f | f |
|
||||
| regexp.cpp:66:27:66:27 | o | o |
|
||||
| regexp.cpp:69:22:69:22 | a | a |
|
||||
| regexp.cpp:69:25:69:25 | b | b |
|
||||
| regexp.cpp:70:28:70:28 | q | q |
|
||||
| regexp.cpp:70:31:70:32 | \\s | s |
|
||||
| regexp.cpp:76:22:76:22 | a | a |
|
||||
| regexp.cpp:76:24:76:24 | f | f |
|
||||
| regexp.cpp:85:23:85:23 | A | A |
|
||||
| regexp.cpp:85:25:85:25 | F | F |
|
||||
| regexp.cpp:85:35:85:35 | a | a |
|
||||
| regexp.cpp:85:37:85:37 | f | f |
|
||||
| regexp.cpp:91:19:91:24 | \\u{987 | \u0987 |
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
import semmle.code.cpp.regex.internal.ParseRegExp
|
||||
import semmle.code.cpp.regex.RegexTreeView
|
||||
|
||||
// Stop gap for missing flow configs
|
||||
class RegExpTest extends RegExp {
|
||||
RegExpTest() { any() }
|
||||
}
|
||||
|
||||
query predicate groupName(RegExpGroup g, string name) { name = g.getName() }
|
||||
|
||||
query predicate groupNumber(RegExpGroup g, int number) { number = g.getNumber() }
|
||||
|
||||
Reference in New Issue
Block a user