kjelsrud.dev/node_modules/shiki/languages/ada.tmLanguage.json
2023-07-19 21:31:30 +02:00

3871 lines
87 KiB
JSON

{
"$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|(?<!\\.)all|some|\\.\\.|delta|with)\\b",
"name": "keyword.ada"
}
]
},
"for_loop_statement": {
"name": "meta.statement.loop.for.ada",
"begin": "(?i)\\bfor\\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)(?<=for)",
"end": "(?i)\\bloop\\b",
"endCaptures": {
"0": {
"name": "keyword.control.ada"
}
},
"patterns": [
{
"match": "(?i)\\b((?:\\w|\\d|_)+)\\s+(in)(\\s+reverse)?\\b",
"captures": {
"1": {
"name": "variable.name.ada"
},
"2": {
"name": "keyword.control.ada"
},
"3": {
"name": "keyword.control.ada"
}
}
},
{
"match": "(?i)\\b((?:\\w|\\d|_)+)(?:\\s*(:)\\s*((?:\\w|\\d|\\.|_)+))?\\s+(of)(\\s+reverse)?\\b",
"captures": {
"1": {
"name": "variable.name.ada"
},
"2": {
"name": "punctuation.ada"
},
"3": {
"patterns": [
{
"include": "#subtype_mark"
}
]
},
"4": {
"name": "keyword.control.ada"
},
"5": {
"name": "keyword.control.ada"
}
}
},
{
"include": "#expression"
}
]
},
{
"include": "#statement"
}
]
},
"full_type_declaration": {
"patterns": [
{
"include": "#task_type_declaration"
},
{
"include": "#regular_type_declaration"
}
]
},
"function_body": {
"name": "meta.declaration.function.body.ada",
"begin": "(?i)\\b(overriding\\s+)?(function)\\s+(?:((?:\\w|\\d|\\.|_)+\\b)|(\".+\"))",
"end": "(?i)(?:\\b(end)\\s+(\\3|\\4)\\s*)?(;)",
"beginCaptures": {
"1": {
"name": "storage.visibility.ada"
},
"2": {
"name": "keyword.ada"
},
"3": {
"name": "entity.name.function.ada"
},
"4": {
"patterns": [
{
"include": "#string_literal"
}
]
}
},
"endCaptures": {
"1": {
"name": "keyword.ada"
},
"2": {
"name": "entity.name.function.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"
},
{
"include": "#result_profile"
},
{
"include": "#subprogram_renaming_declaration"
},
{
"include": "#parameter_profile"
},
{
"name": "meta.function.body.spec_part.ada",
"begin": "(?i)\\bis\\b",
"beginCaptures": {
"0": {
"name": "keyword.ada"
}
},
"end": "(?i)(?=(with|begin|;))",
"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"
}
]
},
{
"name": "meta.declaration.function.abstract.ada",
"match": "(?i)\\babstract\\b",
"captures": {
"0": {
"name": "storage.modifier.ada"
}
}
},
{
"include": "#declarative_item"
},
{
"include": "#subprogram_renaming_declaration"
},
{
"include": "#expression"
}
]
}
]
},
"function_specification": {
"patterns": [
{
"include": "#function_body"
}
]
},
"goto_statement": {
"name": "meta.statement.goto.ada",
"begin": "(?i)\\bgoto\\b",
"end": ";",
"beginCaptures": {
"0": {
"name": "keyword.control.goto.ada"
}
},
"endCaptures": {
"0": {
"name": "punctuation.ada"
}
},
"patterns": [{}]
},
"guard": {
"begin": "(?i)\\bwhen\\b",
"end": "=>",
"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)(?:(?<!\\sand)\\s+(?=then))",
"beginCaptures": {
"0": {
"name": "keyword.control.ada"
}
},
"patterns": [
{
"include": "#expression"
}
]
},
{
"begin": "(?i)\\belse\\b",
"end": "(?i)(?=end)",
"beginCaptures": {
"0": {
"name": "keyword.control.ada"
}
},
"patterns": [
{
"include": "#statement"
}
]
},
{
"begin": "(?i)(?<=if)\\b",
"end": "(?i)(?:(?<!\\sand)\\s+(?=then))",
"endCaptures": {
"0": {
"name": "keyword.control.ada"
}
},
"patterns": [
{
"include": "#expression"
}
]
},
{
"begin": "(?i)\\bthen\\b",
"end": "(?i)(?=(elsif|else|end))",
"beginCaptures": {
"0": {
"name": "keyword.control.ada"
}
},
"patterns": [
{
"include": "#statement"
}
]
}
]
},
"integer_type_definition": {
"name": "meta.declaration.type.definition.integer.ada",
"patterns": [
{
"include": "#signed_integer_type_definition"
},
{
"include": "#modular_type_definition"
}
]
},
"interface_type_definition": {
"name": "meta.declaration.type.definition.interface.ada",
"begin": "(?i)\\b(?:(limited|task|protected|synchronized)\\s+)?(interface)",
"end": "(?i)(?=(with|;))",
"beginCaptures": {
"1": {
"name": "storage.modifier.ada"
},
"2": {
"name": "storage.modifier.ada"
}
},
"patterns": [
{
"name": "storage.modifier.ada",
"match": "(?i)\\band\\b"
},
{
"include": "#subtype_mark"
}
]
},
"keyword": {
"patterns": [
{
"name": "keyword.ada",
"match": "(?i)\\b(abort|abs|accept|all|and|at|begin|body|declare|delay|end|entry|exception|function|generic|in|is|mod|new|not|null|of|or|others|out|package|pragma|procedure|range|record|rem|renames|requeue|reverse|select|separate|some|subtype|then|type|use|when|with|xor)\\b"
},
{
"name": "keyword.control.ada",
"match": "(?i)\\b(case|do|else|elsif|exit|for|goto|if|loop|raise|return|terminate|until|while)\\b"
},
{
"name": "storage.modifier.ada",
"match": "(?i)\\b(abstract|access|aliased|array|constant|delta|digits|interface|limited|protected|synchronized|tagged|task)\\b"
},
{
"name": "storage.visibility.ada",
"match": "(?i)\\b(private|overriding)\\b"
},
{
"name": "keyword.modifier.unknown.ada",
"match": "<>"
},
{
"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"
}