@@ -1721,18 +1721,23 @@ scenic_specifiers: ss=','.scenic_specifier+ { ss }
17211721scenic_specifier:
17221722 | scenic_valid_specifier
17231723 | invalid_scenic_specifier
1724+ # Split into non-operator-like vs operator-like instance specifiers.
17241725scenic_valid_specifier:
1725- | 'with' p=NAME v=expression { s.WithSpecifier(prop=p.string, value=v, LOCATIONS) }
1726+ | scenic_instance_specifier_nonoperator
1727+ | scenic_instance_specifier_operator_like
1728+ scenic_instance_specifier_operator_like:
17261729 | 'at' position=expression { s.AtSpecifier(position=position, LOCATIONS) }
17271730 | "offset" 'by' o=expression { s.OffsetBySpecifier(offset=o, LOCATIONS) }
17281731 | "offset" "along" d=expression 'by' o=expression { s.OffsetAlongSpecifier(direction=d, offset=o, LOCATIONS) }
1732+ | 'in' r=expression { s.InSpecifier(region=r, LOCATIONS) }
1733+ scenic_instance_specifier_nonoperator:
1734+ | 'with' p=NAME v=expression { s.WithSpecifier(prop=p.string, value=v, LOCATIONS) }
17291735 | direction=scenic_specifier_position_direction position=expression distance=['by' e=expression { e }] {
17301736 s.DirectionOfSpecifier(direction=direction, position=position, distance=distance, LOCATIONS)
17311737 }
17321738 | "beyond" v=expression 'by' o=expression b=['from' a=expression {a}] { s.BeyondSpecifier(position=v, offset=o, base=b) }
17331739 | "visible" b=['from' r=expression { r }] { s.VisibleSpecifier(base=b, LOCATIONS) }
17341740 | 'not' "visible" b=['from' r=expression { r }] { s.NotVisibleSpecifier(base=b, LOCATIONS) }
1735- | 'in' r=expression { s.InSpecifier(region=r, LOCATIONS) }
17361741 | 'on' r=expression { s.OnSpecifier(region=r, LOCATIONS) }
17371742 | "contained" 'in' r=expression { s.ContainedInSpecifier(region=r, LOCATIONS) }
17381743 | "following" f=expression b=['from' e=expression {e}] 'for' d=expression {
@@ -2492,7 +2497,7 @@ invalid_kwarg[NoReturn]:
24922497 }
24932498
24942499invalid_scenic_instance_creation[NoReturn]:
2495- | n=NAME s=scenic_valid_specifier {
2500+ | n=NAME s=scenic_instance_specifier_nonoperator {
24962501 self.raise_syntax_error_known_range("invalid syntax. Perhaps you forgot 'new'?", n, s)
24972502 }
24982503invalid_scenic_specifier[NoReturn]:
0 commit comments