<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd"[
  <!ENTITY charsdelim "_;.&#34;(){}@">
  <!ENTITY wordsep "(?=[&charsdelim;]|\s|$)">
]>
<language name="Agda" version="9" kateversion="5.0" section="Sources" extensions="*.agda" mimetype="text/x-agda" author="Matthias C. M. Troffaes" license="LGPL">
  <highlighting>
    <list name="reserved keywords">
      <item>abstract</item>
      <item>codata</item>
      <item>coinductive</item>
      <item>constructor</item>
      <item>data</item>
      <item>do</item>
      <item>eta-equality</item>
      <item>field</item>
      <item>forall</item>
      <item>hiding</item>
      <item>import</item>
      <item>in</item>
      <item>inductive</item>
      <item>infix</item>
      <item>infixl</item>
      <item>infixr</item>
      <item>instance</item>
      <item>interleaved</item>
      <item>let</item>
      <item>macro</item>
      <item>module</item>
      <item>mutual</item>
      <item>no-eta-equality</item>
      <item>open</item>
      <item>overlap</item>
      <item>pattern</item>
      <item>postulate</item>
      <item>primitive</item>
      <item>private</item>
      <item>public</item>
      <item>quote</item>
      <item>quoteTerm</item>
      <item>record</item>
      <item>renaming</item>
      <item>rewrite</item>
      <item>syntax</item>
      <item>tactic</item>
      <item>to</item>
      <item>unquote</item>
      <item>unquoteDecl</item>
      <item>unquoteDef</item>
      <item>using</item>
      <item>variable</item>
      <item>where</item>
      <item>with</item>
    </list>
    <contexts>
      <context attribute="Normal" lineEndContext="#stay" name="code">
        <RegExpr attribute="Pragma"  context="#stay" String="\{-#.*#-\}" />
        <keyword attribute="Keyword" context="#stay" String="reserved keywords" />
        <RegExpr attribute="Type"    context="#stay" String="(?:Prop[₀-₉]+|Prop[0-9]*|Set[₀-₉]+|Set[0-9]*)&wordsep;" />
        <RegExpr attribute="Special" context="#stay" String="(?:\-&gt;|→|∀|λ|:|=|\|)&wordsep;" />
        <RegExpr attribute="Float"   context="#stay" String="\d+(?:(?:\.\d+)?[eE][+-]?\d+|\.\d+)&wordsep;" />
        <RegExpr attribute="Decimal" context="#stay" String="[0-9]+&wordsep;" />
        <DetectChar attribute="Char"   context="char"   char="'" />
        <DetectChar attribute="String" context="string" char="&quot;" />
        <Detect2Chars attribute="Comment" context="comment"  char="-"  char1="-" />
        <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" beginRegion="CommentBlock" />
        <Detect2Chars attribute="Hole"    context="hole"     char="{" char1="!" />
        <!-- delimiters which cannot be part of an identifier, or
             backslash which starts a lambda expression -->
        <AnyChar      attribute="Special" context="#stay" String="&charsdelim;\\" />
        <!-- any other identifier (can contain backslash and single
             quote anywhere except at start, but these two special
             cases are already taken care off above) -->
        <RegExpr attribute="Normal" context="#stay" String="[^&charsdelim;\s]+" />
      </context>
      <context attribute="Comment" lineEndContext="#pop" name="comment">
        <IncludeRules context="##Comments" />
      </context>
      <context attribute="Comment" lineEndContext="#stay" name="comments" noIndentationBasedFolding="1">
        <Detect2Chars attribute="Comment" context="comments" char="{" char1="-" beginRegion="CommentBlock" /> <!-- for nested comments -->
        <Detect2Chars attribute="Comment" context="#pop" char="-" char1="}" endRegion="CommentBlock" />
        <IncludeRules context="##Comments" />
      </context>
      <context attribute="Hole" lineEndContext="#stay" name="hole">
        <Detect2Chars attribute="Hole" context="#pop" char="!" char1="}" />
      </context>
      <context attribute="Char" lineEndContext="#pop" name="char">
        <Detect2Chars attribute="Char" context="#stay" char="\" char1="'" />
        <DetectChar   attribute="Char" context="#pop"  char="'" />
      </context>
      <context attribute="String" lineEndContext="#stay" name="string">
        <Detect2Chars attribute="String" context="#stay" char="\" char1="&quot;" />
        <DetectChar   attribute="String" context="#pop"  char="&quot;" />
      </context>
    </contexts>
    <itemDatas>
      <itemData name="Normal"   defStyleNum="dsNormal"   spellChecking="false" />
      <itemData name="Comment"  defStyleNum="dsComment" />
      <itemData name="Pragma"   defStyleNum="dsPreprocessor" spellChecking="false" />
      <itemData name="Hole"     defStyleNum="dsOthers"   spellChecking="false" />
      <itemData name="Keyword"  defStyleNum="dsKeyword"  spellChecking="false" />
      <itemData name="Type"     defStyleNum="dsDataType" spellChecking="false" />
      <itemData name="Special"  defStyleNum="dsOthers"   spellChecking="false" />
      <itemData name="Decimal"  defStyleNum="dsDecVal"   spellChecking="false" />
      <itemData name="Float"    defStyleNum="dsFloat"    spellChecking="false" />
      <itemData name="Char"     defStyleNum="dsChar"     spellChecking="false" />
      <itemData name="String"   defStyleNum="dsString" />
    </itemDatas>
  </highlighting>
  <general>
    <folding indentationsensitive="1"/>
    <comments>
      <comment name="singleLine" start="--" position="afterwhitespace" />
      <comment name="multiLine" start="{-" end="-}" region="CommentBlock" />
    </comments>
    <keywords casesensitive="1"
              weakDeliminator=":!+,-&lt;=&gt;%&amp;*/?[]^|~\\"
              additionalDeliminator="&charsdelim;" />
  </general>
</language>
<!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
