@@ -424,6 +424,13 @@ module BindingStringParser<BindingStringReaderSig BindingStringReader> {
424
424
)
425
425
}
426
426
427
+ /**
428
+ * The token `t` is completely contained within this outer token.
429
+ */
430
+ predicate strictContains ( Token t ) {
431
+ this .contains ( t ) and t .getBegin ( ) > this .getBegin ( ) and t .getEnd ( ) < this .getEnd ( )
432
+ }
433
+
427
434
stdlib:: Location getLocation ( ) { result = getReader ( ) .getLocation ( ) }
428
435
}
429
436
@@ -435,12 +442,7 @@ module BindingStringParser<BindingStringReaderSig BindingStringReader> {
435
442
* `position + count(tokens_with_current_position)`.
436
443
*/
437
444
private predicate tokenOrdering ( BindingStringReader reader , Token t , int position ) {
438
- t =
439
- rank [ position ] ( Token token |
440
- token .getReader ( ) = reader
441
- |
442
- token order by token .getBegin ( ) , token .getEnd ( )
443
- )
445
+ t = rank [ position ] ( Token token | token .getReader ( ) = reader | token order by token .getBegin ( ) )
444
446
}
445
447
446
448
/**
@@ -684,15 +686,15 @@ module BindingStringParser<BindingStringReaderSig BindingStringReader> {
684
686
private newtype TValue =
685
687
MkNumber ( float n , Token source ) {
686
688
exists ( NumberToken t | t .getValue ( ) .toFloat ( ) = n and source = t |
687
- not any ( StringToken str ) .contains ( t ) and
688
- not any ( NameToken name ) .contains ( t )
689
+ not any ( StringToken str ) .strictContains ( t ) and
690
+ not any ( NameToken name ) .strictContains ( t )
689
691
)
690
692
} or
691
693
MkString ( string s , Token source ) {
692
694
exists ( StringToken t |
693
695
t .( Token ) .getValue ( ) = s and
694
696
t = source and
695
- not any ( NameToken nameToken ) .contains ( t )
697
+ not any ( NameToken nameToken ) .strictContains ( t )
696
698
)
697
699
} or
698
700
MkObject ( MemberList members , Token source ) {
@@ -721,27 +723,27 @@ module BindingStringParser<BindingStringReaderSig BindingStringReader> {
721
723
} or
722
724
MkTrue ( Token source ) {
723
725
exists ( TrueToken t |
724
- not any ( StringToken str ) .contains ( t ) and
725
- not any ( NameToken nameToken ) .contains ( t ) and
726
+ not any ( StringToken str ) .strictContains ( t ) and
727
+ not any ( NameToken nameToken ) .strictContains ( t ) and
726
728
source = t
727
729
)
728
730
} or
729
731
MkFalse ( Token source ) {
730
732
exists ( FalseToken t |
731
- not any ( StringToken str ) .contains ( t ) and
732
- not any ( NameToken nameToken ) .contains ( t ) and
733
+ not any ( StringToken str ) .strictContains ( t ) and
734
+ not any ( NameToken nameToken ) .strictContains ( t ) and
733
735
source = t
734
736
)
735
737
} or
736
738
MkNull ( Token source ) {
737
739
exists ( NullToken t |
738
- not any ( StringToken str ) .contains ( t ) and
739
- not any ( NameToken nameToken ) .contains ( t ) and
740
+ not any ( StringToken str ) .strictContains ( t ) and
741
+ not any ( NameToken nameToken ) .strictContains ( t ) and
740
742
source = t
741
743
)
742
744
} or
743
745
MkName ( Token source ) {
744
- exists ( NameToken t | not any ( StringToken str ) .contains ( t ) and source = t )
746
+ exists ( NameToken t | not any ( StringToken str ) .strictContains ( t ) and source = t )
745
747
} or
746
748
MkIdent ( Token source ) {
747
749
exists ( IdentToken t | source = t and getNextSkippingWhitespace ( t ) instanceof ColonToken )
0 commit comments