{"name":"CDS","scopeName":"source.abapcds","patterns":[{"include":"#bracketed"},{"include":"#non-bracketed"}],"repository":{"annotations":{"patterns":[{"begin":"(@\\\u003c?)","end":":|\\n","patterns":[{"match":"\\.?([a-zA-Z//][a-zA-Z//_0-9]+)\\.([a-zA-Z//][a-zA-Z//_0-9]+)\\.([a-zA-Z//][a-zA-Z//_0-9]+)\\.([a-zA-Z//][a-zA-Z//_0-9]+)\\.([a-zA-Z//][a-zA-Z//_0-9]+)","captures":{"1":{"name":"comment.line.annotation.property.lvl1.abapcds"},"2":{"name":"comment.line.annotation.property.lvl2.abapcds"},"3":{"name":"comment.line.annotation.property.lvl3.abapcds"},"4":{"name":"comment.line.annotation.property.lvl4.abapcds"},"5":{"name":"comment.line.annotation.property.lvl5.abapcds"}}},{"match":"\\.?([a-zA-Z//][a-zA-Z//_0-9]+)\\.([a-zA-Z//][a-zA-Z//_0-9]+)\\.([a-zA-Z//][a-zA-Z//_0-9]+)\\.([a-zA-Z//][a-zA-Z//_0-9]+)","captures":{"1":{"name":"comment.line.annotation.property.lvl1.abapcds"},"2":{"name":"comment.line.annotation.property.lvl2.abapcds"},"3":{"name":"comment.line.annotation.property.lvl3.abapcds"},"4":{"name":"comment.line.annotation.property.lvl4.abapcds"}}},{"match":"\\.?([a-zA-Z//][a-zA-Z//_0-9]+)\\.([a-zA-Z//][a-zA-Z//_0-9]+)\\.([a-zA-Z//][a-zA-Z//_0-9]+)","captures":{"1":{"name":"comment.line.annotation.property.lvl1.abapcds"},"2":{"name":"comment.line.annotation.property.lvl2.abapcds"},"3":{"name":"comment.line.annotation.property.lvl3.abapcds"}}},{"match":"\\.?([a-zA-Z//][a-zA-Z//_0-9]+)\\.([a-zA-Z//][a-zA-Z//_0-9]+)?","captures":{"1":{"name":"comment.line.annotation.property.lvl1.abapcds"},"2":{"name":"comment.line.annotation.property.lvl2.abapcds"}}},{"match":"\\.?([a-zA-Z//][a-zA-Z//_0-9]+)\\.?","captures":{"1":{"name":"comment.line.annotation.property.lvl1.abapcds"}}}],"beginCaptures":{"1":{"name":"comment.line.annotation.symbol.abapcds"}}}]},"booleans":{"patterns":[{"name":"constant.language.boolean.abapcds","match":"(?\u003c=\\s)(true|false)(?=\\s)"}]},"bracketed":{"patterns":[{"begin":"\\[|\\{","end":"\\]|\\}","patterns":[{"include":"#strings"},{"include":"#comments"},{"include":"#enums"},{"include":"#booleans"},{"include":"#numbers"},{"include":"#property-names"},{"include":"#keywords"},{"include":"#names"},{"include":"#annotations"},{"include":"#bracketed"}],"beginCaptures":{"0":{"name":"punctuation.abapcds"}},"endCaptures":{"0":{"name":"punctuation.abapcds"}}}]},"comments":{"patterns":[{"name":"comment.line.double-slash.abapcds","begin":"//","end":"$"},{"name":"comment.block.abapcds","begin":"/\\*","end":"\\*/","beginCaptures":{"0":{"name":"punctuation.definition.comment.abapcds"}},"endCaptures":{"0":{"name":"punctuation.definition.comment.abapcds"}}},{"name":"comment.line.double-dash.abapcds","begin":"(?\u003c!/)--.*$","end":"(?=$)","beginCaptures":{"0":{"name":"punctuation.definition.comment.abapcds"}}}]},"enums":{"patterns":[{"name":"support.variable.abapcds","match":"\\#[a-zA-Z_]+"}]},"functions":{"patterns":[{"name":"entity.name.function.abapcds"}]},"keywords":{"patterns":[{"name":"keyword.other.abapcds","match":"(?i)(?\u003c=\\s|^)(projection|root|composition|abstract|ascending|association|annotation|annotate|custom|descending|directory|dynamic|cache|accesspolicy|bypass|hierarchy\\(?|parent|child|source|start|siblings|order|inheriting|conditions|define|entity|extend|except|intersect|filter|view|as|select|from|key|where|select|distinct|with|parameters|inner|outer|left|right|join|on|group|by|having|union|all|define|table|function|implemented|method|multiple|parents|not\\s+allowed|leaves|allowed|orphans\\s+(ignore|error|root)|cycles\\s+(error|breakup)|generate\\s+spantree|cache|off|on|force|returns|redefine|and|or|case|when|then|else|end|to|one|is|null|period|depth|nodetype|load|bulk|incremental|preserving|type|default|array|of|role|grant|inherit|aspect|redirected\\s+to\\s+(parent|composition)|provider\\s+contract)(?=\\s+)"}]},"names":{"patterns":[{"match":"(?i)(?\u003c=\\s)([/a-z0-9_]+)\\.([/a-z0-9_]+)\\s?","captures":{"1":{"name":"entity.name.type.abapcds"},"2":{"name":"variable.other.abapcds"}}},{"match":"(?i)(?\u003c=\\s)([/a-z0-9_]+)(?=,\\s?)","captures":{"1":{"name":"entity.name.type.abapcds"}}},{"match":"(?i)(?\u003c=\\s)([/a-z_]+)(?=\\s)","captures":{"1":{"name":"entity.name.type.abapcds"}}}]},"non-bracketed":{"patterns":[{"include":"#keywords"},{"include":"#strings"},{"include":"#annotations"},{"include":"#functions"},{"include":"#enums"},{"include":"#booleans"},{"include":"#comments"},{"include":"#numbers"},{"include":"#special"},{"include":"#names"}]},"numbers":{"patterns":[{"name":"constant.numeric.abapcds","match":"(?\u003c=\\s)[0-9]+(?=\\s)"}]},"property-names":{"patterns":[{"name":"variable.other.property.name.abapcds","match":"(?i)(?\u003c=\\s|\\{|\\{)[a-z]+\\:"}]},"special":{"patterns":[{"match":"(?i)(\\$projection)\\.([/a-zA-Z_]+)\\s?","captures":{"1":{"name":"entity.name.type.abapcds"},"2":{"name":"variable.other.abapcds"}}}]},"strings":{"name":"string.quoted.single.abapcds","begin":"\\'","end":"\\'","patterns":[{"name":"constant.character.escape.abapcds","match":"\\\\."}]}}}