{ "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" } ], "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": "%" } ] } } }