| 1 |
{ |
| 2 |
"fileTypes": ["abap", "ABAP"], |
| 3 |
"foldingStartMarker": "/\\*\\*|\\{\\s*$", |
| 4 |
"foldingStopMarker": "\\*\\*/|^\\s*\\}", |
| 5 |
"keyEquivalent": "^~A", |
| 6 |
"name": "abap", |
| 7 |
"patterns": [ |
| 8 |
{ |
| 9 |
"captures": { |
| 10 |
"1": { |
| 11 |
"name": "punctuation.definition.comment.abap" |
| 12 |
} |
| 13 |
}, |
| 14 |
"match": "^\\*.*\\n?", |
| 15 |
"name": "comment.line.full.abap" |
| 16 |
}, |
| 17 |
{ |
| 18 |
"captures": { |
| 19 |
"1": { |
| 20 |
"name": "punctuation.definition.comment.abap" |
| 21 |
} |
| 22 |
}, |
| 23 |
"match": "\".*\\n?", |
| 24 |
"name": "comment.line.partial.abap" |
| 25 |
}, |
| 26 |
{ |
| 27 |
"match": "(?<![^\\s])##.*?(?=([\\.:,\\s]))", |
| 28 |
"name": "comment.line.pragma.abap" |
| 29 |
}, |
| 30 |
{ |
| 31 |
"match": "(?i)(?<=(?:^|\\s|~|->|-|=>))([a-z_/][a-z_0-9/]*)(?=\\s+(?:=|\\+=|-=|\\*=|\\/=|&&=)\\s+)", |
| 32 |
"name": "variable.other.abap" |
| 33 |
}, |
| 34 |
{ |
| 35 |
"match": "\\b[0-9]+(\\b|\\.|,)", |
| 36 |
"name": "constant.numeric.abap" |
| 37 |
}, |
| 38 |
{ |
| 39 |
"match": "(?ix)(^|\\s+)((PUBLIC|PRIVATE|PROTECTED)\\sSECTION)(?=\\s+|:|\\.)", |
| 40 |
"name": "storage.modifier.class.abap" |
| 41 |
}, |
| 42 |
{ |
| 43 |
"begin": "(?<!\\\\)(\\|)(.*?)", |
| 44 |
"end": "(?<!\\\\)(\\||(\\\\\\\\\\|))", |
| 45 |
"name": "string.interpolated.abap", |
| 46 |
"beginCaptures": { |
| 47 |
"1": { |
| 48 |
"name": "constant.character.escape.abap" |
| 49 |
} |
| 50 |
}, |
| 51 |
"endCaptures": { |
| 52 |
"1": { |
| 53 |
"name": "constant.character.escape.abap" |
| 54 |
} |
| 55 |
}, |
| 56 |
"patterns": [ |
| 57 |
{ |
| 58 |
"match": "({ )|( })", |
| 59 |
"name": "constant.character.escape" |
| 60 |
}, |
| 61 |
{ |
| 62 |
"match": "(?<={ ).*?(?= })", |
| 63 |
"name": "variable.other.abap" |
| 64 |
}, |
| 65 |
{ |
| 66 |
"match": "\\\\\\|", |
| 67 |
"name": "constant.character.escape.abap" |
| 68 |
} |
| 69 |
] |
| 70 |
}, |
| 71 |
{ |
| 72 |
"begin": "'", |
| 73 |
"end": "'", |
| 74 |
"name": "string.quoted.single.abap", |
| 75 |
"patterns": [ |
| 76 |
{ |
| 77 |
"match": "''", |
| 78 |
"name": "constant.character.escape.abap" |
| 79 |
} |
| 80 |
] |
| 81 |
}, |
| 82 |
{ |
| 83 |
"begin": "`", |
| 84 |
"end": "`", |
| 85 |
"name": "string.quoted.single.abap", |
| 86 |
"patterns": [ |
| 87 |
{ |
| 88 |
"match": "``", |
| 89 |
"name": "constant.character.escape.abap" |
| 90 |
} |
| 91 |
] |
| 92 |
}, |
| 93 |
{ |
| 94 |
"begin": "(?i)^\\s*(class)\\s([a-z_/][a-z_0-9/]*)", |
| 95 |
"beginCaptures": { |
| 96 |
"1": { |
| 97 |
"name": "storage.type.block.abap" |
| 98 |
}, |
| 99 |
"2": { |
| 100 |
"name": "entity.name.type.block.abap" |
| 101 |
} |
| 102 |
}, |
| 103 |
"end": "\\s*\\.\\s*\\n?", |
| 104 |
"name": "meta.block.begin.implementation.abap", |
| 105 |
"patterns": [ |
| 106 |
{ |
| 107 |
"match": "(?ix)(^|\\s+)(definition|implementation|public|inheriting\\s+from|final|deferred|abstract|shared\\s+memory\\s+enabled|(global|local)*\\s*friends|(create\\s+(public|protected|private))|for\\s+testing|risk\\s+level\\s+(critical|dangerous|harmless))|duration\\s(short|medium|long)(?=\\s+|\\.)", |
| 108 |
"name": "storage.modifier.class.abap" |
| 109 |
}, |
| 110 |
{ |
| 111 |
"begin": "(?=[A-Za-z_][A-Za-z0-9_]*)", |
| 112 |
"contentName": "entity.name.type.block.abap", |
| 113 |
"end": "(?![A-Za-z0-9_])", |
| 114 |
"patterns": [ |
| 115 |
{ |
| 116 |
"include": "#generic_names" |
| 117 |
} |
| 118 |
] |
| 119 |
} |
| 120 |
] |
| 121 |
}, |
| 122 |
{ |
| 123 |
"begin": "(?ix)^\\s*(method)\\s(?:([a-z_\\/][a-z_0-9\\/]*)~)?([a-z_\\/][a-z_0-9\\/]*)", |
| 124 |
"beginCaptures": { |
| 125 |
"1": { |
| 126 |
"name": "storage.type.block.abap" |
| 127 |
}, |
| 128 |
"2": { |
| 129 |
"name": "entity.name.type.abap" |
| 130 |
}, |
| 131 |
"3": { |
| 132 |
"name": "entity.name.function.abap" |
| 133 |
} |
| 134 |
}, |
| 135 |
"end": "\\s*\\.\\s*\\n?", |
| 136 |
"patterns": [ |
| 137 |
{ |
| 138 |
"match": "(?ix)(?<=^|\\s)(BY\\s+DATABASE(\\s+PROCEDURE|\\s+FUNCTION|\\s+GRAPH\\s+WORKSPACE))(?=\\s+|\\.)", |
| 139 |
"name": "storage.modifier.method.abap" |
| 140 |
}, |
| 141 |
{ |
| 142 |
"match": "(?ix)(?<=^|\\s)(FOR\\s+(HDB|LLANG))(?=\\s+|\\.)", |
| 143 |
"name": "storage.modifier.method.abap" |
| 144 |
}, |
| 145 |
{ |
| 146 |
"match": "(?ix)(?<=\\s)(OPTIONS\\s+(READ-ONLY|DETERMINISTIC|SUPPRESS\\s+SYNTAX\\s+ERRORS))(?=\\s+|\\.)", |
| 147 |
"name": "storage.modifier.method.abap" |
| 148 |
}, |
| 149 |
{ |
| 150 |
"match": "(?ix)(?<=^|\\s)(LANGUAGE\\s+(SQLSCRIPT|SQL|GRAPH))(?=\\s+|\\.)", |
| 151 |
"name": "storage.modifier.method.abap" |
| 152 |
}, |
| 153 |
{ |
| 154 |
"match": "(?ix)(?<=\\s)(USING)\\s+([a-z_\\/][a-z_0-9\\/=\\>]*)+(?=\\s+|\\.)", |
| 155 |
"captures": { |
| 156 |
"1": { |
| 157 |
"name": "storage.modifier.method.abap" |
| 158 |
} |
| 159 |
} |
| 160 |
}, |
| 161 |
{ |
| 162 |
"begin": "(?=[A-Za-z_][A-Za-z0-9_]*)", |
| 163 |
"end": "(?![A-Za-z0-9_])", |
| 164 |
"patterns": [ |
| 165 |
{ |
| 166 |
"include": "#generic_names" |
| 167 |
} |
| 168 |
] |
| 169 |
} |
| 170 |
] |
| 171 |
}, |
| 172 |
{ |
| 173 |
"begin": "(?ix)^\\s*(INTERFACE)\\s([a-z_\\/][a-z_0-9\\/]*)", |
| 174 |
"beginCaptures": { |
| 175 |
"1": { |
| 176 |
"name": "storage.type.block.abap" |
| 177 |
}, |
| 178 |
"2": { |
| 179 |
"name": "entity.name.type.abap" |
| 180 |
} |
| 181 |
}, |
| 182 |
"end": "\\s*\\.\\s*\\n?", |
| 183 |
"patterns": [ |
| 184 |
{ |
| 185 |
"match": "(?ix)(?<=^|\\s)(DEFERRED|PUBLIC)(?=\\s+|\\.)", |
| 186 |
"name": "storage.modifier.method.abap" |
| 187 |
} |
| 188 |
] |
| 189 |
}, |
| 190 |
{ |
| 191 |
"begin": "(?ix)^\\s*(FORM)\\s([a-z_\\/][a-z_0-9\\/]*)", |
| 192 |
"beginCaptures": { |
| 193 |
"1": { |
| 194 |
"name": "storage.type.block.abap" |
| 195 |
}, |
| 196 |
"2": { |
| 197 |
"name": "entity.name.type.abap" |
| 198 |
} |
| 199 |
}, |
| 200 |
"end": "\\s*\\.\\s*\\n?", |
| 201 |
"patterns": [ |
| 202 |
{ |
| 203 |
"match": "(?ix)(?<=^|\\s)(USING|TABLES|CHANGING|RAISING)(?=\\s+|\\.)", |
| 204 |
"name": "storage.modifier.form.abap" |
| 205 |
}, |
| 206 |
{ |
| 207 |
"include": "#abaptypes" |
| 208 |
} |
| 209 |
] |
| 210 |
}, |
| 211 |
{ |
| 212 |
"match": "(?i)(endclass|endmethod|endform|endinterface)", |
| 213 |
"name": "storage.type.block.end.abap" |
| 214 |
}, |
| 215 |
{ |
| 216 |
"match": "(?i)(<[A-Za-z_][A-Za-z0-9_]*>)", |
| 217 |
"name": "variable.other.field.symbol.abap" |
| 218 |
}, |
| 219 |
{ |
| 220 |
"include": "#keywords" |
| 221 |
}, |
| 222 |
{ |
| 223 |
"include": "#abap_constants" |
| 224 |
}, |
| 225 |
{ |
| 226 |
"include": "#reserved_names" |
| 227 |
}, |
| 228 |
{ |
| 229 |
"include": "#operators" |
| 230 |
}, |
| 231 |
{ |
| 232 |
"include": "#builtin_functions" |
| 233 |
}, |
| 234 |
{ |
| 235 |
"include": "#abaptypes" |
| 236 |
}, |
| 237 |
{ |
| 238 |
"include": "#system_fields" |
| 239 |
} |
| 240 |
], |
| 241 |
"repository": { |
| 242 |
"abap_constants": { |
| 243 |
"match": "(?ix)(?<=\\s)(initial|null|space|abap_true|abap_false|table_line)(?=\\s|\\.|,)", |
| 244 |
"name": "constant.language.abap" |
| 245 |
}, |
| 246 |
"reserved_names": { |
| 247 |
"match": "(?ix)(?<=\\s)(me|super)(?=\\s|\\.|,|->)", |
| 248 |
"name": "constant.language.abap" |
| 249 |
}, |
| 250 |
"abaptypes": { |
| 251 |
"patterns": [ |
| 252 |
{ |
| 253 |
"match": "(?ix)\\s(abap_bool|string|xstring|any|clike|csequence|numeric|xsequence|c|n|i|p|f|d|t|x)(?=\\s|\\.|,)", |
| 254 |
"name": "support.type.abap" |
| 255 |
}, |
| 256 |
{ |
| 257 |
"match": "(?ix)\\s(TYPE|REF|TO|STANDARD|SORTED|HASHED|INDEX|TABLE|WITH|UNIQUE|NON-UNIQUE|SECONDARY|DEFAULT|KEY)(?=\\s|\\.|,)", |
| 258 |
"name": "keyword.control.simple.abap" |
| 259 |
} |
| 260 |
] |
| 261 |
}, |
| 262 |
"arithmetic_operator": { |
| 263 |
"match": "(?i)(?<=\\s)(\\+|\\-|\\*|\\*\\*|/|%|DIV|MOD|BIT-AND|BIT-OR|BIT-XOR|BIT-NOT)(?=\\s)", |
| 264 |
"name": "keyword.control.simple.abap" |
| 265 |
}, |
| 266 |
"comparison_operator": { |
| 267 |
"match": "(?i)(?<=\\s)(<|>|<\\=|>\\=|\\=|<>|eq|ne|lt|le|gt|ge|cs|cp|co|cn|ca|na|ns|np|byte-co|byte-cn|byte-ca|byte-na|byte-cs|byte-ns|o|z|m)(?=\\s)", |
| 268 |
"name": "keyword.control.simple.abap" |
| 269 |
}, |
| 270 |
"control_keywords": { |
| 271 |
"match": "(?ix)(^|\\s)(\n\t at|case|catch|continue|do|elseif|else|endat|endcase|enddo|endif|\n\t endloop|endon|if|loop|on|raise|try)(?=\\s|\\.|:)", |
| 272 |
"name": "keyword.control.flow.abap" |
| 273 |
}, |
| 274 |
"generic_names": { |
| 275 |
"match": "[A-Za-z_][A-Za-z0-9_]*" |
| 276 |
}, |
| 277 |
"keywords": { |
| 278 |
"patterns": [ |
| 279 |
{ |
| 280 |
"include": "#main_keywords" |
| 281 |
}, |
| 282 |
{ |
| 283 |
"include": "#text_symbols" |
| 284 |
}, |
| 285 |
{ |
| 286 |
"include": "#control_keywords" |
| 287 |
}, |
| 288 |
{ |
| 289 |
"include": "#keywords_followed_by_braces" |
| 290 |
} |
| 291 |
] |
| 292 |
}, |
| 293 |
"logical_operator": { |
| 294 |
"match": "(?i)(?<=\\s)(not|or|and)(?=\\s)", |
| 295 |
"name": "keyword.control.simple.abap" |
| 296 |
}, |
| 297 |
"system_fields": { |
| 298 |
"match": "(?ix)\\b(sy)-(abcde|batch|binpt|calld|callr|colno|cpage|cprog|cucol|curow|datar|datlo|datum|dayst|dbcnt|dbnam|dbsysc|dyngr|dynnr|fdayw|fdpos|host|index|langu|ldbpg|lilli|linct|linno|linsz|lisel|listi|loopc|lsind|macol|mandt|marow|modno|msgid|msgli|msgno|msgty|msgv[1-4]|opsysc|pagno|pfkey|repid|saprl|scols|slset|spono|srows|staco|staro|stepl|subrc|sysid|tabix|tcode|tfill|timlo|title|tleng|tvar[0-9]|tzone|ucomm|uline|uname|uzeit|vline|wtitl|zonlo)(?=\\.|\\s)", |
| 299 |
"captures": { |
| 300 |
"1": { |
| 301 |
"name": "variable.language.abap" |
| 302 |
}, |
| 303 |
"2": { |
| 304 |
"name": "variable.language.abap" |
| 305 |
} |
| 306 |
} |
| 307 |
}, |
| 308 |
"main_keywords": { |
| 309 |
"match": "(?ix)(?<=^|\\s)(\n\t abstract|access|add|add-corresponding|adjacent|alias|aliases|all|amdp|append|appending|ascending|as|assert|assign|assigned|assigning|association|authority-check|\n\t back|badi|base|begin|between|binary|blanks|block|bound|break-point|by|by\\s+database|byte|\n\t call|calling|cast|casting|cds\\s+session|changing|check|checkbox|class-data|class-events|class-method|class-methods|class-pool|cleanup|clear|client|clients|close|cnt|collect|commit|comment|cond|character|\n\t corresponding|communication|comparing|component|components|compute|concatenate|condense|constants|conv|count|\n\t controls|convert|create|currency|current|\n\t data|database|ddl|decimals|default|define|deferred|delete|descending|describe|destination|detail|display|divide|divide-corresponding|display-mode|distinct|duplicates|\n\t deleting|\n\t editor-call|empty|end|endenhancement|endexec|endfunction|ending|endmodule|end-of-definition|end-of-page|end-of-selection|end-test-injection|end-test-seam|exit-command|extension|\n\t endprovide|endselect|entries|endtry|endwhile|enhancement|enum|event|events|excluding|exec|exit|export|\n\t exporting|extract|exception|exceptions|\n\t field-symbols|field-groups|field|first|fetch|fields|format|frame|free|from|function|find|for|found|function-pool|\n\t generate|get|group|\n\t handle|handler|hide|hashed|header|help-request|\n\t include|import|importing|index|infotypes|initial|initialization|\n\t\tid|implemented|ignoring|is|in|inner|interface|interfaces|interface-pool|intervals|init|input|insert|instance|into|\n\t\tjoin|\n\t\tkey|\n\t language|language\\s+graph|language\\s+sql|left-justified|leave|let|like|line|lines|line-count|line-size|listbox|list-processing|load|local|log-point|length|left|leading|lower|\n\t matchcode|memory|method|mesh|message|message-id|methods|mode|modify|module|move|move-corresponding|multiply|multiply-corresponding|match|modif|\n\t\tnew|new-line|new-page|new-section|next|no|no-display|no-gap|no-gaps|no-sign|no-zero|non-unique|number|\n\t occurrence|object|obligatory|of|order|output|overlay|optional|others|occurrences|occurs|offset|options|\n\t pack|parameter|parameters|partially|perform|pf-status|places|position|preferred|primary|print-control|private|privileged|program|protected|provide|public|pushbutton|put|\n\t radiobutton\\s+group|raising|range|ranges|receive|receiving|redefinition|reduce|reference|refresh|regex|reject|results|requested|\n\t ref|replace|report|required|reserve|respecting|restore|result\\s+xml|result\\s+\\(|return|returning|right|right-justified|rollback|read|read-only|rp-provide-from-last|run|\n\t scan|screen|scroll|search|select|select-options|selection-screen|set|stamp|state|source|subkey|\n\t seconds|selection-table|separated|set|shift|single|skip|sort|sorted|split|stable|standard|stamp|starting|start-of-selection|sum|subscreen|subtract-corresponding|statics|step|stop|structure|submatches|submit|subtract|summary|supplied|suppress|section|syntax-check|syntax-trace|system-call|switch|\n\t tabbed|tables|table|task|testing|test-seam|test-injection|textpool|then|time|times|title|titlebar|to|top-of-page|trailing|transaction|transfer|transformation|translate|transporting|types|type|type-pool|type-pools|\n\t unassign|unique|uline|union|unpack|until|update|upper|using|user-command|\n\t value|value-request|visible|\n\t wait|when|while|window|write|where|with|work|workspace|\n\t\txml)(?=\\s|\\.|:|,)", |
| 310 |
"name": "keyword.control.simple.abap" |
| 311 |
}, |
| 312 |
"text_symbols": { |
| 313 |
"match": "(?ix)(?<=^|\\s)(text)-([A-Z0-9]{1,3})(?=\\s|\\.|:|,)", |
| 314 |
"captures": { |
| 315 |
"1": { |
| 316 |
"name": "keyword.control.simple.abap" |
| 317 |
}, |
| 318 |
"2": { |
| 319 |
"name": "constant.numeric.abap" |
| 320 |
} |
| 321 |
} |
| 322 |
}, |
| 323 |
"keywords_followed_by_braces": { |
| 324 |
"match": "(?ix)\\b(data|value|field-symbol)\\((<?[a-z_\\/][a-z_0-9\\/]*>?)\\)", |
| 325 |
"captures": { |
| 326 |
"1": { |
| 327 |
"name": "keyword.control.simple.abap" |
| 328 |
}, |
| 329 |
"2": { |
| 330 |
"name": "variable.other.abap" |
| 331 |
} |
| 332 |
} |
| 333 |
}, |
| 334 |
"operators": { |
| 335 |
"patterns": [ |
| 336 |
{ |
| 337 |
"include": "#other_operator" |
| 338 |
}, |
| 339 |
{ |
| 340 |
"include": "#arithmetic_operator" |
| 341 |
}, |
| 342 |
{ |
| 343 |
"include": "#comparison_operator" |
| 344 |
}, |
| 345 |
{ |
| 346 |
"include": "#logical_operator" |
| 347 |
} |
| 348 |
] |
| 349 |
}, |
| 350 |
"other_operator": { |
| 351 |
"match": "(?<=\\s)(&&|\\?=|\\+=|-=|\\/=|\\*=|&&=)(?=\\s)", |
| 352 |
"name": "keyword.control.simple.abap" |
| 353 |
}, |
| 354 |
"builtin_functions": { |
| 355 |
"match": "(?ix)(?<=\\s)(abs|sign|ceil|floor|trunc|frac|acos|asin|atan|cos|sin|tan|cosh|sinh|tanh|exp|log|log10|sqrt|strlen|xstrlen|charlen|lines|numofchar|dbmaxlen|round|rescale|nmax|nmin|cmax|cmin|boolc|boolx|xsdbool|contains|contains_any_of|contains_any_not_of|matches|line_exists|ipow|char_off|count|count_any_of|count_any_not_of|distance|condense|concat_lines_of|escape|find|find_end|find_any_of|find_any_not_of|insert|match|repeat|replace|reverse|segment|shift_left|shift_right|substring|substring_after|substring_from|substring_before|substring_to|to_upper|to_lower|to_mixed|from_mixed|translate|bit-set|line_index)(?=\\()", |
| 356 |
"name": "entity.name.function.builtin.abap" |
| 357 |
} |
| 358 |
}, |
| 359 |
"scopeName": "source.abap", |
| 360 |
"uuid": "0357FFB4-EFFF-4DE9-8371-B0F9C8DF1B21" |
| 361 |
} |
| 362 |
|