Files
Basalt2/node_modules/shiki/dist/languages/ada.tmLanguage-c812cbb3.mjs
Robert Jelic 31787b0e9b Fix
2025-02-16 18:04:24 +01:00

4 lines
42 KiB
JavaScript

var ada_tmLanguage = {$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"};
export { ada_tmLanguage as default };