Partially revert #99

6704988633 disallowed identifiers from ever starting with a sign character. This disallowed idents like `-`, or like the CSS `--foo` properties.

This change instead allows an ident to start with a sign character, so long as the *second* character isn't a digit.

I also tweaked the prose definition of identifier to talk about this restriction.
This commit is contained in:
Tab Atkins Jr 2021-08-24 14:51:55 -07:00 committed by GitHub
parent 6704988633
commit 1400d15672
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 3 additions and 2 deletions

View File

@ -80,7 +80,8 @@ foo 1 key="val" 3 {
A bare Identifier is composed of any unicode codepoint other than [non-initial
characters](#non-inidital-characters), followed by any number of unicode
codepoints other than [non-identifier characters](#non-identifier-characters).
codepoints other than [non-identifier characters](#non-identifier-characters),
so long as this doesn't produce something confusable for a [Number](#number).
Identifiers are terminated by [Whitespace](#whitespace) or
[Newlines](#newline).
@ -311,7 +312,7 @@ node-space := ws* escline ws* | ws+
node-terminator := single-line-comment | newline | ';' | eof
identifier := string | bare-identifier
bare-identifier := (identifier-char - digit - sign) identifier-char*
bare-identifier := (identifier-char - digit - sign) identifier-char* | sign ((identifier-char - digit) identifier-char*)?
identifier-char := unicode - linespace - [\{}<>;[]=,"]
prop := identifier '=' value
value := string | number | boolean | 'null'