{"name":"GAP","scopeName":"source.gap","patterns":[{"name":"invalid.illegal.end-statement.gap","match":"^\\s*(end|fi|od)$"},{"name":"comment.line.gap","begin":"#","end":"$\\n?","patterns":[{"name":"punctuation.separator.continuation.gap","match":"(?\u003e\\\\\\s*\\n)"}],"beginCaptures":{"0":{"name":"punctuation.definition.comment.gap"}}},{"name":"support.function.statement","match":"\\b(local|quit|QUIT|rec|IsBound|Unbind|TryNextMethod|Info|Assert|SaveWorkspace)\\b"},{"name":"storage.type","match":"(\\[(\\*|)|(\\*|)\\]|\\{|\\})"},{"name":"keyword.operator","match":"\\b(in|and|or|not|mod|div)\\b|\\-\u003e|\\+|\\-|\\*|\\/|\\^|\\~|\\!\\.|\\=|\u003c\u003e|\u003c|\u003e|\\.\\.|:"},{"name":"keyword.control","match":"\\b(if|then|elif|else|while|for|return|where|do|case|when|repeat|until|break|continue|fi|od|atomic|readonly|readwrite)\\b"},{"name":"meta.function.gap","begin":"(\\b(function)\\b\\b([A-Za-z_][A-Za-z0-9_]*)?|(\\b([A-Za-z_][A-Za-z0-9_]*)\\b\\s*(:=)\\s*\\b(function|procedure)\\b))\\s*\\(([^\\)]*)\\)","end":"\\bend\\b","patterns":[{"include":"$base"}],"beginCaptures":{"2":{"name":"keyword.function.gap"},"3":{"name":"entity.name.function.gap"},"5":{"name":"entity.name.function.gap"},"6":{"name":"keyword.operator"},"7":{"name":"keyword.function.gap"},"8":{"name":"variable"}},"endCaptures":{"0":{"name":"keyword.function.gap"}}},{"name":"constant.language.gap","match":"\\b(true|false|fail)\\b"},{"name":"constant.numeric.gap","match":"\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b"},{"name":"string.quoted.double.gap","begin":"\"","end":"\"","patterns":[{"include":"#string_escaped_char"},{"include":"#string_placeholder"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.gap"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.gap"}}},{"name":"string.quoted.single.gap","begin":"'","end":"'","patterns":[{"include":"#string_escaped_char"}],"beginCaptures":{"0":{"name":"punctuation.definition.string.begin.gap"}},"endCaptures":{"0":{"name":"punctuation.definition.string.end.gap"}}},{"name":"support.function"},{"name":"support.function"},{"name":"support.function"}],"repository":{"string_escaped_char":{"patterns":[{"name":"constant.character.escape.gap","match":"\\\\(\\\\|[abefnprtv'\"?]|[0-3]\\d{0,2}|[4-7]\\d?|x[a-fA-F0-9]{0,2})"},{"name":"invalid.illegal.unknown-escape.gap","match":"\\\\."}]},"string_placeholder":{"patterns":[{"name":"constant.other.placeholder.c","match":"(?x)%\n    \t\t\t\t\t\t(\\d+\\$)?                             # field (argument #)\n    \t\t\t\t\t\t[#0\\- +']*                           # flags\n    \t\t\t\t\t\t[,;:_]?                              # separator character (AltiVec)\n    \t\t\t\t\t\t((-?\\d+)|\\*(-?\\d+\\$)?)?              # minimum field width\n    \t\t\t\t\t\t(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)?         # precision\n    \t\t\t\t\t\t(hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\n    \t\t\t\t\t\t[diouxXDOUeEfFgGaACcSspn%]           # conversion type\n    \t\t\t\t\t"},{"name":"invalid.illegal.placeholder.c","match":"%"}]}}}
