3871 lines
87 KiB
JSON
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"
|
|
}
|