{ "name": "ABAP", "scopeName": "source.abap", "patterns": [ { "name": "comment.line.full.abap", "match": "^\\*.*\\n?", "captures": { "1": { "name": "punctuation.definition.comment.abap" } } }, { "name": "comment.line.partial.abap", "match": "\".*\\n?", "captures": { "1": { "name": "punctuation.definition.comment.abap" } } }, { "name": "string.quoted.single.abap", "begin": "'", "end": "'", "patterns": [ { "name": "constant.character.escape.abap", "match": "''" } ] }, { "name": "meta.block.begin.implementation.abap", "begin": "(?i)^\\s*(class|method|form)\\s+(?=[a-z_][a-z_0-9])", "end": "\\s*\\.\\s*\\n?", "patterns": [ { "contentName": "entity.name.type.block.abap", "begin": "(?=[A-Za-z_][A-Za-z0-9_]*)", "end": "(?![A-Za-z0-9_])", "patterns": [ { "include": "#generic_names" } ] } ], "beginCaptures": { "1": { "name": "storage.type.block.abap" } } }, { "name": "storage.type.block.end.abap", "match": "(?i)(endclass|endmethod|endform)" }, { "name": "meta.variable.other.field.symbol.abap", "match": "(?i)(\u003c[A-Za-z_][A-Za-z0-9_]*\u003e)" }, { "include": "#keywords" }, { "include": "#abap_constants" }, { "include": "#operators" }, { "include": "#abaptypes" } ], "repository": { "abap_constants": { "name": "constant.language.abap", "match": "(?ix)\\s(initial|null|space|abap_true|abap_false)\\s" }, "abaptypes": { "name": "support.type.abap", "match": "(?ix)\\s(string|xstring|any|clike|csequence|numeric|xsequence|c|n|i|p|f|d|t|x)(?=\\s|\\.)" }, "arithmetic_operator": { "name": "keyword.operator.arithmetic.abap", "match": "\\s(\\+|\\-|\\*|\\*\\*|/|%)\\s" }, "comparison_operator": { "name": "keyword.operator.comparison.abap", "match": "(?i)\\s(\u003c|\u003e|\u003c\\=|\u003e\\=|\\=|\u003c\u003e|eq|ne|lt|le|gt|ge|cs)\\s" }, "control_keywords": { "name": "keyword.control.flow.abap", "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\n\t )(?=\\s|\\.|:)" }, "generic_names": { "match": "[A-Za-z_][A-Za-z0-9_]*" }, "hyphenated_keywords": { "name": "keyword.control.hyphenated.abap", "match": "(?ix)(^|\\s)(add-corresponding|\n\t authority-check|\n\t break-point|\n\t class-data|\n\t class-method|\n\t class-methods|\n\t divide-corresponding|\n\t display-mode|\n\t editor-call|\n\t end-of-definition|\n\t end-of-page|\n\t end-of-selection|\n\t field-groups|\n\t field-symbols|\n\t function-pool|\n\t left-justified|\n\t line-count|\n\t line-size|\n\t message-id|\n\t move-corresponding|\n\t multiply-corresponding|\n\t new-line|\n\t new-page|\n\t new-section|\n no-gap|\n no-sign|\n no-zero|\n\t print-control|\n\t read-only|\n\t right-justified|\n\t rp-provide-from-last|\n\t select-options|\n\t selection-screen|\n\t start-of-selection|\n\t subtract-corresponding|\n\t syntax-check|\n\t syntax-trace|\n\t system-call|\n\t top-of-page|\n\t type-pool|\n\t type-pools\n\t )(?=\\s|\\.|:)" }, "keywords": { "patterns": [ { "include": "#hyphenated_keywords" }, { "include": "#main_keywords" }, { "include": "#control_keywords" }, { "include": "#short_keywords" } ] }, "logical_operator": { "name": "keyword.operator.arithmetic.abap", "match": "(?i)\\s(is|not|or|and)\\s" }, "main_keywords": { "name": "keyword.control.simple.abap", "match": "(?ix)(^|\\s)(\n\t alias|aliases|append|ascending|assert|assign|assigning|\n\t back|begin|binary|bound|byte|\n\t call|changing|check|clear|close|cnt|collect|commit|character|\n\t corresponding|communication|component|compute|concatenate|condense|constants|\n\t controls|convert|create|currency|\n\t data|descending|default|define|definition|deferred|delete|describe|detail|divide|\n\t deleting|\n\t end|endexec|endfunction|\n\t endinterface|endmodule|\n\t endprovide|endselect|endtry|endwhile|event|events|exec|exit|export|\n\t exporting|extract|exception|exceptions|\n\t fetch|fields|format|free|from|function|find|\n\t generate|\n\t hide|\n\t import|importing|index|infotypes|initial|initialization|\n\t interface|interfaces|input|insert|implementation|into|\n\t leave|like|line|load|local|length|left|leading|\n\t method|message|methods|modify|module|move|multiply|match|\n\t object|obligatory|overlay|optional|others|occurrences|occurs|offset|\n\t pack|parameters|perform|position|private|program|protected|provide|public|\n\t radiobutton|raising|ranges|receive|receiving|redefinition|reference|refresh|regex|reject|results|\n\t replace|report|reserve|restore|return|returning|rollback|read|\n\t scan|scroll|search|select|separated|shift|single|skip|sort|sorted|split|standard| \n\t statics|step|stop|structure|submatches|submit|subtract|summary|suppress|section|\n\t tables|table|times|titlebar|transfer|transformation|translate|types|type|\n\t unassign|uline|unpack|update|using|\n\t value|\n\t when|while|window|write|where|with\n\t )(?=\\s|\\.|:)" }, "math_operators": { "name": "keyword.operator.math.abap", "match": "(?ix)\\s(abs|sign|ceil|floor|trunc|frac|acos|asin|\n\t atan|cos|sin|tan|cosh|sinh|tanh|exp|log|log10|sqrt)\\(" }, "operators": { "patterns": [ { "include": "#other_operator" }, { "include": "#math_operators" }, { "include": "#string_operators" }, { "include": "#arithmetic_operator" }, { "include": "#comparison_operator" }, { "include": "#logical_operator" } ] }, "other_operator": { "name": "keyword.operator.other.abap", "match": "\\s(\u0026\u0026|\\?\\=)\\s" }, "short_keywords": { "name": "keyword.control.short.abap", "match": "(?i)\\s(add|all|in|get|of|put|ref|set|sum|to)(?=\\s|\\.|:)" }, "string_operators": { "name": "keyword.operator.string.abap", "match": "(?ix)\\s(strlen|xstrlen|charlen|lines|numofchar|dbmaxlen)\\(" } } }