{ "information_for_contributors": [ "This file has been converted from https://github.com/REditorSupport/vscode-R/blob/master/syntax/r.json", "If you want to provide a fix or improvement, please create a pull request against the original repository.", "Once accepted there, we are happy to receive an update request." ], "version": "https://github.com/REditorSupport/vscode-R/commit/b0781feedfadbcc35f40db5ce09cc9956d78547c", "name": "R", "scopeName": "source.r", "patterns": [ { "include": "#roxygen" }, { "include": "#comments" }, { "include": "#constants" }, { "include": "#accessor" }, { "include": "#operators" }, { "include": "#keywords" }, { "include": "#storage-type" }, { "include": "#strings" }, { "include": "#brackets" }, { "include": "#function-declarations" }, { "include": "#lambda-functions" }, { "include": "#builtin-functions" }, { "include": "#function-calls" } ], "repository": { "accessor": { "patterns": [ { "begin": "(\\$)(?=(?:[a-zA-Z._][\\w.]*|`[^`]+`))", "beginCaptures": { "1": { "name": "keyword.accessor.dollar.r" } }, "end": "(?!\\G)", "endCaptures": {}, "patterns": [ { "include": "#function-calls" } ] } ] }, "comments": { "patterns": [ { "captures": { "1": { "name": "comment.line.pragma.r" }, "2": { "name": "entity.name.pragma.name.r" } }, "match": "^(#pragma[ \\t]+mark)[ \\t](.*)", "name": "comment.line.pragma-mark.r" }, { "begin": "(^[ \\t]+)?(?=#)", "beginCaptures": { "1": { "name": "punctuation.whitespace.comment.leading.r" } }, "end": "(?!\\G)", "patterns": [ { "begin": "#", "beginCaptures": { "0": { "name": "punctuation.definition.comment.r" } }, "end": "\\n", "name": "comment.line.number-sign.r" } ] } ] }, "constants": { "patterns": [ { "match": "\\b(pi|letters|LETTERS|month\\.abb|month\\.name)\\b", "name": "support.constant.misc.r" }, { "match": "\\b(TRUE|FALSE|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_|Inf|NaN)\\b", "name": "constant.language.r" }, { "match": "\\b0(x|X)[0-9a-fA-F]+i\\b", "name": "constant.numeric.imaginary.hexadecimal.r" }, { "match": "\\b[0-9]+\\.?[0-9]*(?:(e|E)(\\+|-)?[0-9]+)?i\\b", "name": "constant.numeric.imaginary.decimal.r" }, { "match": "\\.[0-9]+(?:(e|E)(\\+|-)?[0-9]+)?i\\b", "name": "constant.numeric.imaginary.decimal.r" }, { "match": "\\b0(x|X)[0-9a-fA-F]+L\\b", "name": "constant.numeric.integer.hexadecimal.r" }, { "match": "\\b(?:[0-9]+\\.?[0-9]*)(?:(e|E)(\\+|-)?[0-9]+)?L\\b", "name": "constant.numeric.integer.decimal.r" }, { "match": "\\b0(x|X)[0-9a-fA-F]+\\b", "name": "constant.numeric.float.hexadecimal.r" }, { "match": "\\b[0-9]+\\.?[0-9]*(?:(e|E)(\\+|-)?[0-9]+)?\\b", "name": "constant.numeric.float.decimal.r" }, { "match": "\\.[0-9]+(?:(e|E)(\\+|-)?[0-9]+)?\\b", "name": "constant.numeric.float.decimal.r" } ] }, "operators": { "patterns": [ { "match": "%[*/ox]%", "name": "keyword.operator.arithmetic.r" }, { "match": "(<<-|->>)", "name": "keyword.operator.assignment.r" }, { "match": "%(between|chin|do|dopar|in|like|\\+replace|\\+|:|T>|<>|>|\\$)%", "name": "keyword.operator.other.r" }, { "match": "\\.\\.\\.", "name": "keyword.other.r" }, { "match": ":::?", "name": "punctuation.accessor.colons.r" }, { "match": "(%%|\\*\\*)", "name": "keyword.operator.arithmetic.r" }, { "match": "(<-|->)", "name": "keyword.operator.assignment.r" }, { "match": "\\|>", "name": "keyword.operator.assignment.redirection.r" }, { "match": "(==|!=|<>|<=?|>=?)", "name": "keyword.operator.comparison.r" }, { "match": "(&&?|\\|\\|?)", "name": "keyword.operator.logical.r" }, { "match": ":=", "name": "keyword.operator.other.r" }, { "match": "[-+*/^]", "name": "keyword.operator.arithmetic.r" }, { "match": "=", "name": "keyword.operator.assignment.r" }, { "match": "!", "name": "keyword.operator.logical.r" }, { "match": "[:~@]", "name": "keyword.other.r" }, { "match": ";", "name": "punctuation.terminator.semicolon.r" } ] }, "keywords": { "patterns": [ { "match": "\\bif\\b(?=\\s*\\()", "name": "keyword.control.conditional.if.r" }, { "match": "\\belse\\b", "name": "keyword.control.conditional.else.r" }, { "match": "\\bbreak\\b", "name": "keyword.control.flow.break.r" }, { "match": "\\bnext\\b", "name": "keyword.control.flow.continue.r" }, { "match": "\\breturn(?=\\s*\\()", "name": "keyword.control.flow.return.r" }, { "match": "\\brepeat\\b", "name": "keyword.control.loop.repeat.r" }, { "match": "\\bfor\\b(?=\\s*\\()", "name": "keyword.control.loop.for.r" }, { "match": "\\bwhile\\b(?=\\s*\\()", "name": "keyword.control.loop.while.r" }, { "match": "\\bin\\b", "name": "keyword.operator.word.r" } ] }, "storage-type": { "patterns": [ { "begin": "\\b(character|complex|double|expression|integer|list|logical|numeric|single|raw|pairlist)\\b\\s*(\\()", "beginCaptures": { "1": { "name": "storage.type.r" }, "2": { "name": "punctuation.definition.arguments.begin.r" } }, "contentName": "meta.function-call.arguments.r", "end": "(\\))", "endCaptures": { "1": { "name": "punctuation.definition.arguments.end.r" } }, "name": "meta.function-call.r", "patterns": [ { "include": "#function-call-arguments" } ] } ] }, "strings": { "patterns": [ { "begin": "[rR]\"(-*)\\[", "beginCaptures": { "0": { "name": "punctuation.definition.string.raw.begin.r" } }, "end": "\\]\\1\"", "endCaptures": { "0": { "name": "punctuation.definition.string.raw.end.r" } }, "name": "string.quoted.double.raw.r" }, { "begin": "[rR]'(-*)\\[", "beginCaptures": { "0": { "name": "punctuation.definition.string.raw.begin.r" } }, "end": "\\]\\1'", "endCaptures": { "0": { "name": "punctuation.definition.string.raw.end.r" } }, "name": "string.quoted.single.raw.r" }, { "begin": "[rR]\"(-*)\\{", "beginCaptures": { "0": { "name": "punctuation.definition.string.raw.begin.r" } }, "end": "\\}\\1\"", "endCaptures": { "0": { "name": "punctuation.definition.string.raw.end.r" } }, "name": "string.quoted.double.raw.r" }, { "begin": "[rR]'(-*)\\{", "beginCaptures": { "0": { "name": "punctuation.definition.string.raw.begin.r" } }, "end": "\\}\\1'", "endCaptures": { "0": { "name": "punctuation.definition.string.raw.end.r" } }, "name": "string.quoted.single.raw.r" }, { "begin": "[rR]\"(-*)\\(", "beginCaptures": { "0": { "name": "punctuation.definition.string.raw.begin.r" } }, "end": "\\)\\1\"", "endCaptures": { "0": { "name": "punctuation.definition.string.raw.end.r" } }, "name": "string.quoted.double.raw.r" }, { "begin": "[rR]'(-*)\\(", "beginCaptures": { "0": { "name": "punctuation.definition.string.raw.begin.r" } }, "end": "\\)\\1'", "endCaptures": { "0": { "name": "punctuation.definition.string.raw.end.r" } }, "name": "string.quoted.single.raw.r" }, { "begin": "\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.r" } }, "end": "\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.r" } }, "name": "string.quoted.double.r", "patterns": [ { "match": "\\\\.", "name": "constant.character.escape.r" } ] }, { "begin": "'", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.r" } }, "end": "'", "endCaptures": { "0": { "name": "punctuation.definition.string.end.r" } }, "name": "string.quoted.single.r", "patterns": [ { "match": "\\\\.", "name": "constant.character.escape.r" } ] } ] }, "brackets": { "patterns": [ { "begin": "\\(", "beginCaptures": { "0": { "name": "punctuation.section.parens.begin.r" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.section.parens.end.r" } }, "patterns": [ { "include": "source.r" } ] }, { "begin": "\\[(?!\\[)", "beginCaptures": { "0": { "name": "punctuation.section.brackets.single.begin.r" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.section.brackets.single.end.r" } }, "patterns": [ { "include": "source.r" } ] }, { "begin": "\\[\\[", "beginCaptures": { "0": { "name": "punctuation.section.brackets.double.begin.r" } }, "end": "\\]\\]", "endCaptures": { "0": { "name": "punctuation.section.brackets.double.end.r" } }, "contentName": "meta.item-access.arguments.r", "patterns": [ { "include": "source.r" } ] }, { "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.section.braces.begin.r" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.section.braces.end.r" } }, "patterns": [ { "include": "source.r" } ] } ] }, "function-declarations": { "patterns": [ { "begin": "((?:[a-zA-Z._][\\w.]*|`[^`]+`))\\s*(