You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
221 lines
6.5 KiB
221 lines
6.5 KiB
/*--------------------------------------------------------------------------------------------- |
|
* 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'], |
|
] |
|
} |
|
}; |
|
});
|
|
|