1102 lines
30 KiB
JSON
1102 lines
30 KiB
JSON
{
|
|
"displayName": "MATLAB",
|
|
"fileTypes": [
|
|
"m"
|
|
],
|
|
"name": "matlab",
|
|
"patterns": [
|
|
{
|
|
"include": "#all_before_command_dual"
|
|
},
|
|
{
|
|
"include": "#command_dual"
|
|
},
|
|
{
|
|
"include": "#all_after_command_dual"
|
|
}
|
|
],
|
|
"repository": {
|
|
"all_after_command_dual": {
|
|
"patterns": [
|
|
{
|
|
"include": "#string"
|
|
},
|
|
{
|
|
"include": "#line_continuation"
|
|
},
|
|
{
|
|
"include": "#comments"
|
|
},
|
|
{
|
|
"include": "#conjugate_transpose"
|
|
},
|
|
{
|
|
"include": "#transpose"
|
|
},
|
|
{
|
|
"include": "#constants"
|
|
},
|
|
{
|
|
"include": "#variables"
|
|
},
|
|
{
|
|
"include": "#numbers"
|
|
},
|
|
{
|
|
"include": "#operators"
|
|
}
|
|
]
|
|
},
|
|
"all_before_command_dual": {
|
|
"patterns": [
|
|
{
|
|
"include": "#classdef"
|
|
},
|
|
{
|
|
"include": "#function"
|
|
},
|
|
{
|
|
"include": "#blocks"
|
|
},
|
|
{
|
|
"include": "#control_statements"
|
|
},
|
|
{
|
|
"include": "#global_persistent"
|
|
},
|
|
{
|
|
"include": "#parens"
|
|
},
|
|
{
|
|
"include": "#square_brackets"
|
|
},
|
|
{
|
|
"include": "#indexing_curly_brackets"
|
|
},
|
|
{
|
|
"include": "#curly_brackets"
|
|
}
|
|
]
|
|
},
|
|
"blocks": {
|
|
"patterns": [
|
|
{
|
|
"begin": "\\s*(?:^|[,;\\s])(for)\\b",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.for.matlab"
|
|
}
|
|
},
|
|
"end": "\\s*(?:^|[,;\\s])(end)\\b",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.end.for.matlab"
|
|
}
|
|
},
|
|
"name": "meta.for.matlab",
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\s*(?:^|[,;\\s])(if)\\b",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.if.matlab"
|
|
}
|
|
},
|
|
"end": "\\s*(?:^|[,;\\s])(end)\\b",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.end.if.matlab"
|
|
},
|
|
"2": {
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"name": "meta.if.matlab",
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"2": {
|
|
"name": "keyword.control.elseif.matlab"
|
|
},
|
|
"3": {
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"end": "^",
|
|
"match": "(\\s*)(?:^|[,;\\s])(elseif)\\b(.*)$\\n?",
|
|
"name": "meta.elseif.matlab"
|
|
},
|
|
{
|
|
"captures": {
|
|
"2": {
|
|
"name": "keyword.control.else.matlab"
|
|
},
|
|
"3": {
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"end": "^",
|
|
"match": "(\\s*)(?:^|[,;\\s])(else)\\b(.*)?$\\n?",
|
|
"name": "meta.else.matlab"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\s*(?:^|[,;\\s])(parfor)\\b",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.for.matlab"
|
|
}
|
|
},
|
|
"end": "\\s*(?:^|[,;\\s])(end)\\b",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.end.for.matlab"
|
|
}
|
|
},
|
|
"name": "meta.parfor.matlab",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\G(?!$)",
|
|
"end": "$\\n?",
|
|
"name": "meta.parfor-quantity.matlab",
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\s*(?:^|[,;\\s])(spmd)\\b",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.spmd.matlab"
|
|
}
|
|
},
|
|
"end": "\\s*(?:^|[,;\\s])(end)\\b",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.end.spmd.matlab"
|
|
}
|
|
},
|
|
"name": "meta.spmd.matlab",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\G(?!$)",
|
|
"end": "$\\n?",
|
|
"name": "meta.spmd-statement.matlab",
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\s*(?:^|[,;\\s])(switch)\\b",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.switch.matlab"
|
|
}
|
|
},
|
|
"end": "\\s*(?:^|[,;\\s])(end)\\b",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.end.switch.matlab"
|
|
}
|
|
},
|
|
"name": "meta.switch.matlab",
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"2": {
|
|
"name": "keyword.control.case.matlab"
|
|
},
|
|
"3": {
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"end": "^",
|
|
"match": "(\\s*)(?:^|[,;\\s])(case)\\b(.*)$\\n?",
|
|
"name": "meta.case.matlab"
|
|
},
|
|
{
|
|
"captures": {
|
|
"2": {
|
|
"name": "keyword.control.otherwise.matlab"
|
|
},
|
|
"3": {
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"end": "^",
|
|
"match": "(\\s*)(?:^|[,;\\s])(otherwise)\\b(.*)?$\\n?",
|
|
"name": "meta.otherwise.matlab"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\s*(?:^|[,;\\s])(try)\\b",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.try.matlab"
|
|
}
|
|
},
|
|
"end": "\\s*(?:^|[,;\\s])(end)\\b",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.end.try.matlab"
|
|
}
|
|
},
|
|
"name": "meta.try.matlab",
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"2": {
|
|
"name": "keyword.control.catch.matlab"
|
|
},
|
|
"3": {
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"end": "^",
|
|
"match": "(\\s*)(?:^|[,;\\s])(catch)\\b(.*)?$\\n?",
|
|
"name": "meta.catch.matlab"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "\\s*(?:^|[,;\\s])(while)\\b",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.while.matlab"
|
|
}
|
|
},
|
|
"end": "\\s*(?:^|[,;\\s])(end)\\b",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.end.while.matlab"
|
|
}
|
|
},
|
|
"name": "meta.while.matlab",
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"braced_validator_list": {
|
|
"begin": "\\s*(\\{)\\s*",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "storage.type.matlab"
|
|
}
|
|
},
|
|
"end": "(})",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "storage.type.matlab"
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#braced_validator_list"
|
|
},
|
|
{
|
|
"include": "#validator_strings"
|
|
},
|
|
{
|
|
"include": "#line_continuation"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "storage.type.matlab"
|
|
}
|
|
},
|
|
"match": "([^\"'.{}]+)"
|
|
},
|
|
{
|
|
"match": "\\.",
|
|
"name": "storage.type.matlab"
|
|
}
|
|
]
|
|
},
|
|
"classdef": {
|
|
"patterns": [
|
|
{
|
|
"begin": "^(\\s*)(classdef)\\b\\s*(.*)",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "storage.type.class.matlab"
|
|
},
|
|
"3": {
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"match": "[A-Za-z][0-9A-Z_a-z]*",
|
|
"name": "variable.parameter.class.matlab"
|
|
},
|
|
{
|
|
"begin": "=\\s*",
|
|
"end": ",|(?=\\))",
|
|
"patterns": [
|
|
{
|
|
"match": "true|false",
|
|
"name": "constant.language.boolean.matlab"
|
|
},
|
|
{
|
|
"include": "#string"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"2": {
|
|
"name": "meta.class-declaration.matlab"
|
|
},
|
|
"3": {
|
|
"name": "entity.name.section.class.matlab"
|
|
},
|
|
"4": {
|
|
"name": "keyword.operator.other.matlab"
|
|
},
|
|
"5": {
|
|
"patterns": [
|
|
{
|
|
"match": "[A-Za-z][0-9A-Z_a-z]*(\\.[A-Za-z][0-9A-Z_a-z]*)*",
|
|
"name": "entity.other.inherited-class.matlab"
|
|
},
|
|
{
|
|
"match": "&",
|
|
"name": "keyword.operator.other.matlab"
|
|
}
|
|
]
|
|
},
|
|
"6": {
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(\\([^)]*\\))?\\s*(([A-Za-z][0-9A-Z_a-z]*)(?:\\s*(<)\\s*([^%]*))?)\\s*($|(?=(%|...)).*)"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"end": "\\s*(?:^|[,;\\s])(end)\\b",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.end.class.matlab"
|
|
}
|
|
},
|
|
"name": "meta.class.matlab",
|
|
"patterns": [
|
|
{
|
|
"begin": "^(\\s*)(properties)\\b([^%]*)\\s*(\\([^)]*\\))?\\s*($|(?=%))",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "keyword.control.properties.matlab"
|
|
},
|
|
"3": {
|
|
"patterns": [
|
|
{
|
|
"match": "[A-Za-z][0-9A-Z_a-z]*",
|
|
"name": "variable.parameter.properties.matlab"
|
|
},
|
|
{
|
|
"begin": "=\\s*",
|
|
"end": ",|(?=\\))",
|
|
"patterns": [
|
|
{
|
|
"match": "true|false",
|
|
"name": "constant.language.boolean.matlab"
|
|
},
|
|
{
|
|
"match": "p(?:ublic|rotected|rivate)",
|
|
"name": "constant.language.access.matlab"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"end": "\\s*(?:^|[,;\\s])(end)\\b",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.end.properties.matlab"
|
|
}
|
|
},
|
|
"name": "meta.properties.matlab",
|
|
"patterns": [
|
|
{
|
|
"include": "#validators"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^(\\s*)(methods)\\b([^%]*)\\s*(\\([^)]*\\))?\\s*($|(?=%))",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "keyword.control.methods.matlab"
|
|
},
|
|
"3": {
|
|
"patterns": [
|
|
{
|
|
"match": "[A-Za-z][0-9A-Z_a-z]*",
|
|
"name": "variable.parameter.methods.matlab"
|
|
},
|
|
{
|
|
"begin": "=\\s*",
|
|
"end": ",|(?=\\))",
|
|
"patterns": [
|
|
{
|
|
"match": "true|false",
|
|
"name": "constant.language.boolean.matlab"
|
|
},
|
|
{
|
|
"match": "p(?:ublic|rotected|rivate)",
|
|
"name": "constant.language.access.matlab"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"end": "\\s*(?:^|[,;\\s])(end)\\b",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.end.methods.matlab"
|
|
}
|
|
},
|
|
"name": "meta.methods.matlab",
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^(\\s*)(events)\\b([^%]*)\\s*(\\([^)]*\\))?\\s*($|(?=%))",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "keyword.control.events.matlab"
|
|
},
|
|
"3": {
|
|
"patterns": [
|
|
{
|
|
"match": "[A-Za-z][0-9A-Z_a-z]*",
|
|
"name": "variable.parameter.events.matlab"
|
|
},
|
|
{
|
|
"begin": "=\\s*",
|
|
"end": ",|(?=\\))",
|
|
"patterns": [
|
|
{
|
|
"match": "true|false",
|
|
"name": "constant.language.boolean.matlab"
|
|
},
|
|
{
|
|
"match": "p(?:ublic|rotected|rivate)",
|
|
"name": "constant.language.access.matlab"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"end": "\\s*(?:^|[,;\\s])(end)\\b",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.end.events.matlab"
|
|
}
|
|
},
|
|
"name": "meta.events.matlab",
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^(\\s*)(enumeration)\\b([^%]*)\\s*($|(?=%))",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "keyword.control.enumeration.matlab"
|
|
}
|
|
},
|
|
"end": "\\s*(?:^|[,;\\s])(end)\\b",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.end.enumeration.matlab"
|
|
}
|
|
},
|
|
"name": "meta.enumeration.matlab",
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"command_dual": {
|
|
"captures": {
|
|
"1": {
|
|
"name": "string.interpolated.matlab"
|
|
},
|
|
"2": {
|
|
"name": "variable.other.command.matlab"
|
|
},
|
|
"28": {
|
|
"name": "comment.line.percentage.matlab"
|
|
}
|
|
},
|
|
"match": "^\\s*(([A-HJ-MO-Zbcdfghklmoq-z]\\w*|an??|a([0-9A-Z_a-mo-z]\\w*|n[0-9A-Z_a-rt-z]\\w*|ns\\w+)|ep??|e([0-9A-Z_a-oq-z]\\w*|p[0-9A-Z_a-rt-z]\\w*|ps\\w+)|in|i([0-9A-Z_a-mo-z]\\w*|n[0-9A-Z_a-eg-z]\\w*|nf\\w+)|In??|I([0-9A-Z_a-mo-z]\\w*|n[0-9A-Z_a-eg-z]\\w*|nf\\w+)|j\\w+|Na??|N([0-9A-Z_b-z]\\w*|a[0-9A-MO-Z_a-z]\\w*|aN\\w+)|na??|narg??|nargi|nargou??|n([0-9A-Z_b-z]\\w*|a([0-9A-Z_a-mopqs-z]\\w*|n\\w+|r([0-9A-Z_a-fh-z]\\w*|g([0-9A-Z_a-hj-nq-z]\\w*|i([0-9A-Z_a-mo-z]\\w*|n\\w+)|o([0-9A-Z_a-tv-z]\\w*|u([A-Za-su-z]\\w*|t\\w+))))))|p|p[0-9A-Z_a-hj-z]\\w*|pi\\w+)\\s+((([^\"%-/:->@\\\\^{|~\\s]|(?=')|(?=\"))|(\\.\\^|\\.\\*|\\./|\\.\\\\|\\.'|\\.\\(|&&|==|\\|\\||&(?=[^\\&])|\\|(?=[^|])|~=|<=|>=|~(?!=)|<(?!=)|>(?!=)|[-*+/:@\\\\^])(\\S|\\s*(?=%)|\\s+$|\\s+([]\\&)*,/:->@\\\\^|}]|(\\.(?:[^.\\d]|\\.[^.]))))|(\\.[^'(*/A-Z\\\\^a-z\\s]))([^%]|'[^']*'|\"[^\"]*\")*|(\\.(?=\\s)|\\.[A-Za-z]|(?=\\{))([^\"%'(=]|==|'[^']*'|\"[^\"]*\"|\\(|\\([^%)]*\\)|\\[|\\[[^]%]*]|\\{|\\{[^%}]*})*(\\.\\.\\.[^%]*)?((?=%)|$)))(%.*)?$"
|
|
},
|
|
"comment_block": {
|
|
"begin": "^(\\s*)%\\{[^\\n\\S]*+\\n",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.definition.comment.matlab"
|
|
}
|
|
},
|
|
"end": "^\\s*%}[^\\n\\S]*+(?:\\n|$)",
|
|
"name": "comment.block.percentage.matlab",
|
|
"patterns": [
|
|
{
|
|
"include": "#comment_block"
|
|
},
|
|
{
|
|
"match": "^[^\\n]*\\n"
|
|
}
|
|
]
|
|
},
|
|
"comments": {
|
|
"patterns": [
|
|
{
|
|
"begin": "(^[\\t ]+)?(?=%%\\s)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.whitespace.comment.leading.matlab"
|
|
}
|
|
},
|
|
"end": "(?!\\G)",
|
|
"patterns": [
|
|
{
|
|
"begin": "%%",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.comment.matlab"
|
|
}
|
|
},
|
|
"end": "\\n",
|
|
"name": "comment.line.double-percentage.matlab",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\G[^\\n\\S]*(?![\\n\\s])",
|
|
"contentName": "meta.cell.matlab",
|
|
"end": "(?=\\n)"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "#comment_block"
|
|
},
|
|
{
|
|
"begin": "(^[\\t ]+)?(?=%)",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"name": "punctuation.whitespace.comment.leading.matlab"
|
|
}
|
|
},
|
|
"end": "(?!\\G)",
|
|
"patterns": [
|
|
{
|
|
"begin": "%",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.comment.matlab"
|
|
}
|
|
},
|
|
"end": "\\n",
|
|
"name": "comment.line.percentage.matlab"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"conjugate_transpose": {
|
|
"match": "((?<=\\S)|(?<=])|(?<=\\))|(?<=}))'",
|
|
"name": "keyword.operator.transpose.matlab"
|
|
},
|
|
"constants": {
|
|
"match": "(?<!\\.)\\b(eps|false|Inf|inf|intmax|intmin|namelengthmax|NaN|nan|on|off|realmax|realmin|true|pi)\\b",
|
|
"name": "constant.language.matlab"
|
|
},
|
|
"control_statements": {
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.control.matlab"
|
|
}
|
|
},
|
|
"match": "\\s*(?:^|[,;\\s])(break|continue|return)\\b",
|
|
"name": "meta.control.matlab"
|
|
},
|
|
"curly_brackets": {
|
|
"begin": "\\{",
|
|
"end": "}",
|
|
"patterns": [
|
|
{
|
|
"include": "#end_in_parens"
|
|
},
|
|
{
|
|
"include": "#all_before_command_dual"
|
|
},
|
|
{
|
|
"include": "#all_after_command_dual"
|
|
},
|
|
{
|
|
"include": "#end_in_parens"
|
|
},
|
|
{
|
|
"include": "#block_keywords"
|
|
}
|
|
]
|
|
},
|
|
"end_in_parens": {
|
|
"match": "\\bend\\b",
|
|
"name": "keyword.operator.symbols.matlab"
|
|
},
|
|
"function": {
|
|
"patterns": [
|
|
{
|
|
"begin": "^(\\s*)(function)\\s+(?:(?:(\\[)([^]]*)(])|([A-Za-z][0-9A-Z_a-z]*))\\s*=\\s*)?([A-Za-z][0-9A-Z_a-z]*(\\.[A-Za-z][0-9A-Z_a-z]*)*)\\s*",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "storage.type.function.matlab"
|
|
},
|
|
"3": {
|
|
"name": "punctuation.definition.arguments.begin.matlab"
|
|
},
|
|
"4": {
|
|
"patterns": [
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.parameter.output.matlab"
|
|
}
|
|
]
|
|
},
|
|
"5": {
|
|
"name": "punctuation.definition.arguments.end.matlab"
|
|
},
|
|
"6": {
|
|
"name": "variable.parameter.output.function.matlab"
|
|
},
|
|
"7": {
|
|
"name": "entity.name.function.matlab"
|
|
}
|
|
},
|
|
"end": "\\s*(?:^|[,;\\s])(end)\\b(\\s*\\n)?",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.end.function.matlab"
|
|
}
|
|
},
|
|
"name": "meta.function.matlab",
|
|
"patterns": [
|
|
{
|
|
"begin": "\\G\\(",
|
|
"end": "\\)",
|
|
"name": "meta.arguments.function.matlab",
|
|
"patterns": [
|
|
{
|
|
"include": "#line_continuation"
|
|
},
|
|
{
|
|
"match": "\\w+",
|
|
"name": "variable.parameter.input.matlab"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "^(\\s*)(arguments)\\b([^%]*)\\s*(\\([^)]*\\))?\\s*($|(?=%))",
|
|
"beginCaptures": {
|
|
"2": {
|
|
"name": "keyword.control.arguments.matlab"
|
|
},
|
|
"3": {
|
|
"patterns": [
|
|
{
|
|
"match": "[A-Za-z][0-9A-Z_a-z]*",
|
|
"name": "variable.parameter.arguments.matlab"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"end": "\\s*(?:^|[,;\\s])(end)\\b",
|
|
"endCaptures": {
|
|
"1": {
|
|
"name": "keyword.control.end.arguments.matlab"
|
|
}
|
|
},
|
|
"name": "meta.arguments.matlab",
|
|
"patterns": [
|
|
{
|
|
"include": "#validators"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"global_persistent": {
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.control.globalpersistent.matlab"
|
|
}
|
|
},
|
|
"match": "^\\s*(global|persistent)\\b",
|
|
"name": "meta.globalpersistent.matlab"
|
|
},
|
|
"indexing_curly_brackets": {
|
|
"Comment": "Match identifier{idx, idx, } and stop at newline without ... This helps with partially written code like x{idx ",
|
|
"begin": "([A-Za-z][.0-9A-Z_a-z]*\\s*)\\{",
|
|
"beginCaptures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"end": "(}|(?<!\\.\\.\\.).\\n)",
|
|
"patterns": [
|
|
{
|
|
"include": "#end_in_parens"
|
|
},
|
|
{
|
|
"include": "#all_before_command_dual"
|
|
},
|
|
{
|
|
"include": "#all_after_command_dual"
|
|
},
|
|
{
|
|
"include": "#end_in_parens"
|
|
},
|
|
{
|
|
"include": "#block_keywords"
|
|
}
|
|
]
|
|
},
|
|
"line_continuation": {
|
|
"captures": {
|
|
"1": {
|
|
"name": "keyword.operator.symbols.matlab"
|
|
},
|
|
"2": {
|
|
"name": "comment.line.continuation.matlab"
|
|
}
|
|
},
|
|
"match": "(\\.\\.\\.)(.*)$",
|
|
"name": "meta.linecontinuation.matlab"
|
|
},
|
|
"numbers": {
|
|
"match": "(?<=[(*-\\-/:=\\[\\\\{\\s]|^)\\d*\\.?\\d+([Ee][-+]?\\d)?([0-9&&[^.]])*([ij])?\\b",
|
|
"name": "constant.numeric.matlab"
|
|
},
|
|
"operators": {
|
|
"match": "(?<=\\s)(==|~=|>=??|<=??|&&??|[:|]|\\|\\||[-*+]|\\.\\*|/|\\./|\\\\|\\.\\\\|\\^|\\.\\^)(?=\\s)",
|
|
"name": "keyword.operator.symbols.matlab"
|
|
},
|
|
"parens": {
|
|
"begin": "\\(",
|
|
"end": "(\\)|(?<!\\.\\.\\.).\\n)",
|
|
"patterns": [
|
|
{
|
|
"include": "#end_in_parens"
|
|
},
|
|
{
|
|
"include": "#all_before_command_dual"
|
|
},
|
|
{
|
|
"include": "#all_after_command_dual"
|
|
},
|
|
{
|
|
"include": "#block_keywords"
|
|
}
|
|
]
|
|
},
|
|
"square_brackets": {
|
|
"begin": "\\[",
|
|
"end": "]",
|
|
"patterns": [
|
|
{
|
|
"include": "#all_before_command_dual"
|
|
},
|
|
{
|
|
"include": "#all_after_command_dual"
|
|
},
|
|
{
|
|
"include": "#block_keywords"
|
|
}
|
|
]
|
|
},
|
|
"string": {
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"name": "string.interpolated.matlab"
|
|
},
|
|
"2": {
|
|
"name": "punctuation.definition.string.begin.matlab"
|
|
}
|
|
},
|
|
"match": "^\\s*((!).*$\\n?)"
|
|
},
|
|
{
|
|
"begin": "((?<=([\\&(*-/:->\\[\\\\^{|~\\s]))|^)'",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.begin.matlab"
|
|
}
|
|
},
|
|
"end": "'(?=([\\&(-/:->\\[-^{-~\\s]))",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.end.matlab"
|
|
}
|
|
},
|
|
"name": "string.quoted.single.matlab",
|
|
"patterns": [
|
|
{
|
|
"match": "''",
|
|
"name": "constant.character.escape.matlab"
|
|
},
|
|
{
|
|
"match": "'(?=.)",
|
|
"name": "invalid.illegal.unescaped-quote.matlab"
|
|
},
|
|
{
|
|
"match": "((%([-+0]?\\d{0,3}(\\.\\d{1,3})?)([EGc-gs]|(([bt])?([Xoux]))))|%%|\\\\([\\\\bfnrt]))",
|
|
"name": "constant.character.escape.matlab"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "((?<=([\\&(*-/:->\\[\\\\^{|~\\s]))|^)\"",
|
|
"beginCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.begin.matlab"
|
|
}
|
|
},
|
|
"end": "\"(?=([\\&(-/:->\\[-^{-~\\s]))",
|
|
"endCaptures": {
|
|
"0": {
|
|
"name": "punctuation.definition.string.end.matlab"
|
|
}
|
|
},
|
|
"name": "string.quoted.double.matlab",
|
|
"patterns": [
|
|
{
|
|
"match": "\"\"",
|
|
"name": "constant.character.escape.matlab"
|
|
},
|
|
{
|
|
"match": "\"(?=.)",
|
|
"name": "invalid.illegal.unescaped-quote.matlab"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"transpose": {
|
|
"match": "\\.'",
|
|
"name": "keyword.operator.transpose.matlab"
|
|
},
|
|
"validator_strings": {
|
|
"patterns": [
|
|
{
|
|
"patterns": [
|
|
{
|
|
"begin": "((?<=([\\&(*-/:->\\[\\\\^{|~\\s]))|^)'",
|
|
"end": "'(?=([\\&(-/:->\\[-^{-~\\s]))",
|
|
"name": "storage.type.matlab",
|
|
"patterns": [
|
|
{
|
|
"match": "''"
|
|
},
|
|
{
|
|
"match": "'(?=.)"
|
|
},
|
|
{
|
|
"match": "([^']+)"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"begin": "((?<=([\\&(*-/:->\\[\\\\^{|~\\s]))|^)\"",
|
|
"end": "\"(?=([\\&(-/:->\\[-^{-~\\s]))",
|
|
"name": "storage.type.matlab",
|
|
"patterns": [
|
|
{
|
|
"match": "\"\""
|
|
},
|
|
{
|
|
"match": "\"(?=.)"
|
|
},
|
|
{
|
|
"match": "[^\"]+"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"validators": {
|
|
"begin": "\\s*;?\\s*([A-Za-z][.0-9?A-Z_a-z]*)",
|
|
"end": "([\\n%;=].*)",
|
|
"endCaptures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(%.*)"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "(=[^;]*)"
|
|
},
|
|
{
|
|
"captures": {
|
|
"1": {
|
|
"patterns": [
|
|
{
|
|
"include": "#validators"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"match": "([\\n;]\\s*[A-Za-z].*)"
|
|
},
|
|
{
|
|
"include": "$self"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"patterns": [
|
|
{
|
|
"include": "#line_continuation"
|
|
},
|
|
{
|
|
"match": "\\s*(\\([^)]*\\))",
|
|
"name": "storage.type.matlab"
|
|
},
|
|
{
|
|
"match": "([A-Za-z][.0-9A-Z_a-z]*)",
|
|
"name": "storage.type.matlab"
|
|
},
|
|
{
|
|
"include": "#braced_validator_list"
|
|
}
|
|
]
|
|
},
|
|
"variables": {
|
|
"match": "(?<!\\.)\\b(nargin|nargout|varargin|varargout)\\b",
|
|
"name": "variable.other.function.matlab"
|
|
}
|
|
},
|
|
"scopeName": "source.matlab"
|
|
}
|