{"name":"Parrot PIR","scopeName":"source.parrot.pir","patterns":[{"name":"string.quoted.double.pir","begin":"\"","end":"\"","patterns":[{"name":"constant.character.escape.pir","match":"\\\\."}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.pir"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.pir"}}},{"name":"string.quoted.single.pir","begin":"'","end":"'","patterns":[{"name":"constant.character.escape.pir","match":"\\\\."}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.pir"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.pir"}}},{"name":"support.function.pir","match":"\\b(print|save|restore)\\b"},{"name":"keyword.control.pir","match":"(if|unless|goto|\\.return|\\.end|\\.emit|\\.eot)"},{"name":"keyword.control.pcc.pir","match":"(\\.(pcc_begin|pcc_end|pcc_call|nci_call|invocant|meth_call|arg|result|pcc_begin_return|pcc_end_return|pcc_begin_yield|pcc_end_yield|yield))"},{"name":"variable.other.register.pir","match":"([SNIP]\\d+)"},{"name":"variable.other.register.symbolic.pir","match":"(\\$[SNIP]\\d+)"},{"name":"keyword.other.label.pir","match":"^\\s*(\\S+:)\\s*"},{"name":"storage.type.pir","match":"(int|float|string|pmc|array|\\.Array|\\.Sub)"},{"name":"storage.type.pir","match":"\\.(namespace|endnamespace)"},{"name":"storage.modifier.pir","match":"\\.(local|arg|lex|param|global|const)"},{"name":"keyword.operator.unary.pir","match":"!|-|~"},{"name":"meta.function.pir","match":"(?x)\n\t\t\t\t\\s* (\\.sub) \\s+ ([_a-zA-Z](?:[_a-zA-Z0-9]+)?)\n\t\t\t\t(?:\\s+\n\t\t\t\t\t(?: (:(?:load|init|immediate|postcomp|main|anon|lex)) #sub_pragma\n\t\t\t\t\t| (:vtable \\s* (?: \\(\"\\S+\"\\) )? ) #vtable_pragma\n\t\t\t\t\t| (:multi  \\s* (?: \\( \\))? ) #multi_pragma\n\t\t\t\t\t| (:outer  \\s* (?: \\( \\))? ) #outer_pragma\n\t\t\t\t\t)\\s+\n\t\t\t\t)*","captures":{"1":{"name":"storage.type.sub.pir"},"2":{"name":"entity.name.function.pir"},"3":{"name":"keyword.other.sub_pragma.pir"},"4":{"name":"keyword.other.vtable_pragma.pir"},"5":{"name":"keyword.other.multi_pragma.pir"},"6":{"name":"keyword.other.outer_pragma.pir"}}},{"name":"keyword.operator.binary.pir","match":"\\+|-|/|\\*\\*|\\*|%|\u003c\u003c|\u003e\u003e|\u003c\u003e|\u0026\u0026|\\|\\||~~|\\||\u0026|~|\\."},{"name":"keyword.operator.assign.pir","match":"\\+=|-=|\\=|%=|\\*=|\\.=|\u0026=|\\|=|~=|\u003c\u003c=|\u003e\u003e=|\u003c\u003e="},{"begin":"(^[ \\t]+)?(?=#)","end":"(?!\\G)","patterns":[{"name":"comment.line.number-sign.pir","begin":"#","end":"\\n","beginCaptures":{"0":{"name":"punctuation.definition.comment.pir"}}}],"beginCaptures":{"1":{"name":"punctuation.whitespace.comment.leading.pir"}}},{"name":"variable.other.identifier.pir","match":"\\b([_a-zA-Z]([_a-zA-Z0-9]+)?)\\b"}]}
