<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<language name="Modula-2" version="1.02" kateversion="2.1" 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>
