<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language
[
  <!ENTITY b2 "[0-1]++(_?[0-1])*+">
  <!ENTITY b3 "[0-2]++(_?[0-2])*+">
  <!ENTITY b4 "[0-3]++(_?[0-3])*+">
  <!ENTITY b5 "[0-4]++(_?[0-4])*+">
  <!ENTITY b6 "[0-5]++(_?[0-5])*+">
  <!ENTITY b7 "[0-6]++(_?[0-6])*+">
  <!ENTITY b8 "[0-7]++(_?[0-7])*+">
  <!ENTITY b9 "[0-8]++(_?[0-8])*+">
  <!ENTITY b10 "[0-9]++(_?[0-9])*+">
  <!ENTITY b11 "[0-9a-a]++(_?[0-9]a-a)*+">
  <!ENTITY b12 "[0-9a-b]++(_?[0-9]a-b)*+">
  <!ENTITY b13 "[0-9a-c]++(_?[0-9]a-c)*+">
  <!ENTITY b14 "[0-9a-d]++(_?[0-9]a-d)*+">
  <!ENTITY b15 "[0-9a-e]++(_?[0-9]a-e)*+">
  <!ENTITY b16 "[0-9a-f]++(_?[0-9]a-f)*+">
]>
<language name="Ada"
          version="7"
          kateversion="5.79"
          section="Sources"
          extensions="*.adb;*.ads;*.ada;*.a"
          indenter="ada"
          mimetype="text/x-adasrc">
  <highlighting>
    <!-- http://ada-auth.org/standards/rm12_w_tc1/html/RM-P.html -->

    <!-- http://ada-auth.org/standards/rm12_w_tc1/html/RM-2-9.html -->
    <list name="keywords">
      <item>abort</item>
      <item>abs</item>
      <item>abstract</item>
      <item>accept</item>
      <item>access</item>
      <item>aliased</item>
      <item>all</item>
      <item>and</item>
      <item>array</item>
      <item>at</item>
      <item>begin</item>
      <item>body</item>
      <item>case</item>
      <item>constant</item>
      <item>declare</item>
      <item>delay</item>
      <item>delta</item>
      <item>digits</item>
      <item>do</item>
      <item>else</item>
      <item>elsif</item>
      <item>end</item>
      <item>entry</item>
      <item>exception</item>
      <item>exit</item>
      <item>for</item>
      <item>function</item>
      <item>generic</item>
      <item>goto</item>
      <item>if</item>
      <item>in</item>
      <item>interface</item>
      <item>is</item>
      <item>limited</item>
      <item>loop</item>
      <item>mod</item>
      <item>new</item>
      <item>not</item>
      <item>null</item>
      <item>of</item>
      <item>or</item>
      <item>others</item>
      <item>out</item>
      <item>overriding</item>
      <item>package</item>
      <item>pragma</item>
      <item>private</item>
      <item>procedure</item>
      <item>protected</item>
      <item>raise</item>
      <item>range</item>
      <item>record</item>
      <item>rem</item>
      <item>renames</item>
      <item>requeue</item>
      <item>return</item>
      <item>reverse</item>
      <item>select</item>
      <item>separate</item>
      <item>some</item>
      <item>subtype</item>
      <item>synchronized</item>
      <item>tagged</item>
      <item>task</item>
      <item>terminate</item>
      <item>then</item>
      <item>type</item>
      <item>until</item>
      <item>use</item>
      <item>when</item>
      <item>while</item>
      <item>with</item>
      <item>xor</item>
    </list>

    <list name="pragmas">
      <item>all_calls_remote</item>
      <item>assert</item>
      <item>assertion_policy</item>
      <item>asynchronous</item>
      <item>atomic</item>
      <item>atomic_components</item>
      <item>attach_handler</item>
      <item>controlled</item>
      <item>convention</item>
      <item>detect_blocking</item>
      <item>discard_names</item>
      <item>elaborate</item>
      <item>elaborate_all</item>
      <item>elaborate_body</item>
      <item>export</item>
      <item>import</item>
      <item>inline</item>
      <item>inspection_point</item>
      <item>interrupt_handler</item>
      <item>interrupt_priority</item>
      <item>linker_options</item>
      <item>list</item>
      <item>locking_policy</item>
      <item>no_return</item>
      <item>normalize_scalars</item>
      <item>optimize</item>
      <item>pack</item>
      <item>page</item>
      <item>partition_elaboration_policy</item>
      <item>preelaborable_initialization</item>
      <item>preelaborate</item>
      <item>priority</item>
      <item>priority_specific_dispatching</item>
      <item>profile</item>
      <item>pure</item>
      <item>queuing_policy</item>
      <item>relative_deadline</item>
      <item>remote_call_interface</item>
      <item>remote_types</item>
      <item>restrictions</item>
      <item>reviewable</item>
      <item>shared_passive</item>
      <item>storage_size</item>
      <item>suppress</item>
      <item>task_dispatching_policy</item>
      <item>unchecked_union</item>
      <item>unsuppress</item>
      <item>volatile</item>
      <item>volatile_components</item>
    </list>

    <list name="types">
      <item>boolean</item>
      <item>character</item>
      <item>float</item>
      <item>integer</item>
      <item>long_float</item>
      <item>long_integer</item>
      <item>long_long_float</item>
      <item>long_long_integer</item>
      <item>short_float</item>
      <item>short_integer</item>
      <item>string</item>
      <item>wide_string</item>
      <item>wide_character</item>
      <item>wide_wide_character</item>
      <item>wide_wide_string</item>
    </list>

    <contexts>
      <context attribute="Normal Text" lineEndContext="#stay" name="Default">
        <DetectSpaces />

        <StringDetect attribute="Region Marker" context="Region Marker" String="--  BEGIN" beginRegion="RegionMarker" firstNonSpace="true" />
        <StringDetect attribute="Region Marker" context="Region Marker" String="--  END" endRegion="RegionMarker" firstNonSpace="true" />
        <Detect2Chars attribute="Comment" context="Comment" char="-" char1="-"/>
        <AnyChar attribute="Symbol" context="#stay" String=":!%&amp;()+,-/.*&lt;=&gt;|"/>
        <AnyChar context="Numeric" String="0123456789" lookAhead="1"/>
        <DetectChar context="String" char="&quot;" lookAhead="1"/>

        <WordDetect attribute="Keyword" context="#stay" String="record" insensitive="true" beginRegion="RecordRegion"/>
        <WordDetect attribute="Keyword" context="#stay" String="case"   insensitive="true" beginRegion="CaseRegion"/>
        <WordDetect attribute="Keyword" context="#stay" String="if"     insensitive="true" beginRegion="IfRegion"/>
        <WordDetect attribute="Keyword" context="#stay" String="loop"   insensitive="true" beginRegion="LoopRegion"/>
        <WordDetect attribute="Keyword" context="#stay" String="select" insensitive="true" beginRegion="SelectRegion"/>
        <WordDetect attribute="Keyword" context="#stay" String="begin"  insensitive="true" beginRegion="BeginRegion"/>

        <WordDetect attribute="Keyword" context="End"   String="end"    insensitive="true" lookAhead="1"/>
        <WordDetect attribute="Keyword" context="Null"  String="null"   insensitive="true"/>

        <keyword attribute="Keyword" context="#stay" String="keywords"/>
        <keyword attribute="Pragmas" context="#stay" String="pragmas" />
        <keyword attribute="Data Type" context="#stay" String="types" />

        <DetectIdentifier />

        <RegExpr attribute="Char" context="#stay" String="'.'"/>
      </context>

      <context attribute="Keyword" lineEndContext="#pop" name="End">
        <RegExpr    attribute="Keyword" context="#pop" String="end\s+record\b" insensitive="true"   endRegion="RecordRegion"/>
        <RegExpr    attribute="Keyword" context="#pop" String="end\s+case\b"   insensitive="true"   endRegion="CaseRegion"/>
        <RegExpr    attribute="Keyword" context="#pop" String="end\s+if\b"     insensitive="true"   endRegion="IfRegion"/>
        <RegExpr    attribute="Keyword" context="#pop" String="end\s+loop\b"   insensitive="true"   endRegion="LoopRegion"/>
        <RegExpr    attribute="Keyword" context="#pop" String="end\s+select\b" insensitive="true"   endRegion="SelectRegion"/>
        <DetectIdentifier attribute="Keyword" context="#pop" endRegion="BeginRegion"/>
      </context>

      <context attribute="Normal Text" lineEndContext="#pop" name="Null" fallthroughContext="#pop">
        <DetectSpaces attribute="Normal Text"/>
        <WordDetect attribute="Keyword" context="#pop" String="record" insensitive="true"/>
      </context>

      <context attribute="Normal Text" lineEndContext="#pop" name="Numeric">
        <RegExpr attribute="Float" context="NumericExp" String="\b&b10;\.&b10;"/>
        <RegExpr attribute="Decimal" context="NumericExp" String="\b&b10;(?!#)"/>
        <WordDetect attribute="Base" context="Base2" String="2#" additionalDeliminator="#"/>
        <WordDetect attribute="Base" context="Base3" String="3#" additionalDeliminator="#"/>
        <WordDetect attribute="Base" context="Base4" String="4#" additionalDeliminator="#"/>
        <WordDetect attribute="Base" context="Base5" String="5#" additionalDeliminator="#"/>
        <WordDetect attribute="Base" context="Base6" String="6#" additionalDeliminator="#"/>
        <WordDetect attribute="Base" context="Base7" String="7#" additionalDeliminator="#"/>
        <WordDetect attribute="Base" context="Base8" String="8#" additionalDeliminator="#"/>
        <WordDetect attribute="Base" context="Base9" String="9#" additionalDeliminator="#"/>
        <WordDetect attribute="Base" context="Base10" String="10#" additionalDeliminator="#"/>
        <WordDetect attribute="Base" context="Base11" String="11#" additionalDeliminator="#"/>
        <WordDetect attribute="Base" context="Base12" String="12#" additionalDeliminator="#"/>
        <WordDetect attribute="Base" context="Base13" String="13#" additionalDeliminator="#"/>
        <WordDetect attribute="Base" context="Base14" String="14#" additionalDeliminator="#"/>
        <WordDetect attribute="Base" context="Base15" String="15#" additionalDeliminator="#"/>
        <WordDetect attribute="Base" context="Base16" String="16#" additionalDeliminator="#"/>
      </context>
      <context attribute="Normal Text" lineEndContext="#pop" name="NumericExp" fallthroughContext="#pop#pop">
        <RegExpr attribute="Exponent" context="#pop#pop" String="(?:[eE][-+]?&b10;)"/>
      </context>

      <context attribute="Normal Text" lineEndContext="#pop" name="Base2" fallthroughContext="#pop#pop">
        <RegExpr attribute="Float" context="BaseExp" String="&b2;\.&b2;"/>
        <RegExpr attribute="Decimal" context="BaseExp" String="&b2;"/>
      </context>
      <context attribute="Normal Text" lineEndContext="#pop" name="Base3" fallthroughContext="#pop#pop">
        <RegExpr attribute="Float" context="BaseExp" String="&b3;\.&b3;"/>
        <RegExpr attribute="Decimal" context="BaseExp" String="&b3;"/>
      </context>
      <context attribute="Normal Text" lineEndContext="#pop" name="Base4" fallthroughContext="#pop#pop">
        <RegExpr attribute="Float" context="BaseExp" String="&b4;\.&b4;"/>
        <RegExpr attribute="Decimal" context="BaseExp" String="&b4;"/>
      </context>
      <context attribute="Normal Text" lineEndContext="#pop" name="Base5" fallthroughContext="#pop#pop">
        <RegExpr attribute="Float" context="BaseExp" String="&b5;\.&b5;"/>
        <RegExpr attribute="Decimal" context="BaseExp" String="&b5;"/>
      </context>
      <context attribute="Normal Text" lineEndContext="#pop" name="Base6" fallthroughContext="#pop#pop">
        <RegExpr attribute="Float" context="BaseExp" String="&b6;\.&b6;"/>
        <RegExpr attribute="Decimal" context="BaseExp" String="&b6;"/>
      </context>
      <context attribute="Normal Text" lineEndContext="#pop" name="Base7" fallthroughContext="#pop#pop">
        <RegExpr attribute="Float" context="BaseExp" String="&b7;\.&b7;"/>
        <RegExpr attribute="Decimal" context="BaseExp" String="&b7;"/>
      </context>
      <context attribute="Normal Text" lineEndContext="#pop" name="Base8" fallthroughContext="#pop#pop">
        <RegExpr attribute="Float" context="BaseExp" String="&b8;\.&b8;"/>
        <RegExpr attribute="Decimal" context="BaseExp" String="&b8;"/>
      </context>
      <context attribute="Normal Text" lineEndContext="#pop" name="Base9" fallthroughContext="#pop#pop">
        <RegExpr attribute="Float" context="BaseExp" String="&b9;\.&b9;"/>
        <RegExpr attribute="Decimal" context="BaseExp" String="&b9;"/>
      </context>
      <context attribute="Normal Text" lineEndContext="#pop" name="Base10" fallthroughContext="#pop#pop">
        <RegExpr attribute="Float" context="BaseExp" String="&b10;\.&b10;"/>
        <RegExpr attribute="Decimal" context="BaseExp" String="&b10;"/>
      </context>
      <context attribute="Normal Text" lineEndContext="#pop" name="Base11" fallthroughContext="#pop#pop">
        <RegExpr attribute="Float" context="BaseExp" String="&b11;\.&b11;" insensitive="1"/>
        <RegExpr attribute="Decimal" context="BaseExp" String="&b11;" insensitive="1"/>
      </context>
      <context attribute="Normal Text" lineEndContext="#pop" name="Base12" fallthroughContext="#pop#pop">
        <RegExpr attribute="Float" context="BaseExp" String="&b12;\.&b12;" insensitive="1"/>
        <RegExpr attribute="Decimal" context="BaseExp" String="&b12;" insensitive="1"/>
      </context>
      <context attribute="Normal Text" lineEndContext="#pop" name="Base13" fallthroughContext="#pop#pop">
        <RegExpr attribute="Float" context="BaseExp" String="&b13;\.&b13;" insensitive="1"/>
        <RegExpr attribute="Decimal" context="BaseExp" String="&b13;" insensitive="1"/>
      </context>
      <context attribute="Normal Text" lineEndContext="#pop" name="Base14" fallthroughContext="#pop#pop">
        <RegExpr attribute="Float" context="BaseExp" String="&b14;\.&b14;" insensitive="1"/>
        <RegExpr attribute="Decimal" context="BaseExp" String="&b14;" insensitive="1"/>
      </context>
      <context attribute="Normal Text" lineEndContext="#pop" name="Base15" fallthroughContext="#pop#pop">
        <RegExpr attribute="Float" context="BaseExp" String="&b15;\.&b15;" insensitive="1"/>
        <RegExpr attribute="Decimal" context="BaseExp" String="&b15;" insensitive="1"/>
      </context>
      <context attribute="Normal Text" lineEndContext="#pop" name="Base16" fallthroughContext="#pop#pop">
        <RegExpr attribute="Float" context="BaseExp" String="&b16;\.&b16;" insensitive="1"/>
        <RegExpr attribute="Decimal" context="BaseExp" String="&b16;" insensitive="1"/>
      </context>
      <context attribute="Normal Text" lineEndContext="#pop" name="BaseExp" fallthroughContext="#pop#pop#pop">
        <DetectChar attribute="Base" context="#pop#pop!NumericExp" char="#"/>
      </context>

      <context attribute="Region Marker" lineEndContext="#pop" name="Region Marker">
      </context>

      <context attribute="String" lineEndContext="#pop" name="String" fallthroughContext="PartialString">
        <RangeDetect attribute="String" context="#pop" char="&quot;" char1="&quot;"/>
      </context>
      <context attribute="String" lineEndContext="#pop#pop" name="PartialString">
      </context>

      <context attribute="Comment" lineEndContext="#pop" name="Comment">
        <DetectSpaces attribute="Comment"/>
        <IncludeRules context="##Comments" />
        <DetectIdentifier attribute="Comment"/>
      </context>
    </contexts>
    <itemDatas>
      <itemData name="Normal Text" defStyleNum="dsNormal" />
      <itemData name="Keyword"     defStyleNum="dsKeyword" />
      <itemData name="Pragmas"     defStyleNum="dsExtension" bold="1" />
      <itemData name="Data Type"   defStyleNum="dsDataType"/>
      <itemData name="Decimal"     defStyleNum="dsDecVal" />
      <itemData name="Float"       defStyleNum="dsFloat" />
      <itemData name="Base"        defStyleNum="dsBaseN" />
      <itemData name="Exponent"    defStyleNum="dsDecVal" />
      <itemData name="Char"        defStyleNum="dsChar" />
      <itemData name="String"      defStyleNum="dsString" />
      <itemData name="Comment"     defStyleNum="dsComment" />
      <itemData name="Symbol"      defStyleNum="dsOperator"/>
      <itemData name="Region Marker" defStyleNum="dsRegionMarker" />
    </itemDatas>
  </highlighting>
  <general>
    <comments>
      <comment name="singleLine" start="--" position="afterwhitespace" />
    </comments>
    <keywords casesensitive="0" />
  </general>
</language>
<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
