Skip to content

Commit bb22f5b

Browse files
authored
feat: improve identifier regex
This is similar to the C identifier regex, which allows a wider range of unicode characters to be used.
1 parent 3a85187 commit bb22f5b

File tree

3 files changed

+10513
-9424
lines changed

3 files changed

+10513
-9424
lines changed

grammar.js

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1827,7 +1827,7 @@ module.exports = grammar({
18271827

18281828
boolean_literal: _ => choice('true', 'false'),
18291829

1830-
_identifier_token: _ => token(seq(optional('@'), /[\p{L}\p{Nl}_][\p{L}\p{Nl}\p{Nd}\p{Pc}\p{Cf}\p{Mn}\p{Mc}]*/)),
1830+
_identifier_token: _ => token(seq(optional('@'), /(\p{XID_Start}|_|\\u[0-9A-Fa-f]{4}|\\U[0-9A-Fa-f]{8})(\p{XID_Continue}|\\u[0-9A-Fa-f]{4}|\\U[0-9A-Fa-f]{8})*/)),
18311831
identifier: $ => choice(
18321832
$._identifier_token,
18331833
$._reserved_identifier,
@@ -1996,12 +1996,12 @@ module.exports = grammar({
19961996
});
19971997

19981998
/**
1999-
* Creates a preprocessor regex rule
2000-
*
2001-
* @param {RegExp|Rule|String} command
2002-
*
2003-
* @return {AliasRule}
2004-
*/
1999+
* Creates a preprocessor regex rule
2000+
*
2001+
* @param {RegExp | Rule | string} command
2002+
*
2003+
* @returns {AliasRule}
2004+
*/
20052005
function preprocessor(command) {
20062006
return alias(new RegExp('#[ \t]*' + command), '#' + command);
20072007
}
@@ -2016,16 +2016,15 @@ function preprocessor(command) {
20162016
*
20172017
* @param {boolean} rep
20182018
*
2019-
* @return {RuleBuilders<string, string>}
2019+
* @returns {RuleBuilders<string, string>}
20202020
*/
20212021
function preprocIf(suffix, content, precedence = 0, rep = true) {
20222022
/**
2023-
*
2024-
* @param {GrammarSymbols<string>} $
2025-
*
2026-
* @return {ChoiceRule}
2027-
*
2028-
*/
2023+
*
2024+
* @param {GrammarSymbols<string>} $
2025+
*
2026+
* @returns {ChoiceRule}
2027+
*/
20292028
function alternativeBlock($) {
20302029
return choice(
20312030
suffix ? alias($['preproc_else' + suffix], $.preproc_else) : $.preproc_else,
@@ -2063,8 +2062,7 @@ function preprocIf(suffix, content, precedence = 0, rep = true) {
20632062
*
20642063
* @param {Rule} rule
20652064
*
2066-
* @return {SeqRule}
2067-
*
2065+
* @returns {SeqRule}
20682066
*/
20692067
function commaSep1(rule) {
20702068
return seq(rule, repeat(seq(',', rule)));
@@ -2075,8 +2073,7 @@ function commaSep1(rule) {
20752073
*
20762074
* @param {Rule} rule
20772075
*
2078-
* @return {SeqRule}
2079-
*
2076+
* @returns {SeqRule}
20802077
*/
20812078
function commaSep2(rule) {
20822079
return seq(rule, repeat1(seq(',', rule)));
@@ -2087,8 +2084,7 @@ function commaSep2(rule) {
20872084
*
20882085
* @param {Rule} rule
20892086
*
2090-
* @return {ChoiceRule}
2091-
*
2087+
* @returns {ChoiceRule}
20922088
*/
20932089
function commaSep(rule) {
20942090
return optional(commaSep1(rule));
@@ -2101,8 +2097,7 @@ function commaSep(rule) {
21012097
*
21022098
* @param {RuleOrLiteral} separator
21032099
*
2104-
* @return {SeqRule}
2105-
*
2100+
* @returns {SeqRule}
21062101
*/
21072102
function sep1(rule, separator) {
21082103
return seq(rule, repeat(seq(separator, rule)));
@@ -2115,8 +2110,7 @@ function sep1(rule, separator) {
21152110
*
21162111
* @param {RuleOrLiteral} separator
21172112
*
2118-
* @return {ChoiceRule}
2119-
*
2113+
* @returns {ChoiceRule}
21202114
*/
21212115
function sep(rule, separator) {
21222116
return optional(sep1(rule, separator));

src/grammar.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)