<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language name="Modula-2" version="2" kateversion="2.2" section="Sources" extensions="*.mod;*.def;*.mi;*.md" mimetype="text/x-modula-2">
  <highlighting>
    <list name="directives">
      <item>ASSEMBLER</item>
      <item>ALLOCATE</item>
      <item>DEALLOCATE</item>
      <item>SIZE</item>
      <item>Write</item>
      <item>WriteString</item>
      <item>WriteCard</item>
      <item>WriteLn</item>
      <item>WriteBf</item>
      <item>WriteInt</item>
      <item>WriteReal</item>
      <item>WriteLongReal</item>
      <item>Read</item>
      <item>ReadString</item>
      <item>ReadCard</item>
      <item>ReadInt</item>
      <item>ReadReal</item>
      <item>ReadLongReal</item>
      <item>Open</item>
      <item>Close</item>
      <item>OpenInput</item>
      <item>OpenOutput</item>
      <item>Accessible</item>
      <item>Erase</item>
      <item>EOF</item>
      <item>Done</item>
      <item>EmptyString</item>
      <item>Assign</item>
      <item>Append</item>
      <item>Length</item>
      <item>StrEq</item>
      <item>Copy</item>
      <item>Concat</item>
      <item>pos</item>
      <item>Delete</item>
      <item>Insert</item>
      <item>compare</item>
      <item>CAPS</item>
      <item>PutBf</item>
      <item>GetArgs</item>
      <item>GetEnv</item>
      <item>ResetClock</item>
      <item>UserTime</item>
      <item>SystemTime</item>
      <item>GetChar</item>
      <item>GetInt</item>
      <item>GetCard</item>
      <item>GetString</item>
      <item>GetReal</item>
      <item>GetLongReal</item>
      <item>PutChar</item>
      <item>PutInt</item>
      <item>PutCard</item>
      <item>PutString</item>
      <item>PutReal</item>
      <item>PutLongReal</item>
      <item>PutLn</item>
    </list>
    <list name="keywords">
      <item>AND</item>
      <item>ARRAY</item>
      <item>ASM</item>
      <item>BEGIN</item>
      <item>CASE</item>
      <item>CONST</item>
      <item>DIV</item>
      <item>DO</item>
      <item>ELSE</item>
      <item>ELSIF</item>
      <item>END</item>
      <item>FOR</item>
      <item>IF</item>
      <item>IMPLEMENTATION</item>
      <item>IN</item>
      <item>SET</item>
      <item>INCL</item>
      <item>EXCL</item>
      <item>ABS</item>
      <item>BITSET</item>
      <item>CAP</item>
      <item>CHR</item>
      <item>DEC</item>
      <item>HALT</item>
      <item>HIGH</item>
      <item>INC</item>
      <item>MAX</item>
      <item>MIN</item>
      <item>ODD</item>
      <item>ORD</item>
      <item>PROC</item>
      <item>TRUNC</item>
      <item>VAL</item>
      <item>MOD</item>
      <item>NIL</item>
      <item>NOT</item>
      <item>OF</item>
      <item>OR</item>
      <item>PROCEDURE</item>
      <item>MODULE</item>
      <item>DEFINITION</item>
      <item>RECORD</item>
      <item>REPEAT</item>
      <item>THEN</item>
      <item>TO</item>
      <item>TYPE</item>
      <item>UNTIL</item>
      <item>LOOP</item>
      <item>VAR</item>
      <item>WHILE</item>
      <item>WITH</item>
      <item>EXIT</item>
      <item>FALSE</item>
      <item>TRUE</item>
      <item>BY</item>
      <item>FROM</item>
      <item>IMPORT</item>
      <item>EXPORT</item>
      <item>QUALIFIED</item>
      <item>RETURN</item>
      <item>NEWPROCESS</item>
      <item>TRANSFER</item>
      <item>IOTRANSFER</item>
      <item>FOREIGN</item>
    </list>
    <list name="types">
      <item>INTEGER</item>
      <item>CARDINAL</item>
      <item>SHORTINT</item>
      <item>SHORTCARD</item>
      <item>LONGINT</item>
      <item>LONGREAL</item>
      <item>CHAR</item>
      <item>BOOLEAN</item>
      <item>POINTER</item>
      <item>ADDRESS</item>
      <item>ADR</item>
      <item>REAL</item>
      <item>File</item>
    </list>
    <contexts>
      <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
        <keyword attribute="Keyword" context="#stay" String="keywords"/>
        <keyword attribute="Directive" context="#stay" String="directives"/>
        <keyword attribute="Type" context="#stay" String="types"/>
        <Float attribute="Number" context="#stay"/>
        <Int attribute="Number" context="#stay"/>
        <DetectChar attribute="String" context="String1" char="&quot;" />
        <DetectChar attribute="String" context="String2" char="'" />
        <StringDetect attribute="Directive" context="Prep1" String="(*$"/>
        <Detect2Chars attribute="Comment" context="Comment2" char="(" char1="*"/>
      </context>
      <context attribute="String" lineEndContext="#pop" name="String1">
        <DetectChar attribute="String" context="#pop" char="&quot;"/>
      </context>
      <context attribute="String" lineEndContext="#pop" name="String2">
        <DetectChar attribute="String" context="#pop" char="'" />
      </context>
      <context attribute="Comment" lineEndContext="#stay" name="Comment2">
        <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")"/>
      </context>
      <context attribute="Comment" lineEndContext="#pop" name="Comment3" />
      <context attribute="Directive" lineEndContext="#stay" name="Prep1">
        <StringDetect attribute="Directive" context="Prep1" String="$*)"/>
      </context>

    </contexts>
    <itemDatas>
      <itemData name="Normal Text" defStyleNum="dsNormal" />
      <itemData name="Keyword"     defStyleNum="dsKeyword" />
      <itemData name="Type"        defStyleNum="dsDataType"/>
      <itemData name="Number"      defStyleNum="dsDecVal" />
      <itemData name="String"      defStyleNum="dsString" />
      <itemData name="Directive"   defStyleNum="dsOthers" />
      <itemData name="Comment"     defStyleNum="dsComment" />
    </itemDatas>
  </highlighting>
  <general>
    <keywords casesensitive="1" />
    <comments>
      <comment name="multiLine" start="(*" end="*)" />
    </comments>
  </general>
</language>
