Skip to content
This repository was archived by the owner on Dec 15, 2022. It is now read-only.

Commit 0bbdc0e

Browse files
authored
Merge pull request #588 from zcei/grammar-bigint
Add support for BigInt numeric
2 parents 2035549 + f17feaa commit 0bbdc0e

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

grammars/javascript.cson

+4-4
Original file line numberDiff line numberDiff line change
@@ -1244,15 +1244,15 @@
12441244
'numbers':
12451245
'patterns': [
12461246
{
1247-
'match': '\\b(?<!\\$)0(x|X)[0-9a-fA-F]+\\b(?!\\$)'
1247+
'match': '\\b(?<!\\$)0(x|X)[0-9a-fA-F]+n?\\b(?!\\$)'
12481248
'name': 'constant.numeric.hex.js'
12491249
}
12501250
{
1251-
'match': '\\b(?<!\\$)0(b|B)[01]+\\b(?!\\$)'
1251+
'match': '\\b(?<!\\$)0(b|B)[01]+n?\\b(?!\\$)'
12521252
'name': 'constant.numeric.binary.js'
12531253
}
12541254
{
1255-
'match': '\\b(?<!\\$)0(o|O)?[0-7]+\\b(?!\\$)'
1255+
'match': '\\b(?<!\\$)0(o|O)?[0-7]+n?\\b(?!\\$)'
12561256
'name': 'constant.numeric.octal.js'
12571257
}
12581258
{
@@ -1265,7 +1265,7 @@
12651265
(?:\\b[0-9]+(\\.)[0-9]+\\b)| # 1.1
12661266
(?:\\b[0-9]+(\\.)\\B)| # 1.
12671267
(?:\\B(\\.)[0-9]+\\b)| # .1
1268-
(?:\\b[0-9]+\\b(?!\\.)) # 1
1268+
(?:\\b[0-9]+n?\\b(?!\\.)) # 1n
12691269
)(?!\\$)
12701270
'''
12711271
'captures':

spec/javascript-spec.coffee

+21
Original file line numberDiff line numberDiff line change
@@ -317,27 +317,48 @@ describe "JavaScript grammar", ->
317317
{tokens} = grammar.tokenizeLine('0X1D306')
318318
expect(tokens[0]).toEqual value: '0X1D306', scopes: ['source.js', 'constant.numeric.hex.js']
319319

320+
{tokens} = grammar.tokenizeLine('0x1D306n')
321+
expect(tokens[0]).toEqual value: '0x1D306n', scopes: ['source.js', 'constant.numeric.hex.js']
322+
323+
{tokens} = grammar.tokenizeLine('0X1D306n')
324+
expect(tokens[0]).toEqual value: '0X1D306n', scopes: ['source.js', 'constant.numeric.hex.js']
325+
320326
it "tokenizes binary literals", ->
321327
{tokens} = grammar.tokenizeLine('0b011101110111010001100110')
322328
expect(tokens[0]).toEqual value: '0b011101110111010001100110', scopes: ['source.js', 'constant.numeric.binary.js']
323329

324330
{tokens} = grammar.tokenizeLine('0B011101110111010001100110')
325331
expect(tokens[0]).toEqual value: '0B011101110111010001100110', scopes: ['source.js', 'constant.numeric.binary.js']
326332

333+
{tokens} = grammar.tokenizeLine('0b011101110111010001100110n')
334+
expect(tokens[0]).toEqual value: '0b011101110111010001100110n', scopes: ['source.js', 'constant.numeric.binary.js']
335+
336+
{tokens} = grammar.tokenizeLine('0B011101110111010001100110n')
337+
expect(tokens[0]).toEqual value: '0B011101110111010001100110n', scopes: ['source.js', 'constant.numeric.binary.js']
338+
327339
it "tokenizes octal literals", ->
328340
{tokens} = grammar.tokenizeLine('0o1411')
329341
expect(tokens[0]).toEqual value: '0o1411', scopes: ['source.js', 'constant.numeric.octal.js']
330342

331343
{tokens} = grammar.tokenizeLine('0O1411')
332344
expect(tokens[0]).toEqual value: '0O1411', scopes: ['source.js', 'constant.numeric.octal.js']
333345

346+
{tokens} = grammar.tokenizeLine('0o1411n')
347+
expect(tokens[0]).toEqual value: '0o1411n', scopes: ['source.js', 'constant.numeric.octal.js']
348+
349+
{tokens} = grammar.tokenizeLine('0O1411n')
350+
expect(tokens[0]).toEqual value: '0O1411n', scopes: ['source.js', 'constant.numeric.octal.js']
351+
334352
{tokens} = grammar.tokenizeLine('0010')
335353
expect(tokens[0]).toEqual value: '0010', scopes: ['source.js', 'constant.numeric.octal.js']
336354

337355
it "tokenizes decimals", ->
338356
{tokens} = grammar.tokenizeLine('1234')
339357
expect(tokens[0]).toEqual value: '1234', scopes: ['source.js', 'constant.numeric.decimal.js']
340358

359+
{tokens} = grammar.tokenizeLine('123456789n')
360+
expect(tokens[0]).toEqual value: '123456789n', scopes: ['source.js', 'constant.numeric.decimal.js']
361+
341362
{tokens} = grammar.tokenizeLine('5e-10')
342363
expect(tokens[0]).toEqual value: '5e-10', scopes: ['source.js', 'constant.numeric.decimal.js']
343364

0 commit comments

Comments
 (0)