222 lines
6.5 KiB
JavaScript
222 lines
6.5 KiB
JavaScript
|
/*---------------------------------------------------------------------------------------------
|
||
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||
|
*--------------------------------------------------------------------------------------------*/
|
||
|
define(["require", "exports"], function (require, exports) {
|
||
|
'use strict';
|
||
|
Object.defineProperty(exports, "__esModule", { value: true });
|
||
|
exports.conf = {
|
||
|
comments: {
|
||
|
lineComment: '#'
|
||
|
},
|
||
|
brackets: [
|
||
|
['{', '}'],
|
||
|
['[', ']'],
|
||
|
['(', ')']
|
||
|
],
|
||
|
autoClosingPairs: [
|
||
|
{ open: '{', close: '}' },
|
||
|
{ open: '[', close: ']' },
|
||
|
{ open: '(', close: ')' },
|
||
|
{ open: '"', close: '"' },
|
||
|
],
|
||
|
surroundingPairs: [
|
||
|
{ open: '{', close: '}' },
|
||
|
{ open: '[', close: ']' },
|
||
|
{ open: '(', close: ')' },
|
||
|
{ open: '"', close: '"' },
|
||
|
]
|
||
|
};
|
||
|
exports.language = {
|
||
|
defaultToken: '',
|
||
|
tokenPostfix: '.r',
|
||
|
roxygen: [
|
||
|
'@param',
|
||
|
'@return',
|
||
|
'@name',
|
||
|
'@rdname',
|
||
|
'@examples',
|
||
|
'@include',
|
||
|
'@docType',
|
||
|
'@S3method',
|
||
|
'@TODO',
|
||
|
'@aliases',
|
||
|
'@alias',
|
||
|
'@assignee',
|
||
|
'@author',
|
||
|
'@callGraphDepth',
|
||
|
'@callGraph',
|
||
|
'@callGraphPrimitives',
|
||
|
'@concept',
|
||
|
'@exportClass',
|
||
|
'@exportMethod',
|
||
|
'@exportPattern',
|
||
|
'@export',
|
||
|
'@formals',
|
||
|
'@format',
|
||
|
'@importClassesFrom',
|
||
|
'@importFrom',
|
||
|
'@importMethodsFrom',
|
||
|
'@import',
|
||
|
'@keywords',
|
||
|
'@method',
|
||
|
'@nord',
|
||
|
'@note',
|
||
|
'@references',
|
||
|
'@seealso',
|
||
|
'@setClass',
|
||
|
'@slot',
|
||
|
'@source',
|
||
|
'@title',
|
||
|
'@usage'
|
||
|
],
|
||
|
constants: [
|
||
|
'NULL',
|
||
|
'FALSE',
|
||
|
'TRUE',
|
||
|
'NA',
|
||
|
'Inf',
|
||
|
'NaN ',
|
||
|
'NA_integer_',
|
||
|
'NA_real_',
|
||
|
'NA_complex_',
|
||
|
'NA_character_ ',
|
||
|
'T',
|
||
|
'F',
|
||
|
'LETTERS',
|
||
|
'letters',
|
||
|
'month.abb',
|
||
|
'month.name',
|
||
|
'pi',
|
||
|
'R.version.string'
|
||
|
],
|
||
|
keywords: [
|
||
|
'break',
|
||
|
'next',
|
||
|
'return',
|
||
|
'if',
|
||
|
'else',
|
||
|
'for',
|
||
|
'in',
|
||
|
'repeat',
|
||
|
'while',
|
||
|
'array',
|
||
|
'category',
|
||
|
'character',
|
||
|
'complex',
|
||
|
'double',
|
||
|
'function',
|
||
|
'integer',
|
||
|
'list',
|
||
|
'logical',
|
||
|
'matrix',
|
||
|
'numeric',
|
||
|
'vector',
|
||
|
'data.frame',
|
||
|
'factor',
|
||
|
'library',
|
||
|
'require',
|
||
|
'attach',
|
||
|
'detach',
|
||
|
'source'
|
||
|
],
|
||
|
special: [
|
||
|
'\\n',
|
||
|
'\\r',
|
||
|
'\\t',
|
||
|
'\\b',
|
||
|
'\\a',
|
||
|
'\\f',
|
||
|
'\\v',
|
||
|
'\\\'',
|
||
|
'\\"',
|
||
|
'\\\\'
|
||
|
],
|
||
|
brackets: [
|
||
|
{ open: '{', close: '}', token: 'delimiter.curly' },
|
||
|
{ open: '[', close: ']', token: 'delimiter.bracket' },
|
||
|
{ open: '(', close: ')', token: 'delimiter.parenthesis' }
|
||
|
],
|
||
|
tokenizer: {
|
||
|
root: [
|
||
|
{ include: '@numbers' },
|
||
|
{ include: '@strings' },
|
||
|
[/[{}\[\]()]/, '@brackets'],
|
||
|
{ include: '@operators' },
|
||
|
[/#'/, 'comment.doc', '@roxygen'],
|
||
|
[/(^#.*$)/, 'comment'],
|
||
|
[/\s+/, 'white'],
|
||
|
[/[,:;]/, 'delimiter'],
|
||
|
[/@[a-zA-Z]\w*/, 'tag'],
|
||
|
[/[a-zA-Z]\w*/, {
|
||
|
cases: {
|
||
|
'@keywords': 'keyword',
|
||
|
'@constants': 'constant',
|
||
|
'@default': 'identifier'
|
||
|
}
|
||
|
}]
|
||
|
],
|
||
|
// Recognize Roxygen comments
|
||
|
roxygen: [
|
||
|
[/@\w+/, {
|
||
|
cases: {
|
||
|
'@roxygen': 'tag',
|
||
|
'@eos': { token: 'comment.doc', next: '@pop' },
|
||
|
'@default': 'comment.doc'
|
||
|
}
|
||
|
}],
|
||
|
[/\s+/, {
|
||
|
cases: {
|
||
|
'@eos': { token: 'comment.doc', next: '@pop' },
|
||
|
'@default': 'comment.doc'
|
||
|
}
|
||
|
}],
|
||
|
[/.*/, { token: 'comment.doc', next: '@pop' }]
|
||
|
],
|
||
|
// Recognize positives, negatives, decimals, imaginaries, and scientific notation
|
||
|
numbers: [
|
||
|
[/0[xX][0-9a-fA-F]+/, 'number.hex'],
|
||
|
[/-?(\d*\.)?\d+([eE][+\-]?\d+)?/, 'number']
|
||
|
],
|
||
|
// Recognize operators
|
||
|
operators: [
|
||
|
[/<{1,2}-/, 'operator'],
|
||
|
[/->{1,2}/, 'operator'],
|
||
|
[/%[^%\s]+%/, 'operator'],
|
||
|
[/\*\*/, 'operator'],
|
||
|
[/%%/, 'operator'],
|
||
|
[/&&/, 'operator'],
|
||
|
[/\|\|/, 'operator'],
|
||
|
[/<</, 'operator'],
|
||
|
[/>>/, 'operator'],
|
||
|
[/[-+=&|!<>^~*/:$]/, 'operator']
|
||
|
],
|
||
|
// Recognize strings, including those broken across lines
|
||
|
strings: [
|
||
|
[/'/, 'string.escape', '@stringBody'],
|
||
|
[/"/, 'string.escape', '@dblStringBody']
|
||
|
],
|
||
|
stringBody: [
|
||
|
[/\\./, {
|
||
|
cases: {
|
||
|
'@special': 'string',
|
||
|
'@default': 'error-token'
|
||
|
}
|
||
|
}],
|
||
|
[/'/, 'string.escape', '@popall'],
|
||
|
[/./, 'string'],
|
||
|
],
|
||
|
dblStringBody: [
|
||
|
[/\\./, {
|
||
|
cases: {
|
||
|
'@special': 'string',
|
||
|
'@default': 'error-token'
|
||
|
}
|
||
|
}],
|
||
|
[/"/, 'string.escape', '@popall'],
|
||
|
[/./, 'string'],
|
||
|
]
|
||
|
}
|
||
|
};
|
||
|
});
|