Rather than banning # in idents altogether, as #204 does, this takes the same approach as our number-like handling, and just bans idents from looking like a raw string in their first two characters: just as an ident can't start with digit or sign digit, it now can't start with r# or r" either. (That last isn't an ident, but it prevents a naive parser not using first-wins collision resolution from reading it as an ident r followed by junk.)
It also refactors the bare-ident production a bit to make the structure clearer, as it was already getting a bit messy just trying to ban number-likes.
Rather than banning
#
in idents altogether, as #204 does, this takes the same approach as our number-like handling, and just bans idents from looking like a raw string in their first two characters: just as an ident can't start withdigit
orsign digit
, it now can't start withr#
orr"
either. (That last isn't an ident, but it prevents a naive parser not using first-wins collision resolution from reading it as an identr
followed by junk.)It also refactors the bare-ident production a bit to make the structure clearer, as it was already getting a bit messy just trying to ban number-likes.