|
|
|
@ -101,12 +101,15 @@ export const language = <ILanguage>{
|
|
|
|
|
tokenizer: {
|
|
|
|
|
root: [
|
|
|
|
|
[/[a-zA-Z][a-zA-Z0-9_]*!?|_[a-zA-Z0-9_]+/,
|
|
|
|
|
{ cases: { '@typeKeywords': 'keyword.type',
|
|
|
|
|
{
|
|
|
|
|
cases: {
|
|
|
|
|
'@typeKeywords': 'keyword.type',
|
|
|
|
|
'@keywords': 'keyword',
|
|
|
|
|
'@supportConstants': 'keyword',
|
|
|
|
|
'@supportMacros': 'keyword',
|
|
|
|
|
'@constants': 'keyword',
|
|
|
|
|
'@default': 'identifier', }
|
|
|
|
|
'@default': 'identifier',
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
// Designator
|
|
|
|
@ -117,14 +120,18 @@ export const language = <ILanguage>{
|
|
|
|
|
[/'\S'/, 'string.byteliteral'],
|
|
|
|
|
// Strings
|
|
|
|
|
[/"/, { token: 'string.quote', bracket: '@open', next: '@string' }],
|
|
|
|
|
{include: '@numbers'},
|
|
|
|
|
{ include: '@numbers' },
|
|
|
|
|
// Whitespace + comments
|
|
|
|
|
{ include: '@whitespace' },
|
|
|
|
|
[/@delimiters/, { cases: { '@keywords': 'keyword',
|
|
|
|
|
'@default': 'delimiter' }}],
|
|
|
|
|
[/@delimiters/, {
|
|
|
|
|
cases: {
|
|
|
|
|
'@keywords': 'keyword',
|
|
|
|
|
'@default': 'delimiter'
|
|
|
|
|
}
|
|
|
|
|
}],
|
|
|
|
|
|
|
|
|
|
[/[{}()\[\]<>]/, '@brackets'],
|
|
|
|
|
[/@symbols/, { cases: {'@operators': 'operator', '@default' : '' }}],
|
|
|
|
|
[/@symbols/, { cases: { '@operators': 'operator', '@default': '' } }],
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
whitespace: [
|
|
|
|
@ -134,31 +141,31 @@ export const language = <ILanguage>{
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
comment: [
|
|
|
|
|
[/[^\/*]+/, 'comment' ],
|
|
|
|
|
[/\/\*/, 'comment', '@push' ],
|
|
|
|
|
[/[^\/*]+/, 'comment'],
|
|
|
|
|
[/\/\*/, 'comment', '@push'],
|
|
|
|
|
["\\*/", 'comment', '@pop'],
|
|
|
|
|
[/[\/*]/, 'comment' ]
|
|
|
|
|
[/[\/*]/, 'comment']
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
string: [
|
|
|
|
|
[/[^\\"]+/, 'string'],
|
|
|
|
|
[/@escapes/, 'string.escape'],
|
|
|
|
|
[/\\./, 'string.escape.invalid'],
|
|
|
|
|
[/"/, { token: 'string.quote', bracket: '@close', next: '@pop' } ]
|
|
|
|
|
[/"/, { token: 'string.quote', bracket: '@close', next: '@pop' }]
|
|
|
|
|
],
|
|
|
|
|
numbers: [
|
|
|
|
|
//Octal
|
|
|
|
|
[/(0o[0-7_]+)(@intSuffixes)?/, {token: 'number', log: 'Octal'}],
|
|
|
|
|
[/(0o[0-7_]+)(@intSuffixes)?/, { token: 'number', log: 'Octal' }],
|
|
|
|
|
//Binary
|
|
|
|
|
[/(0b[0-1_]+)(@intSuffixes)?/, {token: 'number', log: 'Binary'}],
|
|
|
|
|
[/(0b[0-1_]+)(@intSuffixes)?/, { token: 'number', log: 'Binary' }],
|
|
|
|
|
//Exponent
|
|
|
|
|
[/[\d][\d_]*(\.[\d][\d_]*)?[eE][+-][\d_]+(@floatSuffixes)?/, {token: 'number', log: 'Exponent'}],
|
|
|
|
|
[/[\d][\d_]*(\.[\d][\d_]*)?[eE][+-][\d_]+(@floatSuffixes)?/, { token: 'number', log: 'Exponent' }],
|
|
|
|
|
//Float
|
|
|
|
|
[/\b(\d\.?[\d_]*)(@floatSuffixes)?\b/,{token: 'number', log: 'Float'}],
|
|
|
|
|
[/\b(\d\.?[\d_]*)(@floatSuffixes)?\b/, { token: 'number', log: 'Float' }],
|
|
|
|
|
//Hexadecimal
|
|
|
|
|
[/(0x[\da-fA-F]+)_?(@intSuffixes)?/, {token: 'number', log: 'Hexadecimal'}],
|
|
|
|
|
[/(0x[\da-fA-F]+)_?(@intSuffixes)?/, { token: 'number', log: 'Hexadecimal' }],
|
|
|
|
|
//Integer
|
|
|
|
|
[/[\d][\d_]*(@intSuffixes?)?/, {token: 'number', log: 'Integer'}],
|
|
|
|
|
[/[\d][\d_]*(@intSuffixes?)?/, { token: 'number', log: 'Integer' }],
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|