{ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json", "name": "ada", "patterns": [ { "include": "#library_unit" }, { "include": "#comment" }, { "include": "#use_clause" }, { "include": "#with_clause" }, { "include": "#pragma" }, { "include": "#keyword" } ], "repository": { "abort_statement": { "name": "meta.statement.abort.ada", "begin": "(?i)\\babort\\b", "end": ";", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "name": "punctuation.ada", "match": "," }, { "name": "entity.name.task.ada", "match": "\\b(\\w|\\d|\\.|_)+\\b" } ] }, "accept_statement": { "name": "meta.statement.accept.ada", "begin": "(?i)\\b(accept)\\s+((?:\\w|\\d|\\.|_)+)\\b", "end": "(?i)(?:\\b(end)\\s*(\\s\\2)?\\s*)?(;)", "beginCaptures": { "1": { "name": "keyword.control.ada" }, "2": { "name": "entity.name.accept.ada" } }, "endCaptures": { "1": { "name": "keyword.control.ada" }, "2": { "name": "entity.name.accept.ada" }, "3": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)\\bdo\\b", "end": "(?i)\\b(?=end)\\b", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "patterns": [ { "include": "#statement" } ] }, { "include": "#parameter_profile" } ] }, "access_definition": { "name": "meta.declaration.access.definition.ada", "match": "(?i)(not\\s+null\\s+)?(access)\\s+(constant\\s+)?((?:\\w|\\d|\\.|_)+)\\b", "captures": { "1": { "name": "storage.visibility.ada" }, "2": { "name": "storage.visibility.ada" }, "3": { "name": "storage.modifier.ada" }, "4": { "name": "entity.name.type.ada" } } }, "access_type_definition": { "name": "meta.declaration.type.definition.access.ada", "begin": "(?i)\\b(not\\s+null\\s+)?(access)\\b", "end": "(?i)(?=(with|;))", "beginCaptures": { "1": { "name": "storage.visibility.ada" }, "2": { "name": "storage.visibility.ada" } }, "patterns": [ { "name": "storage.visibility.ada", "match": "(?i)\\ball\\b" }, { "name": "storage.modifier.ada", "match": "(?i)\\bconstant\\b" }, { "include": "#subtype_mark" } ] }, "actual_parameter_part": { "begin": "\\(", "end": "\\)", "captures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "name": "punctuation.ada", "match": "," }, { "include": "#parameter_association" } ] }, "adding_operator": { "name": "keyword.operator.adding.ada", "match": "(\\+|-|\\&)" }, "array_aggregate": { "name": "meta.definition.array.aggregate.ada", "begin": "\\(", "end": "\\)", "captures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "name": "punctuation.ada", "match": "," }, { "include": "#positional_array_aggregate" }, { "include": "#array_component_association" } ] }, "array_component_association": { "name": "meta.definition.array.aggregate.component.ada", "match": "(?i)\\b([^(=>)]*)\\s*(=>)\\s*([^,\\)]+)", "captures": { "1": { "name": "variable.name.ada" }, "2": { "name": "keyword.other.ada" }, "3": { "patterns": [ { "name": "keyword.modifier.unknown.ada", "match": "<>" }, { "include": "#expression" } ] } } }, "array_dimensions": { "name": "meta.declaration.type.definition.array.dimensions.ada", "begin": "\\(", "end": "\\)", "captures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "name": "punctuation.ada", "match": "," }, { "name": "storage.modifier.ada", "match": "(?i)\\brange\\b" }, { "name": "keyword.modifier.unknown.ada", "match": "<>" }, { "name": "keyword.ada", "match": "\\.\\." }, { "include": "#expression" }, { "patterns": [ { "include": "#subtype_mark" } ] } ] }, "array_type_definition": { "name": "meta.declaration.type.definition.array.ada", "begin": "(?i)\\barray\\b", "end": "(?i)(?=(with|;))", "beginCaptures": { "0": { "name": "storage.modifier.ada" } }, "patterns": [ { "include": "#array_dimensions" }, { "name": "storage.modifier.ada", "match": "(?i)\\bof\\b" }, { "name": "storage.visibility.ada", "match": "(?i)\\baliased\\b" }, { "include": "#access_definition" }, { "include": "#subtype_mark" } ] }, "aspect_clause": { "name": "meta.aspect.clause.ada", "begin": "(?i)\\b(for)\\b", "end": ";", "beginCaptures": { "1": { "name": "keyword.ada" }, "2": { "patterns": [ { "include": "#subtype_mark" } ] }, "3": { "name": "punctuation.ada" }, "5": { "name": "keyword.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)\\buse\\b", "end": "(?=;)", "beginCaptures": { "0": { "name": "keyword.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "include": "#record_representation_clause" }, { "include": "#array_aggregate" }, { "include": "#expression" } ] }, { "begin": "(?i)(?<=for)", "end": "(?i)(?=use)", "captures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "match": "((?:\\w|\\d|_)+)('((?:\\w|\\d|_)+))?", "captures": { "1": { "patterns": [ { "include": "#subtype_mark" } ] }, "2": { "patterns": [ { "include": "#attribute" } ] } } } ] } ] }, "aspect_definition": { "name": "meta.aspect.definition.ada", "begin": "=>", "end": "(?i)(?=(,|;|\\bis\\b))", "beginCaptures": { "0": { "name": "keyword.other.ada" } }, "patterns": [ { "include": "#expression" } ] }, "aspect_mark": { "name": "meta.aspect.mark.ada", "match": "(?i)\\b((?:\\w|\\d|\\.|_)+)(?:(')(class))?\\b", "captures": { "1": { "name": "keyword.control.directive.ada" }, "2": { "name": "punctuation.ada" }, "3": { "name": "entity.other.attribute-name.ada" } } }, "aspect_specification": { "name": "meta.aspect.specification.ada", "begin": "(?i)\\bwith\\b", "end": "(?i)(?=(;|\\bis\\b))", "beginCaptures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "name": "punctuation.ada", "match": "," }, { "match": "(?i)\\b(null)\\s+(record)\\b", "captures": { "1": { "name": "storage.modifier.ada" }, "2": { "name": "storage.modifier.ada" } } }, { "begin": "(?i)\\brecord\\b", "end": "(?i)\\b(end)\\s+(record)\\b", "beginCaptures": { "0": { "name": "storage.modifier.ada" } }, "endCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "storage.modifier.ada" } }, "patterns": [ { "include": "#component_item" } ] }, { "match": "(?i)\\bprivate\\b", "captures": { "0": { "name": "storage.visibility.ada" } } }, { "include": "#aspect_definition" }, { "include": "#aspect_mark" }, { "include": "#comment" } ] }, "assignment_statement": { "name": "meta.statement.assignment.ada", "begin": "\\b((?:\\w|\\d|\\.|_|\\(|\\)|\"|'|\\s)+)\\s*(:=)", "end": ";", "beginCaptures": { "1": { "patterns": [ { "match": "((?:\\w|\\d|\\.|_)+)", "name": "variable.name.ada" }, { "begin": "\\(", "end": "\\)", "captures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "include": "#expression" } ] } ] }, "2": { "name": "keyword.operator.new.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "include": "#expression" }, { "include": "#comment" } ] }, "attribute": { "name": "meta.attribute.ada", "match": "(')((?:\\w|\\d|_)+)\\b", "captures": { "1": { "name": "punctuation.ada" }, "2": { "name": "entity.other.attribute-name.ada" } } }, "based_literal": { "name": "constant.numeric.ada", "match": "(?i)(\\d(?:(_)?\\d)*#)[0-9a-f](?:(_)?[0-9a-f])*(?:(\\.)[0-9a-f](?:(_)?[0-9a-f])*)?(#)([eE](?:\\+|\\-)?\\d(?:_?\\d)*)?", "captures": { "1": { "name": "constant.numeric.base.ada" }, "2": { "name": "punctuation.ada" }, "3": { "name": "punctuation.ada" }, "4": { "name": "punctuation.radix-point.ada" }, "5": { "name": "punctuation.ada" }, "6": { "name": "constant.numeric.base.ada" }, "7": { "patterns": [ { "include": "#exponent_part" } ] } } }, "basic_declarative_item": { "patterns": [ { "include": "#basic_declaration" }, { "include": "#aspect_clause" }, { "include": "#use_clause" }, { "include": "#keyword" } ] }, "basic_declaration": { "patterns": [ { "include": "#type_declaration" }, { "include": "#subtype_declaration" }, { "include": "#exception_declaration" }, { "include": "#object_declaration" }, { "include": "#single_protected_declaration" }, { "include": "#single_task_declaration" }, { "include": "#subprogram_specification" }, { "include": "#package_declaration" }, { "include": "#pragma" }, { "include": "#comment" } ] }, "block_statement": { "name": "meta.statement.block.ada", "begin": "(?i)\\bdeclare\\b", "end": "(?i)\\b(end)(\\s+(?:\\w|\\d|_)+)?\\s*(;)", "beginCaptures": { "0": { "name": "keyword.ada" } }, "endCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "entity.name.label.ada" }, "3": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)(?<=declare)", "end": "(?i)\\bbegin\\b", "endCaptures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "include": "#body" }, { "include": "#basic_declarative_item" } ] }, { "begin": "(?i)(?<=begin)", "end": "(?i)(?=end)", "patterns": [ { "include": "#statement" } ] } ] }, "body": { "patterns": [ { "include": "#subprogram_body" }, { "include": "#package_body" }, { "include": "#task_body" }, { "include": "#protected_body" } ] }, "case_statement": { "name": "meta.statement.case.ada", "begin": "(?i)\\bcase\\b", "end": "(?i)\\b(end)\\s+(case)\\s*(;)", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "endCaptures": { "1": { "name": "keyword.control.ada" }, "2": { "name": "keyword.control.ada" }, "3": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)(?<=case)\\b", "end": "(?i)\\bis\\b", "endCaptures": { "0": { "name": "keyword.control.ada" } }, "patterns": [ { "include": "#expression" } ] }, { "name": "meta.statement.case.alternative.ada", "begin": "(?i)\\bwhen\\b", "end": "=>", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "name": "keyword.modifier.unknown.ada", "match": "(?i)\\bothers\\b" }, { "name": "punctuation.ada", "match": "\\|" }, { "include": "#expression" } ] }, { "include": "#statement" } ] }, "character_literal": { "name": "string.quoted.single.ada", "match": "'.'", "captures": { "0": { "patterns": [ { "name": "punctuation.definition.string.ada", "match": "'" } ] } } }, "comment": { "patterns": [ { "include": "#preprocessor" }, { "include": "#comment-section" }, { "include": "#comment-doc" }, { "include": "#comment-line" } ] }, "comment-doc": { "name": "comment.block.documentation.ada", "match": "(--)\\s*(@)(\\w+)\\s+(.*)$", "captures": { "1": { "name": "comment.line.double-dash.ada" }, "2": { "name": "punctuation.definition.tag.ada" }, "3": { "name": "entity.name.tag.ada" }, "4": { "name": "comment.line.double-dash.ada" } } }, "comment-line": { "name": "comment.line.double-dash.ada", "match": "--.*$" }, "comment-section": { "name": "comment.line.double-dash.ada", "match": "--\\s*([^-].*?[^-])\\s*--\\s*$", "captures": { "1": { "name": "entity.name.section.ada" } } }, "component_clause": { "name": "meta.aspect.clause.record.representation.component.ada", "begin": "(?i)\\b((?:\\w|\\d|_)+)\\b", "beginCaptures": { "0": { "name": "variable.name.ada" } }, "end": ";", "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)\\bat\\b", "end": "(?i)\\b(?=range)\\b", "beginCaptures": { "0": { "name": "storage.modifier.ada" } }, "patterns": [ { "include": "#expression" } ] }, { "include": "#range_constraint" } ] }, "component_declaration": { "name": "meta.declaration.type.definition.record.component.ada", "begin": "(?i)\\b((?:\\w|\\d|_)+(?:\\s*,\\s*(?:\\w|\\d|_)+)?)\\s*(:)", "end": ";", "beginCaptures": { "1": { "patterns": [ { "name": "punctuation.ada", "match": "," }, { "name": "variable.name.ada", "match": "\\b(\\w|\\d|_)+\\b" } ] }, "2": { "name": "punctuation.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "patterns": [ { "name": "keyword.operator.new.ada", "match": ":=" }, { "include": "#expression" } ] }, { "include": "#component_definition" } ] }, "component_definition": { "patterns": [ { "name": "storage.visibility.ada", "match": "(?i)\\baliased\\b" }, { "name": "storage.modifier.ada", "match": "(?i)\\brange\\b" }, { "name": "keyword.ada", "match": "\\.\\." }, { "include": "#access_definition" }, { "include": "#subtype_mark" } ] }, "component_item": { "patterns": [ { "include": "#component_declaration" }, { "include": "#variant_part" }, { "include": "#comment" }, { "include": "#aspect_clause" }, { "match": "(?i)\\b(null)\\s*(;)", "captures": { "1": { "name": "keyword.ada" }, "2": { "name": "punctuation.ada" } } } ] }, "composite_constraint": { "name": "meta.declaration.constraint.composite.ada", "begin": "\\(", "end": "\\)", "captures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "name": "punctuation.ada", "match": "," }, { "name": "keyword.ada", "match": "\\.\\." }, { "match": "(?i)\\b((?:\\w|\\d|_)+)\\s*(=>)\\s*([^,\\)])+\\b", "captures": { "1": { "name": "variable.name.ada" }, "2": { "name": "keyword.other.ada" }, "3": { "patterns": [ { "include": "#expression" } ] } } }, { "include": "#expression" } ] }, "decimal_literal": { "name": "constant.numeric.ada", "match": "\\d(?:(_)?\\d)*(?:(\\.)\\d(?:(_)?\\d)*)?([eE](?:\\+|\\-)?\\d(?:_?\\d)*)?", "captures": { "1": { "name": "punctuation.ada" }, "2": { "name": "punctuation.radix-point.ada" }, "3": { "name": "punctuation.ada" }, "4": { "patterns": [ { "include": "#exponent_part" } ] } } }, "declarative_item": { "patterns": [ { "include": "#body" }, { "include": "#basic_declarative_item" } ] }, "delay_statement": { "patterns": [ { "include": "#delay_until_statement" }, { "include": "#delay_relative_statement" } ] }, "delay_until_statement": { "name": "meta.statement.delay.until.ada", "begin": "(?i)\\b(delay)\\s+(until)\\b", "end": ";", "beginCaptures": { "1": { "name": "keyword.control.ada" }, "2": { "name": "keyword.control.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "include": "#expression" } ] }, "delay_relative_statement": { "begin": "(?i)\\b(delay)\\b", "end": ";", "beginCaptures": { "1": { "name": "keyword.control.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "include": "#expression" } ] }, "derived_type_definition": { "name": "meta.declaration.type.definition.derived.ada", "patterns": [ { "begin": "(?i)\\bnew\\b", "beginCaptures": { "0": { "name": "storage.modifier.ada" } }, "end": "(?i)(?=(\\bwith\\b|;))", "patterns": [ { "name": "storage.modifier.ada", "match": "(?i)\\band\\b" }, { "include": "#subtype_mark" } ] }, { "name": "storage.modifier.ada", "match": "(?i)\\b(abstract|and|limited|tagged)\\b" }, { "name": "storage.visibility.ada", "match": "(?i)\\bprivate\\b" }, { "include": "#subtype_mark" } ] }, "discriminant_specification": { "begin": "(?i)\\b((?:\\w|\\d|_)+(?:\\s*,\\s*(?:\\w|\\d|_)+)?)\\s*(:)", "end": "(?=(;|\\)))", "beginCaptures": { "1": { "patterns": [ { "name": "punctuation.ada", "match": "," }, { "name": "variable.name.ada", "match": "\\b(\\w|\\d|_)+\\b" } ] }, "2": { "name": "punctuation.ada" } }, "patterns": [ { "begin": ":=", "end": "(?=(;|\\)))", "beginCaptures": { "0": { "name": "keyword.operator.new.ada" } }, "patterns": [ { "include": "#expression" } ] }, { "match": "(?i)(not\\s+null\\s+)?((?:\\w|\\d|\\.|_)+)\\b", "captures": { "1": { "name": "storage.visibility.ada" }, "2": { "patterns": [ { "include": "#subtype_mark" } ] } } }, { "include": "#access_definition" } ] }, "entry_body": { "begin": "(?i)\\b(entry)\\s+((?:\\w|\\d|_)+)\\b", "end": "(?i)\\b(end)\\s*(\\s\\2)\\s*(;)", "beginCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "entity.name.entry.ada" } }, "endCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "entity.name.entry.ada" }, "3": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)\\bis\\b", "beginCaptures": { "0": { "name": "keyword.ada" } }, "end": "(?i)\\b(?=begin)\\b", "patterns": [ { "include": "#declarative_item" } ] }, { "begin": "(?i)\\bbegin\\b", "end": "(?i)\\b(?=end)\\b", "beginCaptures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "include": "#statement" } ] }, { "begin": "(?i)\\bwhen\\b", "end": "(?i)\\b(?=is)\\b", "beginCaptures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "include": "#expression" } ] }, { "include": "#parameter_profile" } ] }, "entry_declaration": { "begin": "(?i)\\b(?:(not)?\\s+(overriding)\\s+)?(entry)\\s+((?:\\w|\\d|_)+)\\b", "end": ";", "beginCaptures": { "1": { "name": "storage.modifier.ada" }, "2": { "name": "storage.modifier.ada" }, "3": { "name": "keyword.ada" }, "4": { "name": "entity.name.entry.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "include": "#parameter_profile" } ] }, "enumeration_type_definition": { "name": "meta.declaration.type.definition.enumeration.ada", "begin": "\\(", "end": "\\)", "beginCaptures": { "0": { "name": "punctuation.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "name": "punctuation.ada", "match": "," }, { "name": "variable.name.ada", "match": "\\b(\\w|\\d|_)+\\b" }, { "include": "#comment" } ] }, "exception_declaration": { "name": "meta.declaration.exception.ada", "begin": "(?i)\\b((?:\\w|\\d|_)+(?:\\s*,\\s*(?:\\w|\\d|_)+)?)\\s*(:)\\s*(exception)", "beginCaptures": { "1": { "patterns": [ { "name": "punctuation.ada", "match": "," }, { "name": "entity.name.exception.ada", "match": "\\b(\\w|\\d|_)+\\b" } ] }, "2": { "name": "punctuation.ada" }, "3": { "name": "storage.type.ada" } }, "end": ";", "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "match": "(?i)\\b(renames)\\s+((\\w|\\d|_|\\.)+)", "name": "entity.name.exception.ada" } ] }, "exit_statement": { "name": "meta.statement.exit.ada", "begin": "(?i)\\bexit\\b", "end": ";", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)\\bwhen\\b", "end": "(?=;)", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "patterns": [ { "include": "#expression" } ] }, { "match": "(?:\\w|\\d|_)+", "name": "entity.name.label.ada" } ] }, "exponent_part": { "match": "([eE])(\\+|\\-)?\\d(?:(_)?\\d)*", "captures": { "1": { "name": "punctuation.exponent-mark.ada" }, "2": { "name": "keyword.operator.unary.ada" }, "3": { "name": "punctuation.ada" } } }, "expression": { "name": "meta.expression.ada", "patterns": [ { "match": "(?i)\\bnull\\b", "name": "constant.language.ada" }, { "match": "=>(\\+)?", "name": "keyword.other.ada" }, { "begin": "\\(", "end": "\\)", "captures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "include": "#expression" } ] }, { "match": ",", "name": "punctuation.ada" }, { "match": "\\.\\.", "name": "keyword.ada" }, { "include": "#value" }, { "include": "#attribute" }, { "include": "#comment" }, { "include": "#operator" }, { "match": "(?i)\\b(and|or|xor)\\b", "name": "keyword.ada" }, { "match": "(?i)\\b(if|then|else|elsif|in|for|(?", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "endCaptures": { "0": { "name": "keyword.other.ada" } }, "patterns": [ { "include": "#expression" } ] }, "handled_sequence_of_statements": { "patterns": [ { "name": "meta.handler.exception.ada", "begin": "(?i)\\bexception\\b", "beginCaptures": { "0": { "name": "keyword.ada" } }, "end": "(?i)\\b(?=end)\\b", "patterns": [ { "begin": "(?i)\\bwhen\\b", "end": "=>", "beginCaptures": { "0": { "name": "keyword.ada" } }, "endCaptures": { "0": { "name": "keyword.other.ada" } }, "patterns": [ { "match": "\\b((?:\\w|\\d|\\.|_)+)\\s*(:)", "captures": { "1": { "name": "variable.name.ada" }, "2": { "name": "punctuation.ada" } } }, { "match": "\\|", "name": "punctuation.ada" }, { "match": "(?i)\\bothers\\b", "name": "keyword.ada" }, { "match": "(?:\\w|\\d|\\.|_)+", "name": "entity.name.exception.ada" } ] }, { "include": "#statement" } ] }, { "include": "#statement" } ] }, "highest_precedence_operator": { "name": "keyword.operator.highest-precedence.ada", "match": "(?i)(\\*\\*|\\babs\\b|\\bnot\\b)" }, "if_statement": { "name": "meta.statement.if.ada", "begin": "(?i)\\bif\\b", "end": "(?i)\\b(end)\\s+(if)\\s*(;)", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "endCaptures": { "1": { "name": "keyword.control.ada" }, "2": { "name": "keyword.control.ada" }, "3": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)\\belsif\\b", "end": "(?i)(?:(?" }, { "name": "keyword.operator.arithmetic.ada", "match": "(\\+|-|\\*|/)" }, { "name": "keyword.operator.assignment.ada", "match": ":=" }, { "name": "keyword.operator.logic.ada", "match": "(=|/=|<|>|<=|>=)" }, { "name": "keyword.operator.concatenation.ada", "match": "\\&" } ] }, "known_discriminant_part": { "name": "meta.declaration.type.discriminant.ada", "begin": "\\(", "end": "\\)", "captures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "name": "punctuation.ada", "match": ";" }, { "include": "#discriminant_specification" } ] }, "label": { "name": "meta.label.ada", "match": "(<<)?((?:\\w|\\d|_)+)\\s*(:[^=]|>>)", "captures": { "1": { "name": "punctuation.label.ada" }, "2": { "name": "entity.name.label.ada" }, "3": { "name": "punctuation.label.ada" } } }, "library_unit": { "name": "meta.library.unit.ada", "patterns": [ { "include": "#package_body" }, { "include": "#package_specification" }, { "include": "#subprogram_body" } ] }, "loop_statement": { "patterns": [ { "include": "#simple_loop_statement" }, { "include": "#while_loop_statement" }, { "include": "#for_loop_statement" } ] }, "modular_type_definition": { "begin": "(?i)\\b(mod)\\b", "end": "(?i)(?=(with|;))", "beginCaptures": { "1": { "name": "storage.modifier.ada" } }, "patterns": [ { "name": "keyword.modifier.unknown.ada", "match": "<>" }, { "include": "#expression" } ] }, "multiplying_operator": { "name": "keyword.operator.multiplying.ada", "match": "(?i)(\\*|/|\\bmod\\b|\\brem\\b)" }, "null_statement": { "name": "meta.statement.null.ada", "match": "(?i)\\b(null)\\s*(;)", "captures": { "1": { "name": "keyword.ada" }, "2": { "name": "punctuation.ada" } } }, "object_declaration": { "name": "meta.declaration.object.ada", "begin": "(?i)\\b((?:\\w|\\d|_)+(?:\\s*,\\s*(?:\\w|\\d|_)+)*)\\s*(:)", "end": "(;)", "beginCaptures": { "1": { "patterns": [ { "name": "punctuation.ada", "match": "," }, { "name": "variable.name.ada", "match": "\\b(\\w|\\d|_)+\\b" } ] }, "2": { "name": "punctuation.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?<=:)", "end": "(?:(?=;)|(:=)|(\\brenames\\b))", "endCaptures": { "1": { "name": "keyword.operator.new.ada" }, "2": { "name": "keyword.ada" } }, "patterns": [ { "name": "storage.modifier.ada", "match": "(?i)\\bconstant\\b" }, { "name": "storage.visibility.ada", "match": "(?i)\\baliased\\b" }, { "include": "#aspect_specification" }, { "include": "#subtype_mark" } ] }, { "begin": "(?<=:=)", "end": "(?=;)", "patterns": [ { "include": "#aspect_specification" }, { "include": "#expression" } ] }, { "begin": "(?<=renames)", "end": "(?=;)", "patterns": [ { "include": "#aspect_specification" } ] } ] }, "operator": { "patterns": [ { "include": "#highest_precedence_operator" }, { "include": "#multiplying_operator" }, { "include": "#adding_operator" }, { "include": "#relational_operator" }, { "include": "#logical_operator" } ] }, "package_body": { "name": "meta.declaration.package.body.ada", "begin": "(?i)\\b(package)\\s+(body)\\s+((?:\\w|\\d|\\.|_)+)\\b", "end": "(?i)\\b(end)\\s+(\\3)\\s*(;)", "beginCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "keyword.ada" }, "3": { "patterns": [ { "include": "#package_mark" } ] } }, "endCaptures": { "1": { "name": "keyword.ada" }, "2": { "patterns": [ { "include": "#package_mark" } ] }, "3": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)\\bbegin\\b", "beginCaptures": { "0": { "name": "keyword.ada" } }, "end": "(?i)\\b(?=end)\\b", "patterns": [ { "include": "#handled_sequence_of_statements" } ] }, { "begin": "(?i)\\bis\\b", "beginCaptures": { "0": { "name": "keyword.ada" } }, "end": "(?i)(?=(\\bbegin\\b|\\bend\\b))", "patterns": [ { "match": "(?i)\\bprivate\\b", "name": "keyword.ada" }, { "include": "#declarative_item" }, { "include": "#comment" } ] }, { "include": "#aspect_specification" } ] }, "package_declaration": { "patterns": [ { "include": "#package_specification" } ] }, "package_mark": { "name": "entity.name.package.ada", "match": "\\b(\\w|\\d|\\.|_)+\\b" }, "package_specification": { "name": "meta.declaration.package.specification.ada", "begin": "(?i)\\b(package)\\s+((?:\\w|\\d|\\.|_)+)\\b", "end": "(?i)(?:\\b(end)\\s+(\\2)\\s*)?(;)", "beginCaptures": { "1": { "name": "keyword.ada" }, "2": { "patterns": [ { "include": "#package_mark" } ] } }, "endCaptures": { "1": { "name": "keyword.ada" }, "2": { "patterns": [ { "include": "#package_mark" } ] }, "3": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)\\bis\\b", "beginCaptures": { "0": { "name": "keyword.ada" } }, "end": "(?=(end|;))", "patterns": [ { "name": "meta.declaration.package.generic.ada", "begin": "(?i)\\bnew\\b", "beginCaptures": { "0": { "name": "keyword.operator.new.ada" } }, "end": "(?=;)", "patterns": [ { "include": "#package_mark" }, { "include": "#actual_parameter_part" } ] }, { "match": "(?i)\\bprivate\\b", "name": "keyword.ada" }, { "include": "#basic_declarative_item" }, { "include": "#comment" } ] }, { "include": "#aspect_specification" } ] }, "parameter_association": { "patterns": [ { "match": "((?:\\w|\\d|_)+)\\s*(=>)", "captures": { "1": { "name": "variable.parameter.ada" }, "2": { "name": "keyword.other.ada" } } }, { "include": "#expression" } ] }, "parameter_profile": { "begin": "\\(", "end": "\\)", "captures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "name": "punctuation.ada", "match": ";" }, { "include": "#parameter_specification" } ] }, "parameter_specification": { "patterns": [ { "name": "meta.type.annotation.ada", "begin": ":(?!=)", "end": "(?=[:;)])", "beginCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "name": "keyword.ada", "match": "(?i)\\b(in|out)\\b" }, { "include": "#subtype_mark" } ] }, { "begin": ":=", "end": "(?=[:;)])", "beginCaptures": { "0": { "name": "keyword.operator.new.ada" } }, "patterns": [ { "include": "#expression" } ] }, { "name": "punctuation.ada", "match": "," }, { "name": "variable.parameter.ada", "match": "\\b(?:\\w|\\d|\\.|_)+\\b" }, { "include": "#comment" } ] }, "pragma": { "name": "meta.pragma.ada", "begin": "(?i)\\b(pragma)\\s+((?:\\w|\\d|_)+)\\b", "end": "(;)", "beginCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "keyword.control.directive.ada" } }, "endCaptures": { "1": { "name": "punctuation.ada" } }, "patterns": [ { "include": "#expression" } ] }, "preprocessor": { "name": "meta.preprocessor.ada", "patterns": [ { "match": "^\\s*(#)(if|elsif)\\s+(.*)$", "captures": { "1": { "name": "punctuation.definition.directive.ada" }, "2": { "name": "keyword.control.directive.conditional.ada" }, "3": { "patterns": [ { "include": "#expression" } ] } } }, { "match": "^\\s*(#)(end if)(;)", "captures": { "1": { "name": "punctuation.definition.directive.ada" }, "2": { "name": "keyword.control.directive.conditional" }, "3": { "name": "punctuation.ada" } } }, { "match": "^\\s*(#)(else)", "captures": { "1": { "name": "punctuation.definition.directive.ada" }, "2": { "name": "keyword.control.directive.conditional" } } } ] }, "procedure_body": { "name": "meta.declaration.procedure.body.ada", "begin": "(?i)\\b(overriding\\s+)?(procedure)\\s+((?:\\w|\\d|\\.|_)+)\\b", "end": "(?i)(?:\\b(end)\\s+(\\3)\\s*)?(;)", "beginCaptures": { "1": { "name": "storage.visibility.ada" }, "2": { "name": "keyword.ada" }, "3": { "name": "entity.name.function.ada" } }, "endCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "entity.name.function.ada" }, "3": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)\\bis\\b", "end": "(?i)(?=(with|begin|;))", "beginCaptures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "name": "meta.declaration.package.generic.ada", "begin": "(?i)\\bnew\\b", "beginCaptures": { "0": { "name": "keyword.operator.new.ada" } }, "end": "(?=;)", "patterns": [ { "match": "((?:\\w|\\d|\\.|_)+)", "name": "entity.name.function.ada" }, { "include": "#actual_parameter_part" } ] }, { "match": "(?i)\\b(null|abstract)\\b", "name": "storage.modifier.ada" }, { "include": "#declarative_item" } ] }, { "begin": "(?i)\\bbegin\\b", "end": "(?i)(?=\\bend\\b)", "beginCaptures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "include": "#handled_sequence_of_statements" } ] }, { "include": "#subprogram_renaming_declaration" }, { "include": "#aspect_specification" }, { "include": "#parameter_profile" }, { "include": "#comment" } ] }, "procedure_call_statement": { "name": "meta.statement.call.ada", "begin": "(?i)\\b((?:\\w|\\d|_|\\.)+)\\b", "end": ";", "beginCaptures": { "1": { "name": "entity.name.function.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "include": "#attribute" }, { "include": "#actual_parameter_part" }, { "include": "#comment" } ] }, "procedure_specification": { "patterns": [ { "include": "#procedure_body" } ] }, "protected_body": { "name": "meta.declaration.procedure.body.ada", "begin": "(?i)\\b(protected)\\s+(body)\\s+((?:\\w|\\d|\\.|_)+)\\b", "end": "(?i)(?:\\b(end)\\s*(\\s\\3)\\s*)(;)", "beginCaptures": { "1": { "name": "storage.modifier.ada" }, "2": { "name": "keyword.ada" }, "3": { "name": "entity.name.body.ada" } }, "endCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "entity.name.body.ada" }, "3": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)\\bis\\b", "end": "(?i)\\b(?=end)\\b", "beginCaptures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "include": "#protected_operation_item" } ] } ] }, "protected_element_declaration": { "patterns": [ { "include": "#subprogram_specification" }, { "include": "#aspect_clause" }, { "include": "#entry_declaration" }, { "include": "#component_declaration" }, { "include": "#pragma" } ] }, "protected_operation_item": { "patterns": [ { "include": "#subprogram_specification" }, { "include": "#subprogram_body" }, { "include": "#aspect_clause" }, { "include": "#entry_body" } ] }, "positional_array_aggregate": { "name": "meta.definition.array.aggregate.positional.ada", "patterns": [ { "match": "(?i)\\b(others)\\s*(=>)\\s*([^,\\)]+)", "captures": { "1": { "name": "keyword.ada" }, "2": { "name": "keyword.other.ada" }, "3": { "patterns": [ { "name": "keyword.modifier.unknown.ada", "match": "<>" }, { "include": "#expression" } ] } } }, { "include": "#expression" } ] }, "raise_statement": { "name": "meta.statement.raise.ada", "begin": "(?i)\\braise\\b", "end": ";", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)\\bwith\\b", "end": "(?=;)", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "patterns": [ { "include": "#expression" } ] }, { "name": "entity.name.exception.ada", "match": "\\b(\\w|\\d|\\.|_)+\\b" } ] }, "raise_expression": { "name": "meta.expression.raise.ada", "begin": "(?i)\\braise\\b", "end": "(?=;)", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "patterns": [ { "begin": "(?i)\\bwith\\b", "end": "(?=(;|\\))", "beginCaptures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "include": "#expression" } ] }, { "name": "entity.name.exception.ada", "match": "\\b(\\w|\\d|_)+\\b" } ] }, "range_constraint": { "begin": "(?i)\\brange\\b", "end": "(?=(\\bwith\\b|;))", "beginCaptures": { "0": { "name": "storage.modifier.ada" } }, "patterns": [ { "name": "keyword.ada", "match": "\\.\\." }, { "name": "keyword.modifier.unknown.ada", "match": "<>" }, { "include": "#expression" } ] }, "relational_operator": { "name": "keyword.operator.relational.ada", "match": "(=|/=|<|<=|>|>=)" }, "record_representation_clause": { "name": "meta.aspect.clause.record.representation.ada", "begin": "(?i)\\b(record)\\b", "end": "(?i)\\b(end)\\s+(record)\\b", "beginCaptures": { "1": { "name": "storage.modifier.ada" } }, "endCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "storage.modifier.ada" } }, "patterns": [ { "include": "#component_clause" }, { "include": "#comment" } ] }, "real_type_definition": { "name": "meta.declaration.type.definition.real-type.ada", "patterns": [ { "include": "#scalar_constraint" } ] }, "record_type_definition": { "patterns": [ { "name": "meta.declaration.type.definition.record.null.ada", "match": "(?i)\\b(?:(abstract)\\s+)?(?:(tagged)\\s+)?(?:(limited)\\s+)?(null)\\s+(record)\\b", "captures": { "1": { "name": "storage.modifier.ada" }, "2": { "name": "storage.modifier.ada" }, "3": { "name": "storage.modifier.ada" }, "4": { "name": "storage.modifier.ada" }, "5": { "name": "storage.modifier.ada" } }, "patterns": [ { "include": "#component_item" } ] }, { "name": "meta.declaration.type.definition.record.ada", "begin": "(?i)\\b(?:(abstract)\\s+)?(?:(tagged)\\s+)?(?:(limited)\\s+)?(record)\\b", "end": "(?i)\\b(end)\\s+(record)\\b", "beginCaptures": { "1": { "name": "storage.modifier.ada" }, "2": { "name": "storage.modifier.ada" }, "3": { "name": "storage.modifier.ada" }, "4": { "name": "storage.modifier.ada" } }, "endCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "storage.modifier.ada" } }, "patterns": [ { "include": "#component_item" } ] } ] }, "regular_type_declaration": { "name": "meta.declaration.type.definition.regular.ada", "begin": "(?i)\\b(type)\\b", "end": ";", "beginCaptures": { "1": { "name": "keyword.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)\\bis\\b", "end": "(?i)(?=(with(?!\\s+(private))|;))", "beginCaptures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "include": "#type_definition" } ] }, { "begin": "(?i)\\b(?<=type)\\b", "end": "(?i)(?=(is|;))", "patterns": [ { "include": "#known_discriminant_part" }, { "include": "#subtype_mark" } ] }, { "include": "#aspect_specification" } ] }, "requeue_statement": { "name": "meta.statement.requeue.ada", "begin": "(?i)\\brequeue\\b", "end": ";", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "name": "keyword.control.ada", "match": "(?i)\\b(with|abort)\\b" }, { "name": "entity.name.function.ada", "match": "\\b(\\w|\\d|\\.|_)+\\b" } ] }, "result_profile": { "begin": "(?i)\\breturn\\b", "end": "(?=(is|with|renames|;))", "beginCaptures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "include": "#subtype_mark" } ] }, "return_statement": { "name": "meta.statement.return.ada", "begin": "(?i)\\breturn\\b", "end": ";", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)\\bdo\\b", "end": "(?i)\\b(end)\\s+(return)\\s*(?=;)", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "endCaptures": { "1": { "name": "keyword.control.ada" }, "2": { "name": "keyword.control.ada" } }, "patterns": [ { "include": "#label" }, { "include": "#statement" } ] }, { "match": "\\b((?:\\w|\\d|_)+)\\s*(:)\\s*((?:\\w|\\d|\\.|_)+)\\b", "captures": { "1": { "name": "variable.name.ada" }, "2": { "name": "punctuation.ada" }, "3": { "name": "entity.name.type.ada" } } }, { "match": ":=", "name": "keyword.operator.new.ada" }, { "include": "#expression" } ] }, "scalar_constraint": { "name": "meta.declaration.constraint.scalar.ada", "patterns": [ { "begin": "(?i)\\b(digits|delta)\\b", "end": "(?i)(?=\\brange\\b|\\bdigits\\b|\\bwith\\b|;)", "beginCaptures": { "1": { "name": "storage.modifier.ada" } }, "patterns": [ { "include": "#expression" } ] }, { "include": "#range_constraint" }, { "include": "#expression" } ] }, "select_alternative": { "patterns": [ { "begin": "(?i)\\bterminate\\b", "end": ";", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } } }, { "include": "#statement" } ] }, "select_statement": { "name": "meta.statement.select.ada", "begin": "(?i)\\bselect\\b", "end": "(?i)\\b(end)\\s+(select)\\b", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "endCaptures": { "1": { "name": "keyword.control.ada" }, "2": { "name": "keyword.control.ada" } }, "patterns": [ { "begin": "(?i)\\b(?:(or)|(?<=select))\\b", "end": "(?i)\\b(?=(or|else|end))\\b", "beginCaptures": { "1": { "name": "keyword.control.ada" } }, "patterns": [ { "include": "#guard" }, { "include": "#select_alternative" } ] }, { "begin": "(?i)\\belse\\b", "end": "(?i)\\b(?=end)\\b", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "patterns": [ { "include": "#statement" } ] } ] }, "signed_integer_type_definition": { "patterns": [ { "include": "#range_constraint" } ] }, "simple_loop_statement": { "name": "meta.statement.loop.ada", "begin": "(?i)\\bloop\\b", "end": "(?i)\\b(end)\\s+(loop)(\\s+(?:\\w|\\d|_)+)?\\s*(;)", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "endCaptures": { "1": { "name": "keyword.control.ada" }, "2": { "name": "keyword.control.ada" }, "3": { "name": "entity.name.label.ada" }, "4": { "name": "punctuation.ada" } }, "patterns": [ { "include": "#statement" } ] }, "single_protected_declaration": { "name": "meta.declaration.protected.ada", "begin": "(?i)\\b(protected)\\s+((?:\\w|\\d|_)+)\\b", "end": "(?i)(?:\\b(end)\\s*(\\s\\2)?\\s*)?(;)", "beginCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "entity.name.protected.ada" } }, "endCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "entity.name.protected.ada" }, "3": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)\\bis\\b", "end": "(?i)(?=(\\bend\\b|;))", "beginCaptures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "begin": "(?i)\\bnew\\b", "end": "(?i)\\bwith\\b", "captures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "match": "(?i)\\band\\b", "name": "keyword.ada" }, { "include": "#subtype_mark" }, { "include": "#comment" } ] }, { "match": "(?i)\\bprivate\\b", "name": "keyword.ada" }, { "include": "#protected_element_declaration" }, { "include": "#comment" } ] }, { "include": "#comment" } ] }, "single_task_declaration": { "begin": "(?i)\\b(task)\\s+((?:\\w|\\d|_)+)\\b", "end": "(?i)(?:\\b(end)\\s*(\\s\\2)?\\s*)?(;)", "beginCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "entity.name.task.ada" } }, "endCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "entity.name.task.ada" }, "3": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)\\bis\\b", "beginCaptures": { "0": { "name": "keyword.ada" } }, "end": "(?i)\\b(?=end)\\b", "patterns": [ { "begin": "(?i)\\bnew\\b", "end": "(?i)\\bwith\\b", "captures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "match": "(?i)\\band\\b", "name": "keyword.ada" }, { "include": "#subtype_mark" }, { "include": "#comment" } ] }, { "match": "(?i)\\bprivate\\b", "name": "keyword.ada" }, { "include": "#task_item" }, { "include": "#comment" } ] }, { "include": "#comment" } ] }, "statement": { "patterns": [ { "begin": "(?i)\\bbegin\\b", "end": "(?i)\\b(end)\\s*(;)", "beginCaptures": { "0": { "name": "keyword.ada" } }, "endCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "punctuation.ada" } }, "patterns": [ { "include": "#handled_sequence_of_statements" } ] }, { "include": "#label" }, { "include": "#null_statement" }, { "include": "#return_statement" }, { "include": "#assignment_statement" }, { "include": "#exit_statement" }, { "include": "#goto_statement" }, { "include": "#requeue_statement" }, { "include": "#delay_statement" }, { "include": "#abort_statement" }, { "include": "#raise_statement" }, { "include": "#if_statement" }, { "include": "#case_statement" }, { "include": "#loop_statement" }, { "include": "#block_statement" }, { "include": "#select_statement" }, { "include": "#accept_statement" }, { "include": "#pragma" }, { "include": "#procedure_call_statement" }, { "include": "#comment" } ] }, "string_literal": { "name": "string.quoted.double.ada", "match": "(\").*?(\")", "captures": { "1": { "name": "punctuation.definition.string.ada" }, "2": { "name": "punctuation.definition.string.ada" } } }, "subprogram_body": { "name": "meta.declaration.subprogram.body.ada", "patterns": [ { "include": "#procedure_body" }, { "include": "#function_body" } ] }, "subprogram_renaming_declaration": { "begin": "(?i)\\brenames\\b", "end": "(?=(with|;))", "beginCaptures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "match": "(?:\\w|\\d|_|\\.)+", "name": "entity.name.function.ada" } ] }, "subprogram_specification": { "name": "meta.declaration.subprogram.specification.ada", "patterns": [ { "include": "#procedure_specification" }, { "include": "#function_specification" } ] }, "subtype_declaration": { "name": "meta.declaration.subtype.ada", "begin": "(?i)\\bsubtype\\b", "end": ";", "beginCaptures": { "0": { "name": "keyword.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)\\bis\\b", "beginCaptures": { "0": { "name": "keyword.ada" } }, "end": "(?=;)", "patterns": [ { "name": "storage.modifier.ada", "match": "(?i)\\b(not\\s+null)\\b" }, { "include": "#composite_constraint" }, { "include": "#aspect_specification" }, { "include": "#subtype_indication" } ] }, { "begin": "(?i)(?<=subtype)", "end": "(?i)\\b(?=is)\\b", "patterns": [ { "include": "#subtype_mark" } ] } ] }, "subtype_indication": { "name": "meta.declaration.indication.subtype.ada", "patterns": [ { "include": "#scalar_constraint" }, { "include": "#subtype_mark" } ] }, "subtype_mark": { "patterns": [ { "name": "storage.visibility.ada", "match": "(?i)\\b(access|aliased|not\\s+null|constant)\\b" }, { "include": "#attribute" }, { "include": "#actual_parameter_part" }, { "begin": "(?i)\\b(procedure|function)\\b", "beginCaptures": { "0": { "name": "keyword.ada" } }, "end": "(?=(;|\\)))", "patterns": [ { "include": "#parameter_profile" }, { "begin": "(?i)\\breturn\\b", "end": "(?=(;|\\)))", "beginCaptures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "include": "#subtype_mark" } ] } ] }, { "name": "entity.name.type.ada", "match": "\\b(?:\\w|\\d|\\.|_)+\\b", "captures": { "0": { "patterns": [ { "name": "punctuation.ada", "match": "[_.]" } ] } } }, { "include": "#comment" } ] }, "task_body": { "name": "meta.declaration.task.body.ada", "begin": "(?i)\\b(task)\\s+(body)\\s+((\\w|\\d|\\.|_)+)\\b", "end": "(?i)(?:\\b(end)\\s*(?:\\s(\\3))?\\s*)?(;)", "beginCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "keyword.ada" }, "3": { "name": "entity.name.task.ada" } }, "endCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "entity.name.task.ada" }, "3": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)\\bbegin\\b", "end": "(?i)(?=end)", "beginCaptures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "include": "#handled_sequence_of_statements" } ] }, { "include": "#aspect_specification" }, { "begin": "(?i)\\bis\\b", "beginCaptures": { "0": { "name": "keyword.ada" } }, "end": "(?i)(?=(with|begin))", "patterns": [ { "include": "#declarative_item" } ] } ] }, "task_item": { "patterns": [ { "include": "#aspect_clause" }, { "include": "#entry_declaration" } ] }, "task_type_declaration": { "name": "meta.declaration.type.task.ada", "begin": "(?i)\\b(task)\\s+(type)\\s+((\\w|\\d|\\.|_)+)\\b", "end": "(?i)(?:\\b(end)\\s*(?:\\s(\\3))?\\s*)?(;)", "beginCaptures": { "1": { "name": "storage.modifier.ada" }, "2": { "name": "keyword.ada" }, "3": { "name": "entity.name.task.ada" } }, "endCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "entity.name.task.ada" }, "3": { "name": "punctuation.ada" } }, "patterns": [ { "include": "#known_discriminant_part" }, { "begin": "(?i)\\bis\\b", "beginCaptures": { "0": { "name": "keyword.ada" } }, "end": "(?i)\\b(?=end)\\b", "patterns": [ { "begin": "(?i)\\bnew\\b", "end": "(?i)\\bwith\\b", "captures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "match": "(?i)\\band\\b", "name": "keyword.ada" }, { "include": "#subtype_mark" }, { "include": "#comment" } ] }, { "match": "(?i)\\bprivate\\b", "name": "keyword.ada" }, { "include": "#task_item" }, { "include": "#comment" } ] }, { "include": "#comment" } ] }, "type_declaration": { "name": "meta.declaration.type.ada", "patterns": [ { "include": "#full_type_declaration" } ] }, "type_definition": { "name": "meta.declaration.type.definition.ada", "patterns": [ { "include": "#enumeration_type_definition" }, { "include": "#integer_type_definition" }, { "include": "#real_type_definition" }, { "include": "#array_type_definition" }, { "include": "#record_type_definition" }, { "include": "#access_type_definition" }, { "include": "#interface_type_definition" }, { "include": "#derived_type_definition" } ] }, "use_clause": { "name": "meta.context.use.ada", "patterns": [ { "include": "#use_type_clause" }, { "include": "#use_package_clause" } ] }, "use_package_clause": { "name": "meta.context.use.package.ada", "begin": "(?i)\\buse\\b", "end": ";", "beginCaptures": { "0": { "name": "keyword.other.using.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "name": "punctuation.ada", "match": "," }, { "include": "#package_mark" } ] }, "use_type_clause": { "name": "meta.context.use.type.ada", "begin": "(?i)\\b(use)\\s+(?:(all)\\s+)?(type)\\b", "end": ";", "beginCaptures": { "1": { "name": "keyword.other.using.ada" }, "2": { "name": "keyword.modifier.ada" }, "3": { "name": "keyword.modifier.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "name": "punctuation.ada", "match": "," }, { "include": "#subtype_mark" } ] }, "value": { "patterns": [ { "include": "#based_literal" }, { "include": "#decimal_literal" }, { "include": "#character_literal" }, { "include": "#string_literal" } ] }, "variant_part": { "name": "meta.declaration.variant.ada", "begin": "(?i)\\bcase\\b", "end": "(?i)\\b(end)\\s+(case);", "beginCaptures": { "0": { "name": "keyword.ada" } }, "endCaptures": { "1": { "name": "keyword.ada" }, "2": { "name": "keyword.ada" }, "3": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)\\b(?<=case)\\b", "end": "(?i)\\bis\\b", "endCaptures": { "0": { "name": "keyword.ada" } }, "patterns": [ { "match": "(?:\\w|\\d|_)+", "name": "variable.name.ada" }, { "include": "#comment" } ] }, { "begin": "(?i)\\b(?<=is)\\b", "end": "(?i)\\b(?=end)\\b", "patterns": [ { "begin": "(?i)\\bwhen\\b", "end": "=>", "beginCaptures": { "0": { "name": "keyword.ada" } }, "endCaptures": { "0": { "name": "keyword.other.ada" } }, "patterns": [ { "match": "\\|", "name": "punctuation.ada" }, { "match": "(?i)\\bothers\\b", "name": "keyword.ada" }, { "include": "#expression" } ] }, { "include": "#component_item" } ] } ] }, "while_loop_statement": { "name": "meta.statement.loop.while.ada", "begin": "(?i)\\bwhile\\b", "end": "(?i)\\b(end)\\s+(loop)(\\s+(?:\\w|\\d|_)+)?\\s*(;)", "beginCaptures": { "0": { "name": "keyword.control.ada" } }, "endCaptures": { "1": { "name": "keyword.control.ada" }, "2": { "name": "keyword.control.ada" }, "3": { "name": "entity.name.label.ada" }, "4": { "name": "punctuation.ada" } }, "patterns": [ { "begin": "(?i)(?<=while)\\b", "end": "(?i)\\bloop\\b", "endCaptures": { "0": { "name": "keyword.control.ada" } }, "patterns": [ { "include": "#expression" } ] }, { "include": "#statement" } ] }, "with_clause": { "name": "meta.context.with.ada", "begin": "(?i)\\b(?:(limited)\\s+)?(?:(private)\\s+)?(with)\\b", "end": ";", "beginCaptures": { "1": { "name": "keyword.modifier.ada" }, "2": { "name": "storage.visibility.ada" }, "3": { "name": "keyword.other.using.ada" } }, "endCaptures": { "0": { "name": "punctuation.ada" } }, "patterns": [ { "name": "punctuation.ada", "match": "," }, { "include": "#package_mark" } ] } }, "scopeName": "source.ada" }