Created
March 18, 2018 15:07
-
-
Save Cside/f871a9b1cf0bae0955bfcf5c4f944e19 to your computer and use it in GitHub Desktop.
perl.tmLanguage.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Applications/Visual Studio Code.app/Contents/Resources/app/extensions/perl/syntaxes/perl.tmLanguage.json | |
{ | |
"information_for_contributors": [ | |
"This file has been converted from https://github.com/textmate/perl.tmbundle/blob/master/Syntaxes/Perl.plist", | |
"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/textmate/perl.tmbundle/commit/c0b7a4bd65882380522d82a60b536479a62b07c3", | |
"name": "Perl", | |
"scopeName": "source.perl", | |
"comment": "\n\tTODO:\tInclude RegExp syntax\n", | |
"patterns": [ | |
{ | |
"include": "#line_comment" | |
}, | |
{ | |
"begin": "^(?==[a-zA-Z]+)", | |
"end": "^(=cut\\b.*$)", | |
"endCaptures": { | |
"1": { | |
"patterns": [ | |
{ | |
"include": "#pod" | |
} | |
] | |
} | |
}, | |
"name": "comment.block.documentation.perl", | |
"patterns": [ | |
{ | |
"include": "#pod" | |
} | |
] | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"applyEndPatternLast": 1, | |
"begin": "\\b(?=qr\\s*[^\\s\\w])", | |
"comment": "string.regexp.compile.perl", | |
"end": "((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))", | |
"endCaptures": { | |
"1": { | |
"name": "string.regexp.compile.perl" | |
}, | |
"2": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"3": { | |
"name": "keyword.control.regexp-option.perl" | |
} | |
}, | |
"patterns": [ | |
{ | |
"begin": "(qr)\\s*\\{", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"1": { | |
"name": "support.function.perl" | |
} | |
}, | |
"end": "\\}", | |
"name": "string.regexp.compile.nested_braces.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "#nested_braces_interpolated" | |
} | |
] | |
}, | |
{ | |
"begin": "(qr)\\s*\\[", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"1": { | |
"name": "support.function.perl" | |
} | |
}, | |
"end": "\\]", | |
"name": "string.regexp.compile.nested_brackets.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "#nested_brackets_interpolated" | |
} | |
] | |
}, | |
{ | |
"begin": "(qr)\\s*<", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"1": { | |
"name": "support.function.perl" | |
} | |
}, | |
"end": ">", | |
"name": "string.regexp.compile.nested_ltgt.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "#nested_ltgt_interpolated" | |
} | |
] | |
}, | |
{ | |
"begin": "(qr)\\s*\\(", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"1": { | |
"name": "support.function.perl" | |
} | |
}, | |
"end": "\\)", | |
"name": "string.regexp.compile.nested_parens.perl", | |
"patterns": [ | |
{ | |
"comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable", | |
"match": "\\$(?=[^\\s\\w\\\\'\\{\\[\\(\\<])" | |
}, | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "#nested_parens_interpolated" | |
} | |
] | |
}, | |
{ | |
"begin": "(qr)\\s*'", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"1": { | |
"name": "support.function.perl" | |
} | |
}, | |
"end": "'", | |
"name": "string.regexp.compile.single-quote.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
} | |
] | |
}, | |
{ | |
"begin": "(qr)\\s*([^\\s\\w'\\{\\[\\(\\<])", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"1": { | |
"name": "support.function.perl" | |
} | |
}, | |
"end": "\\2", | |
"name": "string.regexp.compile.simple-delimiter.perl", | |
"patterns": [ | |
{ | |
"comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable", | |
"match": "\\$(?=[^\\s\\w'\\{\\[\\(\\<])", | |
"name": "keyword.control.anchor.perl" | |
}, | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "#nested_parens_interpolated" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"applyEndPatternLast": 1, | |
"begin": "(?<!\\{|\\+|\\-)\\b(?=m\\s*[^\\sa-zA-Z0-9])", | |
"comment": "string.regexp.find-m.perl", | |
"end": "((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))", | |
"endCaptures": { | |
"1": { | |
"name": "string.regexp.find-m.perl" | |
}, | |
"2": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"3": { | |
"name": "keyword.control.regexp-option.perl" | |
} | |
}, | |
"patterns": [ | |
{ | |
"begin": "(m)\\s*\\{", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"1": { | |
"name": "support.function.perl" | |
} | |
}, | |
"end": "\\}", | |
"name": "string.regexp.find-m.nested_braces.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "#nested_braces_interpolated" | |
} | |
] | |
}, | |
{ | |
"begin": "(m)\\s*\\[", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"1": { | |
"name": "support.function.perl" | |
} | |
}, | |
"end": "\\]", | |
"name": "string.regexp.find-m.nested_brackets.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "#nested_brackets_interpolated" | |
} | |
] | |
}, | |
{ | |
"begin": "(m)\\s*<", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"1": { | |
"name": "support.function.perl" | |
} | |
}, | |
"end": ">", | |
"name": "string.regexp.find-m.nested_ltgt.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "#nested_ltgt_interpolated" | |
} | |
] | |
}, | |
{ | |
"begin": "(m)\\s*\\(", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"1": { | |
"name": "support.function.perl" | |
} | |
}, | |
"end": "\\)", | |
"name": "string.regexp.find-m.nested_parens.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "#nested_parens_interpolated" | |
} | |
] | |
}, | |
{ | |
"begin": "(m)\\s*'", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"1": { | |
"name": "support.function.perl" | |
} | |
}, | |
"end": "'", | |
"name": "string.regexp.find-m.single-quote.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
} | |
] | |
}, | |
{ | |
"begin": "(?<!\\{|\\+|\\-)(m)(?!_)\\s*([^\\sa-zA-Z0-9'\\{\\[\\(\\<])", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"1": { | |
"name": "support.function.perl" | |
} | |
}, | |
"end": "\\2", | |
"name": "string.regexp.find-m.simple-delimiter.perl", | |
"patterns": [ | |
{ | |
"comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable", | |
"match": "\\$(?=[^\\sa-zA-Z0-9'\\{\\[\\(\\<])", | |
"name": "keyword.control.anchor.perl" | |
}, | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"begin": "\\[", | |
"beginCaptures": { | |
"1": { | |
"name": "punctuation.definition.character-class.begin.perl" | |
} | |
}, | |
"end": "\\]", | |
"endCaptures": { | |
"1": { | |
"name": "punctuation.definition.character-class.end.perl" | |
} | |
}, | |
"name": "constant.other.character-class.set.perl", | |
"patterns": [ | |
{ | |
"comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable", | |
"match": "\\$(?=[^\\s\\w'\\{\\[\\(\\<])", | |
"name": "keyword.control.anchor.perl" | |
}, | |
{ | |
"include": "#escaped_char" | |
} | |
] | |
}, | |
{ | |
"include": "#nested_parens_interpolated" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"applyEndPatternLast": 1, | |
"begin": "\\b(?=(?<!\\&)(s)(\\s+\\S|\\s*[;\\,\\{\\}\\(\\)\\[<]|$))", | |
"comment": "string.regexp.replace.perl", | |
"end": "((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\{\\}\\)\\]>]|\\s*$))", | |
"endCaptures": { | |
"1": { | |
"name": "string.regexp.replace.perl" | |
}, | |
"2": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"3": { | |
"name": "keyword.control.regexp-option.perl" | |
} | |
}, | |
"patterns": [ | |
{ | |
"begin": "(s)\\s*\\{", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"1": { | |
"name": "support.function.perl" | |
} | |
}, | |
"end": "\\}", | |
"name": "string.regexp.nested_braces.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#nested_braces" | |
} | |
] | |
}, | |
{ | |
"begin": "(s)\\s*\\[", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"1": { | |
"name": "support.function.perl" | |
} | |
}, | |
"end": "\\]", | |
"name": "string.regexp.nested_brackets.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#nested_brackets" | |
} | |
] | |
}, | |
{ | |
"begin": "(s)\\s*<", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"1": { | |
"name": "support.function.perl" | |
} | |
}, | |
"end": ">", | |
"name": "string.regexp.nested_ltgt.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#nested_ltgt" | |
} | |
] | |
}, | |
{ | |
"begin": "(s)\\s*\\(", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"1": { | |
"name": "support.function.perl" | |
} | |
}, | |
"end": "\\)", | |
"name": "string.regexp.nested_parens.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#nested_parens" | |
} | |
] | |
}, | |
{ | |
"begin": "\\{", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
} | |
}, | |
"end": "\\}", | |
"name": "string.regexp.format.nested_braces.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "#nested_braces_interpolated" | |
} | |
] | |
}, | |
{ | |
"begin": "\\[", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
} | |
}, | |
"end": "\\]", | |
"name": "string.regexp.format.nested_brackets.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "#nested_brackets_interpolated" | |
} | |
] | |
}, | |
{ | |
"begin": "<", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
} | |
}, | |
"end": ">", | |
"name": "string.regexp.format.nested_ltgt.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "#nested_ltgt_interpolated" | |
} | |
] | |
}, | |
{ | |
"begin": "\\(", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
} | |
}, | |
"end": "\\)", | |
"name": "string.regexp.format.nested_parens.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "#nested_parens_interpolated" | |
} | |
] | |
}, | |
{ | |
"begin": "'", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
} | |
}, | |
"end": "'", | |
"name": "string.regexp.format.single_quote.perl", | |
"patterns": [ | |
{ | |
"match": "\\\\['\\\\]", | |
"name": "constant.character.escape.perl" | |
} | |
] | |
}, | |
{ | |
"begin": "([^\\s\\w\\[({<;])", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
} | |
}, | |
"end": "\\1", | |
"name": "string.regexp.format.simple_delimiter.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
}, | |
{ | |
"match": "\\s+" | |
} | |
] | |
}, | |
{ | |
"begin": "\\b(?=s([^\\sa-zA-Z0-9\\[({<]).*\\1([egimosxradlupcn]*)([\\}\\)\\;\\,]|\\s+))", | |
"comment": "string.regexp.replaceXXX", | |
"end": "((([egimosxradlupcn]*)))(?=([\\}\\)\\;\\,]|\\s+|\\s*$))", | |
"endCaptures": { | |
"1": { | |
"name": "string.regexp.replace.perl" | |
}, | |
"2": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"3": { | |
"name": "keyword.control.regexp-option.perl" | |
} | |
}, | |
"patterns": [ | |
{ | |
"begin": "(s\\s*)([^\\sa-zA-Z0-9\\[({<])", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"1": { | |
"name": "support.function.perl" | |
} | |
}, | |
"end": "(?=\\2)", | |
"name": "string.regexp.replaceXXX.simple_delimiter.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
} | |
] | |
}, | |
{ | |
"begin": "'", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
} | |
}, | |
"end": "'", | |
"name": "string.regexp.replaceXXX.format.single_quote.perl", | |
"patterns": [ | |
{ | |
"match": "\\\\['\\\\]", | |
"name": "constant.character.escape.perl.perl" | |
} | |
] | |
}, | |
{ | |
"begin": "([^\\sa-zA-Z0-9\\[({<])", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
} | |
}, | |
"end": "\\1", | |
"name": "string.regexp.replaceXXX.format.simple_delimiter.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"begin": "\\b(?=(?<!\\\\)s\\s*([^\\s\\w\\[({<>]))", | |
"comment": "string.regexp.replace.extended", | |
"end": "((([egimosradlupc]*x[egimosradlupc]*)))\\b", | |
"endCaptures": { | |
"1": { | |
"name": "string.regexp.replace.perl" | |
}, | |
"2": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"3": { | |
"name": "keyword.control.regexp-option.perl" | |
} | |
}, | |
"patterns": [ | |
{ | |
"begin": "(s)\\s*(.)", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"1": { | |
"name": "support.function.perl" | |
} | |
}, | |
"end": "(?=\\2)", | |
"name": "string.regexp.replace.extended.simple_delimiter.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
} | |
] | |
}, | |
{ | |
"begin": "'", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
} | |
}, | |
"end": "'(?=[egimosradlupc]*x[egimosradlupc]*)\\b", | |
"name": "string.regexp.replace.extended.simple_delimiter.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
} | |
] | |
}, | |
{ | |
"begin": "(.)", | |
"captures": { | |
"0": { | |
"name": "punctuation.definition.string.perl" | |
} | |
}, | |
"end": "\\1(?=[egimosradlupc]*x[egimosradlupc]*)\\b", | |
"name": "string.regexp.replace.extended.simple_delimiter.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
} | |
] | |
}, | |
{ | |
"begin": "(?<=\\(|\\{|~|&|\\||if|unless|^)\\s*((\\/))", | |
"beginCaptures": { | |
"1": { | |
"name": "string.regexp.find.perl" | |
}, | |
"2": { | |
"name": "punctuation.definition.string.perl" | |
} | |
}, | |
"contentName": "string.regexp.find.perl", | |
"end": "((\\1([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))", | |
"endCaptures": { | |
"1": { | |
"name": "string.regexp.find.perl" | |
}, | |
"2": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"3": { | |
"name": "keyword.control.regexp-option.perl" | |
} | |
}, | |
"patterns": [ | |
{ | |
"comment": "This is to prevent thinks like /foo$/ to treat $/ as a variable", | |
"match": "\\$(?=\\/)", | |
"name": "keyword.control.anchor.perl" | |
}, | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "constant.other.key.perl" | |
} | |
}, | |
"match": "\\b(\\w+)\\s*(?==>)" | |
}, | |
{ | |
"match": "(?<={)\\s*\\w+\\s*(?=})", | |
"name": "constant.other.bareword.perl" | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "keyword.control.perl" | |
}, | |
"2": { | |
"name": "entity.name.type.class.perl" | |
} | |
}, | |
"match": "^\\s*(package)\\s+([^\\s;]+)", | |
"name": "meta.class.perl" | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "storage.type.sub.perl" | |
}, | |
"2": { | |
"name": "entity.name.function.perl" | |
}, | |
"3": { | |
"name": "storage.type.method.perl" | |
} | |
}, | |
"match": "\\b(sub)(?:\\s+([-a-zA-Z0-9_]+))?\\s*(?:\\([\\$\\@\\*;]*\\))?[^\\w\\{]", | |
"name": "meta.function.perl" | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "entity.name.function.perl" | |
}, | |
"2": { | |
"name": "punctuation.definition.parameters.perl" | |
}, | |
"3": { | |
"name": "variable.parameter.function.perl" | |
} | |
}, | |
"match": "^\\s*(BEGIN|UNITCHECK|CHECK|INIT|END|DESTROY)\\b", | |
"name": "meta.function.perl" | |
}, | |
{ | |
"begin": "^(?=(\\t| {4}))", | |
"end": "(?=[^\\t\\s])", | |
"name": "meta.leading-tabs", | |
"patterns": [ | |
{ | |
"captures": { | |
"1": { | |
"name": "meta.odd-tab" | |
}, | |
"2": { | |
"name": "meta.even-tab" | |
} | |
}, | |
"match": "(\\t| {4})(\\t| {4})?" | |
} | |
] | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "support.function.perl" | |
}, | |
"2": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"5": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"8": { | |
"name": "punctuation.definition.string.perl" | |
} | |
}, | |
"match": "\\b(tr|y)\\s*([^A-Za-z0-9\\s])(.*?)(?<!\\\\)(\\\\{2})*(\\2)(.*?)(?<!\\\\)(\\\\{2})*(\\2)", | |
"name": "string.regexp.replace.perl" | |
}, | |
{ | |
"match": "\\b(__FILE__|__LINE__|__PACKAGE__|__SUB__)\\b", | |
"name": "constant.language.perl" | |
}, | |
{ | |
"begin": "\\b(__DATA__|__END__)\\n?", | |
"beginCaptures": { | |
"1": { | |
"name": "constant.language.perl" | |
} | |
}, | |
"contentName": "comment.block.documentation.perl", | |
"end": "\\z", | |
"patterns": [ | |
{ | |
"include": "#pod" | |
} | |
] | |
}, | |
{ | |
"match": "(?<!->)\\b(continue|default|die|do|else|elsif|exit|for|foreach|given|goto|if|last|next|redo|return|select|unless|until|wait|when|while|switch|case|require|use|eval)\\b", | |
"name": "keyword.control.perl" | |
}, | |
{ | |
"match": "\\b(my|our|local)\\b", | |
"name": "storage.modifier.perl" | |
}, | |
{ | |
"match": "(?<!\\w)\\-[rwxoRWXOezsfdlpSbctugkTBMAC]\\b", | |
"name": "keyword.operator.filetest.perl" | |
}, | |
{ | |
"match": "\\b(and|or|xor|as|not)\\b", | |
"name": "keyword.operator.logical.perl" | |
}, | |
{ | |
"match": "(<=>|=>|->)", | |
"name": "keyword.operator.comparison.perl" | |
}, | |
{ | |
"begin": "(((<<) *\"HTML\"))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.doublequote.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "text.html.embedded.perl", | |
"end": "(^HTML$)", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "text.html.basic" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *\"XML\"))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.doublequote.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "text.xml.embedded.perl", | |
"end": "(^XML$)", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "text.xml" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *\"CSS\"))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.doublequote.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "text.css.embedded.perl", | |
"end": "(^CSS$)", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "source.css" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *\"JAVASCRIPT\"))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.doublequote.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "text.js.embedded.perl", | |
"end": "(^JAVASCRIPT$)", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "source.js" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *\"SQL\"))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.doublequote.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "source.sql.embedded.perl", | |
"end": "(^SQL$)", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "source.sql" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *\"POSTSCRIPT\"))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.doublequote.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "text.postscript.embedded.perl", | |
"end": "(^POSTSCRIPT$)", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "source.postscript" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *\"([^\"]*)\"))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.doublequote.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "string.unquoted.heredoc.doublequote.perl", | |
"end": "(^\\4$)", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *'HTML'))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.quote.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "text.html.embedded.perl", | |
"end": "(^HTML$)", | |
"patterns": [ | |
{ | |
"include": "text.html.basic" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *'XML'))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.quote.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "text.xml.embedded.perl", | |
"end": "(^XML$)", | |
"patterns": [ | |
{ | |
"include": "text.xml" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *'CSS'))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.quote.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "text.css.embedded.perl", | |
"end": "(^CSS$)", | |
"patterns": [ | |
{ | |
"include": "source.css" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *'JAVASCRIPT'))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.quote.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "text.js.embedded.perl", | |
"end": "(^JAVASCRIPT$)", | |
"patterns": [ | |
{ | |
"include": "source.js" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *'SQL'))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.quote.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "source.sql.embedded.perl", | |
"end": "(^SQL$)", | |
"patterns": [ | |
{ | |
"include": "source.sql" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *'POSTSCRIPT'))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.quote.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "source.postscript.embedded.perl", | |
"end": "(^POSTSCRIPT$)", | |
"patterns": [ | |
{ | |
"include": "source.postscript" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *'([^']*)'))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.quote.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "string.unquoted.heredoc.quote.perl", | |
"end": "(^\\4$)" | |
}, | |
{ | |
"begin": "(((<<) *\\\\((?![=\\d\\$\\( ])[^;,'\"`\\s\\)]*)))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.quote.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "string.unquoted.heredoc.quote.perl", | |
"end": "(^\\4$)" | |
}, | |
{ | |
"begin": "(((<<) *`([^`]*)`))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.backtick.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "string.unquoted.heredoc.backtick.perl", | |
"end": "(^\\4$)", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *HTML\\b))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "text.html.embedded.perl", | |
"end": "(^HTML$)", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "text.html.basic" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *XML\\b))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "text.xml.embedded.perl", | |
"end": "(^XML$)", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "text.xml" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *JAVASCRIPT\\b))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "source.js.embedded.perl", | |
"end": "(^JAVASCRIPT$)", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "source.js" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *SQL\\b))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "source.sql.embedded.perl", | |
"end": "(^SQL$)", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "source.sql" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *POSTSCRIPT\\b))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"4": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "source.postscript.embedded.perl", | |
"end": "(^POSTSCRIPT$)", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "source.postscript" | |
} | |
] | |
}, | |
{ | |
"begin": "(((<<) *((?![=\\d\\$\\( ])[^;,'\"`\\s\\)]*)))(.*)\\n?", | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.string.perl" | |
}, | |
"2": { | |
"name": "string.unquoted.heredoc.perl" | |
}, | |
"3": { | |
"name": "punctuation.definition.heredoc.perl" | |
}, | |
"5": { | |
"patterns": [ | |
{ | |
"include": "$self" | |
} | |
] | |
} | |
}, | |
"contentName": "string.unquoted.heredoc.perl", | |
"end": "(^\\4$)", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
}, | |
{ | |
"begin": "\\bqq\\s*([^\\(\\{\\[\\<\\w\\s])", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "\\1", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.quoted.other.qq.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
}, | |
{ | |
"begin": "\\bqx\\s*([^'\\(\\{\\[\\<\\w\\s])", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "\\1", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.interpolated.qx.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
}, | |
{ | |
"begin": "\\bqx\\s*'", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "'", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.interpolated.qx.single-quote.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
} | |
] | |
}, | |
{ | |
"begin": "\"", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "\"", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.quoted.double.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
}, | |
{ | |
"begin": "(?<!->)\\bqw?\\s*([^\\(\\{\\[\\<\\w\\s])", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "\\1", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.quoted.other.q.perl" | |
}, | |
{ | |
"begin": "'", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "'", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.quoted.single.perl", | |
"patterns": [ | |
{ | |
"match": "\\\\['\\\\]", | |
"name": "constant.character.escape.perl" | |
} | |
] | |
}, | |
{ | |
"begin": "`", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "`", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.interpolated.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
}, | |
{ | |
"begin": "(?<!->)\\bqq\\s*\\(", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "\\)", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.quoted.other.qq-paren.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#nested_parens_interpolated" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
}, | |
{ | |
"begin": "\\bqq\\s*\\{", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "\\}", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.quoted.other.qq-brace.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#nested_braces_interpolated" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
}, | |
{ | |
"begin": "\\bqq\\s*\\[", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "\\]", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.quoted.other.qq-bracket.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#nested_brackets_interpolated" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
}, | |
{ | |
"begin": "\\bqq\\s*\\<", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "\\>", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.quoted.other.qq-ltgt.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#nested_ltgt_interpolated" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
}, | |
{ | |
"begin": "(?<!->)\\bqx\\s*\\(", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "\\)", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.interpolated.qx-paren.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#nested_parens_interpolated" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
}, | |
{ | |
"begin": "\\bqx\\s*\\{", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "\\}", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.interpolated.qx-brace.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#nested_braces_interpolated" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
}, | |
{ | |
"begin": "\\bqx\\s*\\[", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "\\]", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.interpolated.qx-bracket.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#nested_brackets_interpolated" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
}, | |
{ | |
"begin": "\\bqx\\s*\\<", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "\\>", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.interpolated.qx-ltgt.perl", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#nested_ltgt_interpolated" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
}, | |
{ | |
"begin": "(?<!->)\\bqw?\\s*\\(", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "\\)", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.quoted.other.q-paren.perl", | |
"patterns": [ | |
{ | |
"include": "#nested_parens" | |
} | |
] | |
}, | |
{ | |
"begin": "\\bqw?\\s*\\{", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "\\}", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.quoted.other.q-brace.perl", | |
"patterns": [ | |
{ | |
"include": "#nested_braces" | |
} | |
] | |
}, | |
{ | |
"begin": "\\bqw?\\s*\\[", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "\\]", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.quoted.other.q-bracket.perl", | |
"patterns": [ | |
{ | |
"include": "#nested_brackets" | |
} | |
] | |
}, | |
{ | |
"begin": "\\bqw?\\s*\\<", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "\\>", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.quoted.other.q-ltgt.perl", | |
"patterns": [ | |
{ | |
"include": "#nested_ltgt" | |
} | |
] | |
}, | |
{ | |
"begin": "^__\\w+__", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.begin.perl" | |
} | |
}, | |
"end": "$", | |
"endCaptures": { | |
"0": { | |
"name": "punctuation.definition.string.end.perl" | |
} | |
}, | |
"name": "string.unquoted.program-block.perl" | |
}, | |
{ | |
"begin": "\\b(format)\\s+(\\w+)\\s*=", | |
"beginCaptures": { | |
"1": { | |
"name": "support.function.perl" | |
}, | |
"2": { | |
"name": "entity.name.function.format.perl" | |
} | |
}, | |
"end": "^\\.\\s*$", | |
"name": "meta.format.perl", | |
"patterns": [ | |
{ | |
"include": "#line_comment" | |
}, | |
{ | |
"include": "#variable" | |
} | |
] | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "support.function.perl" | |
}, | |
"2": { | |
"name": "entity.name.function.perl" | |
} | |
}, | |
"match": "\\b(x)\\s*(\\d+)\\b" | |
}, | |
{ | |
"match": "\\b(ARGV|DATA|ENV|SIG|STDERR|STDIN|STDOUT|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|cmp|connect|cos|crypt|dbmclose|dbmopen|defined|delete|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eq|eval|exec|exists|exp|fcntl|fileno|flock|fork|formline|ge|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|grep|gt|hex|import|index|int|ioctl|join|keys|kill|lc|lcfirst|le|length|link|listen|local|localtime|log|lstat|lt|m|map|mkdir|msgctl|msgget|msgrcv|msgsnd|ne|no|oct|open|opendir|ord|pack|pipe|pop|pos|print|printf|push|quotemeta|rand|read|readdir|readlink|recv|ref|rename|reset|reverse|rewinddir|rindex|rmdir|s|say|scalar|seek|seekdir|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|substr|symlink|syscall|sysopen|sysread|system|syswrite|tell|telldir|tie|tied|time|times|tr|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|utime|values|vec|waitpid|wantarray|warn|write|y)\\b", | |
"name": "support.function.perl" | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "punctuation.section.scope.begin.perl" | |
}, | |
"2": { | |
"name": "punctuation.section.scope.end.perl" | |
} | |
}, | |
"comment": "Match empty brackets for ↩ snippet", | |
"match": "(\\{)(\\})" | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "punctuation.section.scope.begin.perl" | |
}, | |
"2": { | |
"name": "punctuation.section.scope.end.perl" | |
} | |
}, | |
"comment": "Match empty parenthesis for ↩ snippet", | |
"match": "(\\()(\\))" | |
} | |
], | |
"repository": { | |
"escaped_char": { | |
"patterns": [ | |
{ | |
"match": "\\\\\\d+", | |
"name": "constant.character.escape.perl" | |
}, | |
{ | |
"match": "\\\\c[^\\s\\\\]", | |
"name": "constant.character.escape.perl" | |
}, | |
{ | |
"match": "\\\\g(?:\\{(?:\\w*|-\\d+)\\}|\\d+)", | |
"name": "constant.character.escape.perl" | |
}, | |
{ | |
"match": "\\\\k(?:\\{\\w*\\}|<\\w*>|'\\w*')", | |
"name": "constant.character.escape.perl" | |
}, | |
{ | |
"match": "\\\\N\\{[^\\}]*\\}", | |
"name": "constant.character.escape.perl" | |
}, | |
{ | |
"match": "\\\\o\\{\\d*\\}", | |
"name": "constant.character.escape.perl" | |
}, | |
{ | |
"match": "\\\\(?:p|P)(?:\\{\\w*\\}|P)", | |
"name": "constant.character.escape.perl" | |
}, | |
{ | |
"match": "\\\\x(?:[0-9a-zA-Z]{2}|\\{\\w*\\})?", | |
"name": "constant.character.escape.perl" | |
}, | |
{ | |
"match": "\\\\.", | |
"name": "constant.character.escape.perl" | |
} | |
] | |
}, | |
"line_comment": { | |
"patterns": [ | |
{ | |
"begin": "(^[ \\t]+)?(?=#)", | |
"beginCaptures": { | |
"1": { | |
"name": "punctuation.whitespace.comment.leading.perl" | |
} | |
}, | |
"end": "(?!\\G)", | |
"patterns": [ | |
{ | |
"begin": "#", | |
"beginCaptures": { | |
"0": { | |
"name": "punctuation.definition.comment.perl" | |
} | |
}, | |
"end": "\\n", | |
"name": "comment.line.number-sign.perl" | |
} | |
] | |
} | |
] | |
}, | |
"nested_braces": { | |
"begin": "\\{", | |
"captures": { | |
"1": { | |
"name": "punctuation.section.scope.perl" | |
} | |
}, | |
"end": "\\}", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#nested_braces" | |
} | |
] | |
}, | |
"nested_braces_interpolated": { | |
"begin": "\\{", | |
"captures": { | |
"1": { | |
"name": "punctuation.section.scope.perl" | |
} | |
}, | |
"end": "\\}", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "#nested_braces_interpolated" | |
} | |
] | |
}, | |
"nested_brackets": { | |
"begin": "\\[", | |
"captures": { | |
"1": { | |
"name": "punctuation.section.scope.perl" | |
} | |
}, | |
"end": "\\]", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#nested_brackets" | |
} | |
] | |
}, | |
"nested_brackets_interpolated": { | |
"begin": "\\[", | |
"captures": { | |
"1": { | |
"name": "punctuation.section.scope.perl" | |
} | |
}, | |
"end": "\\]", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "#nested_brackets_interpolated" | |
} | |
] | |
}, | |
"nested_ltgt": { | |
"begin": "<", | |
"captures": { | |
"1": { | |
"name": "punctuation.section.scope.perl" | |
} | |
}, | |
"end": ">", | |
"patterns": [ | |
{ | |
"include": "#nested_ltgt" | |
} | |
] | |
}, | |
"nested_ltgt_interpolated": { | |
"begin": "<", | |
"captures": { | |
"1": { | |
"name": "punctuation.section.scope.perl" | |
} | |
}, | |
"end": ">", | |
"patterns": [ | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "#nested_ltgt_interpolated" | |
} | |
] | |
}, | |
"nested_parens": { | |
"begin": "\\(", | |
"captures": { | |
"1": { | |
"name": "punctuation.section.scope.perl" | |
} | |
}, | |
"end": "\\)", | |
"patterns": [ | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#nested_parens" | |
} | |
] | |
}, | |
"nested_parens_interpolated": { | |
"begin": "\\(", | |
"captures": { | |
"1": { | |
"name": "punctuation.section.scope.perl" | |
} | |
}, | |
"end": "\\)", | |
"patterns": [ | |
{ | |
"comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable", | |
"match": "\\$(?=[^\\s\\w'\\{\\[\\(\\<])", | |
"name": "keyword.control.anchor.perl" | |
}, | |
{ | |
"include": "#escaped_char" | |
}, | |
{ | |
"include": "#variable" | |
}, | |
{ | |
"include": "#nested_parens_interpolated" | |
} | |
] | |
}, | |
"pod": { | |
"patterns": [ | |
{ | |
"match": "^=(pod|back|cut)\\b", | |
"name": "storage.type.class.pod.perl" | |
}, | |
{ | |
"begin": "^(=begin)\\s+(html)\\s*$", | |
"beginCaptures": { | |
"1": { | |
"name": "storage.type.class.pod.perl" | |
}, | |
"2": { | |
"name": "variable.other.pod.perl" | |
} | |
}, | |
"contentName": "text.embedded.html.basic", | |
"end": "^(=end)\\s+(html)|^(?==cut)", | |
"endCaptures": { | |
"1": { | |
"name": "storage.type.class.pod.perl" | |
}, | |
"2": { | |
"name": "variable.other.pod.perl" | |
} | |
}, | |
"name": "meta.embedded.pod.perl", | |
"patterns": [ | |
{ | |
"include": "text.html.basic" | |
} | |
] | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "storage.type.class.pod.perl" | |
}, | |
"2": { | |
"name": "variable.other.pod.perl", | |
"patterns": [ | |
{ | |
"include": "#pod-formatting" | |
} | |
] | |
} | |
}, | |
"match": "^(=(?:head[1-4]|item|over|encoding|begin|end|for))\\b\\s*(.*)" | |
}, | |
{ | |
"include": "#pod-formatting" | |
} | |
] | |
}, | |
"pod-formatting": { | |
"patterns": [ | |
{ | |
"captures": { | |
"1": { | |
"name": "markup.italic.pod.perl" | |
}, | |
"2": { | |
"name": "markup.italic.pod.perl" | |
} | |
}, | |
"match": "I(?:<([^<>]+)>|<+(\\s+(?:(?<!\\s)>|[^>])+\\s+)>+)", | |
"name": "entity.name.type.instance.pod.perl" | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "markup.bold.pod.perl" | |
}, | |
"2": { | |
"name": "markup.bold.pod.perl" | |
} | |
}, | |
"match": "B(?:<([^<>]+)>|<+(\\s+(?:(?<!\\s)>|[^>])+\\s+)>+)", | |
"name": "entity.name.type.instance.pod.perl" | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "markup.raw.pod.perl" | |
}, | |
"2": { | |
"name": "markup.raw.pod.perl" | |
} | |
}, | |
"match": "C(?:<([^<>]+)>|<+(\\\\s+(?:(?<!\\\\s)>|[^>])+\\\\s+)>+)", | |
"name": "entity.name.type.instance.pod.perl" | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "markup.underline.link.hyperlink.pod.perl" | |
} | |
}, | |
"match": "L<([^>]+)>", | |
"name": "entity.name.type.instance.pod.perl" | |
}, | |
{ | |
"match": "[EFSXZ]<[^>]*>", | |
"name": "entity.name.type.instance.pod.perl" | |
} | |
] | |
}, | |
"variable": { | |
"patterns": [ | |
{ | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.variable.perl" | |
} | |
}, | |
"match": "(\\$)&(?![A-Za-z0-9_])", | |
"name": "variable.other.regexp.match.perl" | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.variable.perl" | |
} | |
}, | |
"match": "(\\$)`(?![A-Za-z0-9_])", | |
"name": "variable.other.regexp.pre-match.perl" | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.variable.perl" | |
} | |
}, | |
"match": "(\\$)'(?![A-Za-z0-9_])", | |
"name": "variable.other.regexp.post-match.perl" | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.variable.perl" | |
} | |
}, | |
"match": "(\\$)\\+(?![A-Za-z0-9_])", | |
"name": "variable.other.regexp.last-paren-match.perl" | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.variable.perl" | |
} | |
}, | |
"match": "(\\$)\"(?![A-Za-z0-9_])", | |
"name": "variable.other.readwrite.list-separator.perl" | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.variable.perl" | |
} | |
}, | |
"match": "(\\$)0(?![A-Za-z0-9_])", | |
"name": "variable.other.predefined.program-name.perl" | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.variable.perl" | |
} | |
}, | |
"match": "(\\$)[_ab\\*\\.\\/\\|,\\\\;#%=\\-~^:?!\\$<>\\(\\)\\[\\]@](?![A-Za-z0-9_])", | |
"name": "variable.other.predefined.perl" | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.variable.perl" | |
} | |
}, | |
"match": "(\\$)[0-9]+(?![A-Za-z0-9_])", | |
"name": "variable.other.subpattern.perl" | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.variable.perl" | |
} | |
}, | |
"match": "([\\$\\@\\%](#)?)([a-zA-Zx7f-xff\\$]|::)([a-zA-Z0-9_x7f-xff\\$]|::)*\\b", | |
"name": "variable.other.readwrite.global.perl" | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.variable.perl" | |
}, | |
"2": { | |
"name": "punctuation.definition.variable.perl" | |
} | |
}, | |
"match": "(\\$\\{)(?:[a-zA-Zx7f-xff\\$]|::)(?:[a-zA-Z0-9_x7f-xff\\$]|::)*(\\})", | |
"name": "variable.other.readwrite.global.perl" | |
}, | |
{ | |
"captures": { | |
"1": { | |
"name": "punctuation.definition.variable.perl" | |
} | |
}, | |
"match": "([\\$\\@\\%](#)?)[0-9_]\\b", | |
"name": "variable.other.readwrite.global.special.perl" | |
} | |
] | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment