{ "scopeName": "source.perl6fe", "name": "Perl 6 FE", "fileTypes": [ "p6", "pl6", "pm6", "t", "t6", "pod6", "nqp" ], "patterns": [ { "begin": "^(=)(finish)", "beginCaptures": { "1": { "name": "storage.modifier.block.finish.perl6fe" }, "2": { "name": "keyword.operator.block.finish.perl6fe" } }, "contentName": "comment.block.finish.perl6fe", "patterns": [ { "include": "#comment-block-syntax" } ] }, { "include": "#comment-block-delimited" }, { "begin": "^(=)(?:(para)|(for)\\s+(\\w+))", "beginCaptures": { "1": { "name": "storage.modifier.block.paragraph.perl6fe" }, "2": { "name": "keyword.operator.block.paragraph.perl6fe" }, "3": { "name": "entity.other.attribute-name.paragraph.perl6fe" } }, "end": "^\\s*$", "contentName": "comment.block.paragraph.perl6fe", "patterns": [ { "include": "#comment-block-syntax" } ] }, { "include": "#comment-block-abbreviated" }, { "match": "^\\s*(#)([\\|\\=])(.*)\\n", "captures": { "1": { "name": "comment.punctuation.pound.perl6fe" }, "2": { "name": "meta.declarator.perl6fe" }, "3": { "name": "comment.inline.declarator.perl6fe" } }, "name": "meta.documentation.block.declarator.perl6fe" }, { "begin": "#`\\(", "end": "\\)", "name": "comment.multiline.hash-tick.parens.perl6fe", "patterns": [ { "begin": "\\(", "end": "\\)", "name": "comment.internal.parens.perl6fe" } ] }, { "begin": "#`\\[", "end": "\\]", "name": "comment.multiline.hash-tick.brackets.perl6fe", "patterns": [ { "begin": "\\[", "end": "\\]", "name": "comment.internal.brackets.perl6fe" } ] }, { "begin": "#`\\{", "end": "\\}", "name": "comment.multiline.hash-tick.braces.perl6fe", "patterns": [ { "begin": "\\{", "end": "\\}", "name": "comment.internal.braces.perl6fe" } ] }, { "begin": "#`\\「", "end": "\\」", "name": "comment.multiline.hash-tick.perl6fe", "patterns": [ { "begin": "\\「", "end": "\\」", "name": "comment.internal.parens.perl6fe" } ] }, { "begin": "(?)", "end": "(?)", "name": "string.array.words.perl6fe" }, { "begin": "(^[ \\t]+)?(?=#)", "beginCaptures": { "1": { "name": "punctuation.whitespace.comment.leading.perl6fe" } }, "end": "(?!\\G)", "patterns": [ { "begin": "#", "beginCaptures": { "0": { "name": "punctuation.definition.comment.perl6fe" } }, "end": "\\n", "name": "comment.line.number-sign.perl6fe" } ] }, { "match": "(?x) \\x{2208}|\\(elem\\)|\\x{2209}|\\!\\(elem\\)| \\x{220B}|\\(cont\\)|\\x{220C}|\\!\\(cont\\)| \\x{2286}|\\(<=\\) |\\x{2288}|\\!\\(<=\\) | \\x{2282}|\\(<\\) |\\x{2284}|\\!\\(<\\) | \\x{2287}|\\(>=\\) |\\x{2289}|\\!\\(>=\\) | \\x{2283}|\\(>\\) |\\x{2285}|\\!\\(>\\) | \\x{227C}|\\(<\\+\\)|\\x{227D}|\\(>\\+\\) | \\x{222A}|\\(\\|\\) |\\x{2229}|\\(&\\) | \\x{2216}|\\(\\-\\) |\\x{2296}|\\(\\^\\) | \\x{228D}|\\(\\.\\) |\\x{228E}|\\(\\+\\)", "name": "keyword.operator.setbagmix.perl6fe" }, { "captures": { "1": { "name": "storage.type.class.perl6fe" }, "3": { "name": "entity.name.type.class.perl6fe" } }, "match": "(?x) ( class|enum|grammar|knowhow|module| package|role|slang|subset|monitor|actor ) (\\s+) ( ( (?:::|')? (?: ([a-zA-Z_À-ÿ\\$]) ([a-zA-Z0-9_À-ÿ\\$]|[\\-'][a-zA-Z0-9_À-ÿ\\$])* ) )+ )", "name": "meta.class.perl6fe" }, { "include": "#p5_regex" }, { "begin": "(?x) (?<=^|[\\=,\\(\\[\\~]|when) \\s* (?:(m|rx)((?:(?>", "endCaptures": { "0": { "name": "punctuation.definition.string.perl6fe" } }, "contentName": "string.quoted.q.double.angle.perl6fe", "patterns": [ { "include": "#qq_angle_string_content" } ] }, { "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|qq|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*(\\(\\()", "beginCaptures": { "1": { "name": "string.quoted.q.operator.perl6fe" }, "2": { "name": "support.function.quote.adverb.perl6fe" }, "3": { "name": "punctuation.definition.string.perl6fe" } }, "end": "\\)\\)", "endCaptures": { "0": { "name": "punctuation.definition.string.perl6fe" } }, "contentName": "string.quoted.q.double.paren.perl6fe", "patterns": [ { "include": "#qq_paren_string_content" } ] }, { "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|qq|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*(\\[\\[)", "beginCaptures": { "1": { "name": "string.quoted.q.operator.perl6fe" }, "2": { "name": "support.function.quote.adverb.perl6fe" }, "3": { "name": "punctuation.definition.string.perl6fe" } }, "end": "\\]\\]", "endCaptures": { "0": { "name": "punctuation.definition.string.perl6fe" } }, "contentName": "string.quoted.q.double.bracket.perl6fe", "patterns": [ { "include": "#qq_bracket_string_content" } ] }, { "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|qq|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*({)", "beginCaptures": { "1": { "name": "string.quoted.q.operator.perl6fe" }, "2": { "name": "support.function.quote.adverb.perl6fe" }, "3": { "name": "punctuation.definition.string.perl6fe" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.definition.string.perl6fe" } }, "contentName": "string.quoted.q.single.brace.perl6fe", "patterns": [ { "include": "#qq_brace_string_content" } ] }, { "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|qq|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*(<)", "beginCaptures": { "1": { "name": "string.quoted.q.operator.perl6fe" }, "2": { "name": "support.function.quote.adverb.perl6fe" }, "3": { "name": "punctuation.definition.string.perl6fe" } }, "end": ">", "endCaptures": { "0": { "name": "punctuation.definition.string.perl6fe" } }, "contentName": "string.quoted.q.single.angle.perl6fe", "patterns": [ { "include": "#qq_angle_string_content" } ] }, { "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|qq|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*(/)", "beginCaptures": { "1": { "name": "string.quoted.q.operator.perl6fe" }, "2": { "name": "support.function.quote.adverb.perl6fe" }, "3": { "name": "punctuation.definition.string.perl6fe" } }, "end": "/", "endCaptures": { "0": { "name": "punctuation.definition.string.perl6fe" } }, "contentName": "string.quoted.q.single.slash.perl6fe", "patterns": [ { "include": "#qq_slash_string_content" } ] }, { "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|qq|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*(\\()", "beginCaptures": { "1": { "name": "string.quoted.q.operator.perl6fe" }, "2": { "name": "support.function.quote.adverb.perl6fe" }, "3": { "name": "punctuation.definition.string.perl6fe" } }, "end": "\\)", "endCaptures": { "0": { "name": "punctuation.definition.string.perl6fe" } }, "contentName": "string.quoted.q.single.paren.perl6fe", "patterns": [ { "include": "#qq_paren_string_content" } ] }, { "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|qq|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*(\\[)", "beginCaptures": { "1": { "name": "string.quoted.q.operator.perl6fe" }, "2": { "name": "support.function.quote.adverb.perl6fe" }, "3": { "name": "punctuation.definition.string.perl6fe" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.definition.string.perl6fe" } }, "contentName": "string.quoted.q.single.bracket.perl6fe", "patterns": [ { "include": "#qq_bracket_string_content" } ] }, { "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|qq|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*(')", "beginCaptures": { "1": { "name": "string.quoted.q.operator.perl6fe" }, "2": { "name": "support.function.quote.adverb.perl6fe" }, "3": { "name": "punctuation.definition.string.perl6fe" } }, "end": "'", "endCaptures": { "0": { "name": "punctuation.definition.string.perl6fe" } }, "contentName": "string.quoted.q.single.apostrophe.perl6fe", "patterns": [ { "include": "#qq_single_string_content" } ] }, { "begin": "(?x) (q{1,2}(?:x|w|ww|v|s|a|h|f|c|b|p)?|Q) ((?: \\s*:(?: x|exec|w|words|ww|quotewords|v|val|q|single|qq|double| s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash| regexp|substr|trans|codes|p|path ) )*) \\s*(\")", "beginCaptures": { "1": { "name": "string.quoted.q.operator.perl6fe" }, "2": { "name": "support.function.quote.adverb.perl6fe" }, "3": { "name": "punctuation.definition.string.perl6fe" } }, "end": "\"", "endCaptures": { "0": { "name": "punctuation.definition.string.perl6fe" } }, "contentName": "string.quoted.q.single.quote.perl6fe", "patterns": [ { "include": "#qq_double_string_content" } ] }, { "match": "\\b\\$\\w+\\b", "name": "variable.other.perl6fe" }, { "match": "(?x)\\b(?)", "beginCaptures": { "1": { "name": "storage.type.declare.regexp.named.perl6fe" } }, "end": "(?)(?=[\\s\\{])", "contentName": "string.array.words.perl6fe" }, { "begin": "\\(", "end": "(?\\=\\~])", "name": "storage.modifier.assignment.perl6fe" }, { "match": "\\b(for|loop|repeat|while|until|gather|given)(?!\\-)\\b", "name": "keyword.control.repeat.perl6fe" }, { "match": "(?x)\\b(? | => | -> | \\+\\| | \\+\\+ | -- | \\*\\* | \\?\\?\\? | \\?\\? | \\!\\!\\! | \\!\\! | && | \\+\\^ | \\?\\^ | %% | \\+& | \\+< | \\+> | \\+\\^ | \\.\\.(?!\\.) | \\.\\.\\^ | \\^\\.\\. | \\^\\.\\.\\^ | \\?\\| | !=(?!\\=) | !==(?!\\=) | <=(?!>) | >= | === | == | =:= | ~~ | \\x{2245} | \\|\\| | \\^\\^ | \\/\\/ | := | ::= | \\.\\.\\.", "name": "keyword.operator.multi-symbol.perl6fe" }, { "include": "#special_variables" }, { "include": "#variables" }, { "match": "(?x)\\b(?)", "name": "support.function.perl6fe" }, { "match": "(?x) (?<\\*\\!\\?~\\/\\|]| (?", "endCaptures": { "0": { "name": "punctuation.definition.radix.perl6fe" } }, "contentName": "constant.numeric.perl6fe" }, { "begin": "\\{", "beginCaptures": { "0": { "name": "punctuation.definition.block.perl6fe" } }, "end": "\\}", "endCaptures": { "0": { "name": "punctuation.definition.block.perl6fe" } }, "name": "meta.block.perl6fe", "patterns": [ { "include": "$self" } ] } ], "repository": { "numbers": { "patterns": [ { "match": "(?<=[=,;\\^\\s\\{\\[\\(\\/]|\\.\\.)0[bodx]\\w+", "name": "constant.numeric.radix.perl6fe" }, { "match": "(?x) (?<=[=,;\\^\\s\\{\\[\\(\\/]|\\.\\.) (?:[\\+\\-])? (?: \\d+ (?:[\\_\\d]+\\d)? ) (?: \\. \\d+ (?:[\\_\\d]+\\d)? )? (?: e \\d+ (?:[\\_\\d]+\\d)? )?", "name": "constant.numeric.perl6fe" } ] }, "comment-block-delimited": { "patterns": [ { "begin": "^(=)(begin)\\s+(\\w+)", "end": "^(=)(end)\\s+(\\w+)", "captures": { "1": { "name": "storage.modifier.block.delimited.perl6fe" }, "2": { "name": "keyword.operator.block.delimited.perl6fe" }, "3": { "name": "entity.other.attribute-name.block.delimited.perl6fe" } }, "contentName": "comment.block.delimited.perl6fe", "patterns": [ { "include": "#comment-block-syntax" } ] } ] }, "comment-block-abbreviated": { "patterns": [ { "match": "^(=)(\\w+)\\s+(.+)$", "captures": { "1": { "name": "storage.modifier.block.abbreviated.perl6fe" }, "2": { "name": "entity.other.attribute-name.block.abbreviated.perl6fe" }, "3": { "name": "entity.name.section.abbreviated.perl6fe" } }, "name": "meta.block.abbreviated.perl6fe" } ] }, "shellquotes": { "patterns": [ { "begin": "(qx)\\s*({{)", "beginCaptures": { "1": { "name": "string.quoted.q.shell.operator.perl6fe" }, "2": { "name": "punctuation.section.embedded.shell.begin.perl6fe" } }, "end": "}}", "endCaptures": { "0": { "name": "punctuation.section.embedded.shell.begin.perl6fe" } }, "name": "meta.shell.quote.single.perl6fe", "patterns": [ { "include": "source.shell" } ] }, { "begin": "(qx)\\s*({)", "beginCaptures": { "1": { "name": "string.quoted.q.shell.operator.perl6fe" }, "2": { "name": "punctuation.section.embedded.shell.begin.perl6fe" } }, "end": "}", "endCaptures": { "0": { "name": "punctuation.section.embedded.shell.begin.perl6fe" } }, "name": "meta.shell.quote.single.perl6fe", "patterns": [ { "include": "source.shell" } ] }, { "begin": "(qx)\\s*(\\[\\[)", "beginCaptures": { "1": { "name": "string.quoted.q.shell.operator.perl6fe" }, "2": { "name": "punctuation.section.embedded.shell.begin.perl6fe" } }, "end": "\\]\\]", "endCaptures": { "0": { "name": "punctuation.section.embedded.shell.begin.perl6fe" } }, "name": "meta.shell.quote.single.perl6fe", "patterns": [ { "include": "source.shell" } ] }, { "begin": "(qx)\\s*(\\[)", "beginCaptures": { "1": { "name": "string.quoted.q.shell.operator.perl6fe" }, "2": { "name": "punctuation.section.embedded.shell.begin.perl6fe" } }, "end": "\\]", "endCaptures": { "0": { "name": "punctuation.section.embedded.shell.begin.perl6fe" } }, "name": "meta.shell.quote.single.perl6fe", "patterns": [ { "include": "source.shell" } ] }, { "begin": "(qx)\\s*(\\|)", "beginCaptures": { "1": { "name": "string.quoted.q.shell.operator.perl6fe" }, "2": { "name": "punctuation.section.embedded.shell.begin.perl6fe" } }, "end": "\\|", "endCaptures": { "0": { "name": "punctuation.section.embedded.shell.begin.perl6fe" } }, "name": "meta.shell.quote.single.perl6fe", "patterns": [ { "include": "source.shell" } ] }, { "begin": "(qx)\\s*(\\/)", "beginCaptures": { "1": { "name": "string.quoted.q.shell.operator.perl6fe" }, "2": { "name": "punctuation.section.embedded.shell.begin.perl6fe" } }, "end": "(?)", "captures": { "1": { "name": "support.function.pod.link.perl6fe" }, "2": { "name": "punctuation.section.embedded.pod.link.perl6fe" }, "3": { "name": "entity.name.type.pod.link.perl6fe" }, "4": { "name": "punctuation.section.embedded.pod.link.perl6fe" }, "5": { "name": "markup.underline.link.pod.perl6fe" }, "6": { "name": "punctuation.section.embedded.pod.link.perl6fe" } }, "name": "meta.pod.l.perl6fe" }, { "match": "([CKT])(?:(\\<\\<)(.+?)(\\>\\>)|(\\<)(.+?)(\\>))", "captures": { "1": { "name": "support.function.pod.code.perl6fe" }, "2": { "name": "punctuation.section.embedded.pod.code.perl6fe" }, "3": { "name": "markup.raw.code.perl6fe" }, "4": { "name": "punctuation.section.embedded.pod.code.perl6fe" }, "5": { "name": "punctuation.section.embedded.pod.code.perl6fe" }, "6": { "name": "markup.raw.code.perl6fe" }, "7": { "name": "punctuation.section.embedded.pod.code.perl6fe" } }, "name": "meta.pod.c.perl6fe" }, { "match": "(U)(\\<)(.+?)(\\>)", "captures": { "1": { "name": "support.function.pod.code.perl6fe" }, "2": { "name": "punctuation.section.embedded.pod.code.perl6fe" }, "3": { "name": "markup.underline.perl6fe" }, "4": { "name": "punctuation.section.embedded.pod.code.perl6fe" } }, "name": "meta.pod.c.perl6fe" }, { "match": "(I)(\\<)(.+?)(\\>)", "captures": { "1": { "name": "support.function.pod.code.perl6fe" }, "2": { "name": "punctuation.section.embedded.pod.code.perl6fe" }, "3": { "name": "markup.italic.perl6fe" }, "4": { "name": "punctuation.section.embedded.pod.code.perl6fe" } }, "name": "meta.pod.c.perl6fe" }, { "match": "(B)(\\<)(.+?)(\\>)", "captures": { "1": { "name": "support.function.pod.code.perl6fe" }, "2": { "name": "punctuation.section.embedded.pod.code.perl6fe" }, "3": { "name": "markup.bold.perl6fe" }, "4": { "name": "punctuation.section.embedded.pod.code.perl6fe" } }, "name": "meta.pod.c.perl6fe" } ] }, "heredocs": { "patterns": [ { "begin": "(?x) (?: ([qQ](?!/)|qq|qw|qww|qx|qqx) \\s* ((?:\\s*:\\w+)*\\s*:(?:to|heredoc))\\s* | (qto|qqto|Qto) \\s* ((?:\\s*:\\w+)*)\\s* ) /(\\w+)/", "beginCaptures": { "1": { "name": "string.quoted.construct.perl6fe" }, "2": { "name": "support.function.adverb.perl6fe" }, "3": { "name": "string.quoted.construct.perl6fe" }, "4": { "name": "support.function.adverb.perl6fe" }, "5": { "name": "entity.other.attribute-name.heredoc.delimiter.perl6fe" } }, "end": "\\s*\\5", "endCaptures": { "0": { "name": "entity.other.attribute-name.heredoc.delimiter.perl6fe" } }, "patterns": [ { "begin": "(?<=/)", "end": "\\n", "patterns": [ { "include": "$self" } ], "name": "meta.heredoc.continuation.perl6fe" }, { "match": "^(?:.|\\n)*$", "name": "string.quoted.heredoc.perl6fe" } ], "name": "meta.heredoc.perl6fe" } ] }, "p5_regex": { "patterns": [ { "begin": "(?x)(?|'\\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" } ] }, "special_variables": { "patterns": [ { "match": "(?x) [\\$\\@](?=[\\s,;\\{\\[\\(])| (?<=[\\(\\,])\\s*%(?![\\w\\*\\!\\?\\.\\^:=~])| \\$_| \\$\\/| \\$\\!(?!\\w)| \\$\\d(?!\\w)", "name": "keyword.other.special-method.perl6fe" } ] }, "variables": { "patterns": [ { "begin": "\\$(?=\\<)", "beginCaptures": { "0": { "name": "variable.other.identifier.sigil.regexp.perl6" } }, "end": "(?![\\w\\<\\>])", "name": "meta.match.variable.perl6fe", "patterns": [ { "match": "(\\<)([\\w\\-]+)(\\>)", "captures": { "1": { "name": "support.class.match.name.delimiter.regexp.perl6fe" }, "2": { "name": "variable.other.identifier.regexp.perl6" }, "3": { "name": "support.class.match.name.delimiter.regexp.perl6fe" } } } ] }, { "match": "(?x) (\\$|@|%|&) (\\.|\\*|:|!|\\^|~|=|\\?)? ( (?:[a-zA-Z]) (?: [a-zA-Z0-9_À-ÿ\\$]| [\\-'][a-zA-Z_À-ÿ\\$] )* )", "captures": { "1": { "name": "variable.other.identifier.sigil.perl6fe" }, "2": { "name": "support.class.twigil.perl6fe" }, "3": { "name": "variable.other.identifier.perl6fe" } }, "name": "meta.variable.container.perl6fe" } ] }, "interpolation": { "patterns": [ { "match": "(?x)(?", "patterns": [ { "include": "#qq_angle_string_content" } ] }, "qq_brace_string_content": { "begin": "{", "end": "}", "patterns": [ { "include": "#qq_brace_string_content" } ] }, "qq_bracket_string_content": { "begin": "\\[", "end": "\\]", "patterns": [ { "include": "#qq_bracket_string_content" } ] }, "qq_double_string_content": { "begin": "\"", "end": "\"", "patterns": [ { "include": "#qq_double_string_content" } ] }, "qq_paren_string_content": { "begin": "\\(", "end": "\\)", "patterns": [ { "include": "#qq_paren_string_content" } ] }, "qq_single_string_content": { "begin": "'", "end": "'", "patterns": [ { "include": "#qq_single_string_content" } ] }, "qq_slash_string_content": { "begin": "\\\\/", "end": "\\\\/", "patterns": [ { "include": "#qq_slash_string_content" } ] } } }