Ruby: Fix incorrect parsing of ranges

This commit is contained in:
Tom Hvitved
2022-03-08 15:51:23 +01:00
parent 89c3d0535a
commit f5fbf50d7d
3 changed files with 2 additions and 16 deletions

View File

@@ -402,7 +402,8 @@ abstract class RegExp extends AST::StringlikeLiteral {
not exists(int x, int y | this.backreference(x, y) and x <= start and y >= end) and
not exists(int x, int y |
this.pStyleNamedCharacterProperty(x, y, _) and x <= start and y >= end
)
) and
not exists(int x, int y | this.multiples(x, y, _, _) and x <= start and y >= end)
}
predicate normalCharacter(int start, int end) {

View File

@@ -29,29 +29,21 @@ regexp.rb:
# 9| [RegExpRange] a{4,8}
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
# 9| [RegExpNormalChar] 4,8}
# 10| [RegExpConstant, RegExpNormalChar] a
# 10| [RegExpRange] a{,8}
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
# 10| [RegExpNormalChar] ,8}
# 11| [RegExpConstant, RegExpNormalChar] a
# 11| [InfiniteRepetitionQuantifier, RegExpRange] a{3,}
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
# 11| [RegExpNormalChar] 3,}
# 12| [RegExpConstant, RegExpNormalChar] a
# 12| [RegExpRange] a{7}
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
# 12| [RegExpNormalChar] 7}
# 15| [RegExpConstant, RegExpNormalChar] foo
# 15| [RegExpAlt] foo|bar
@@ -428,8 +420,6 @@ regexp.rb:
# 62| [RegExpRange] \p{^Alnum}{2,3}
#-----| 0 -> [RegExpNamedCharacterProperty] \p{^Alnum}
# 62| [RegExpNormalChar] 2,3}
# 63| [RegExpCharacterClass] [a-f\p{Digit}]
#-----| 0 -> [RegExpCharacterRange] a-f
#-----| 1 -> [RegExpNamedCharacterProperty] \p{Digit}

View File

@@ -23,16 +23,12 @@ term
| 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:9:4:9:7 | 4,8} | RegExpNormalChar |
| regexp.rb:10:2:10:2 | a | RegExpConstant,RegExpNormalChar |
| regexp.rb:10:2:10:6 | a{,8} | RegExpRange |
| regexp.rb:10:4:10:6 | ,8} | RegExpNormalChar |
| regexp.rb:11:2:11:2 | a | RegExpConstant,RegExpNormalChar |
| regexp.rb:11:2:11:6 | a{3,} | InfiniteRepetitionQuantifier,RegExpRange |
| regexp.rb:11:4:11:6 | 3,} | RegExpNormalChar |
| regexp.rb:12:2:12:2 | a | RegExpConstant,RegExpNormalChar |
| regexp.rb:12:2:12:5 | a{7} | RegExpRange |
| regexp.rb:12:4:12:5 | 7} | RegExpNormalChar |
| 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 |
@@ -169,7 +165,6 @@ term
| 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:62:13:62:16 | 2,3} | RegExpNormalChar |
| 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 |