matterhorn-40900.0.1: syntax/modula-3.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE language SYSTEM "language.dtd">
<!-- author ik Iztok Kobal (iztok.kobal@siol.net) -->
<!-- followed CM3 documentation (http://www.elegosoft.com/cm3/doc/reference/index.html , chapter Syntax) -->
<!-- 03.03.2005 ik mailed version 1.00 to Dominik Haumann <dhdev@gmx.de> of kate team -->
<!-- 04.03.2005 ik mailed version 1.01 with fixed/implemented nested comments to Dominik -->
<!-- known bug: notation Regexp( [0-9]*\. ) should be not interpreted as neither Integer neither Real -->
<!-- known bug: notation Regexp ( " \" " ) is not properly interpreted -->
<language name="Modula-3" version="1.01" kateversion="2.1" section="Sources" extensions="*.m3;*.i3;*.ig;*.mg;" mimetype="text/x-modula-3" license="LGPL">
<highlighting>
<list name="keywords">
<!-- <item> AND </item> -->
<item> ANY </item>
<item> ARRAY </item>
<item> AS </item>
<item> BEGIN </item>
<item> BITS </item>
<item> BRANDED </item>
<item> BY </item>
<item> CASE </item>
<item> CONST </item>
<!-- <item> DIV </item> -->
<item> DO </item>
<item> ELSE </item>
<item> ELSIF </item>
<item> END </item>
<item> EVAL </item>
<item> EXCEPT </item>
<item> EXCEPTION </item>
<item> EXIT </item>
<item> EXPORTS </item>
<item> FINALLY </item>
<item> FOR </item>
<item> FROM </item>
<item> GENERIC </item>
<item> IF </item>
<item> IMPORT </item>
<!-- <item> IN </item> -->
<item> INTERFACE </item>
<item> LOCK </item>
<item> LOOP </item>
<item> METHODS </item>
<!-- <item> MOD </item> -->
<item> MODULE </item>
<!-- <item> NOT </item> -->
<item> OBJECT </item>
<item> OF </item>
<!-- <item> OR </item> -->
<item> OVERRIDES </item>
<item> PROCEDURE </item>
<item> RAISE </item>
<item> RAISES </item>
<item> READONLY </item>
<item> RECORD </item>
<item> REF </item>
<item> REPEAT </item>
<item> RETURN </item>
<item> REVEAL </item>
<item> ROOT </item>
<item> SET </item>
<item> THEN </item>
<item> TO </item>
<item> TRY </item>
<item> TYPE </item>
<item> TYPECASE </item>
<item> UNSAFE </item>
<item> UNTIL </item>
<item> UNTRACED </item>
<item> VALUE </item>
<item> VAR </item>
<item> WHILE </item>
<item> WITH </item>
</list>
<list name="operators">
<item> AND </item>
<item> DIV </item>
<item> IN </item>
<item> MOD </item>
<item> NOT </item>
<item> OR </item>
<item> + </item>
<item> < </item>
<item> # </item>
<item> = </item>
<item> ; </item>
<item> .. </item>
<item> : </item>
<item> - </item>
<item> > </item>
<item> { </item>
<item> } </item>
<item> | </item>
<item> := </item>
<item> <: </item>
<item> * </item>
<item> <= </item>
<item> ( </item>
<item> ) </item>
<item> ^ </item>
<item> , </item>
<item> => </item>
<item> / </item>
<item> >= </item>
<item> [ </item>
<item> ] </item>
<item> . </item>
<item> & </item>
</list>
<list name="types">
<item> ADDRESS </item>
<item> BOOLEAN </item>
<item> CARDINAL </item>
<item> CHAR </item>
<item> EXTENDED </item>
<item> INTEGER </item>
<item> LONGREAL </item>
<item> MUTEX </item>
<item> NULL </item>
<item> REAL </item>
<item> REFANY </item>
<item> T </item>
<item> TEXT </item>
</list>
<list name="constants">
<item> FALSE </item>
<item> NIL </item>
<item> TRUE </item>
</list>
<list name="pervasives">
<item> ABS </item>
<item> ADR </item>
<item> ADRSIZE </item>
<item> BITSIZE </item>
<item> BYTESIZE </item>
<item> CEILING </item>
<item> DEC </item>
<item> DISPOSE </item>
<item> FIRST </item>
<item> FLOAT </item>
<item> FLOOR </item>
<item> INC </item>
<item> ISTYPE </item>
<item> LAST </item>
<item> LOOPHOLE </item>
<item> MAX </item>
<item> MIN </item>
<item> NARROW </item>
<item> NEW </item>
<item> NUMBER </item>
<item> ORD </item>
<item> ROUND </item>
<item> SUBARRAY </item>
<item> TRUNC </item>
<item> TYPECODE </item>
<item> VAL </item>
</list>
<list name="stdlibs">
<item> Text </item>
<item> Text.Length </item>
<item> Text.Empty </item>
<item> Text.Equal </item>
<item> Text.Compare </item>
<item> Text.Cat </item>
<item> Text.Sub </item>
<item> Text.Hash </item>
<item> Text.HasWideChar </item>
<item> Text.GetChar </item>
<item> Text.GetWideChar </item>
<item> Text.SetChars </item>
<item> Text.SetWideChars </item>
<item> Text.FromChars </item>
<item> Text.FromWideChars </item>
<item> Text.FindChar </item>
<item> Text.FindWideChar </item>
<item> Text.FindCharR </item>
<item> Text.FindWideCharR </item>
<item> Fmt </item>
<item> Fmt.Bool </item>
<item> Fmt.Char </item>
<item> Fmt.Int </item>
<item> Fmt.Unsigned </item>
<item> Fmt.Real </item>
<item> Fmt.LongReal </item>
<item> Fmt.Extended </item>
<item> Fmt.Pad </item>
<item> Fmt.F </item>
<item> Fmt.FN </item>
<item> Scan </item>
<item> Scan.Bool </item>
<item> Scan.Int </item>
<item> Scan.Unsigned </item>
<item> Scan.Real </item>
<item> Scan.LongReal </item>
<item> Scan.Extended </item>
<item> IO </item>
<item> IO.Put </item>
<item> IO.PutChar </item>
<item> IO.PutWideChar </item>
<item> IO.PutInt </item>
<item> IO.PutReal </item>
<item> IO.EOF </item>
<item> IO.GetLine </item>
<item> IO.GetChar </item>
<item> IO.GetWideChar </item>
<item> IO.GetInt </item>
<item> IO.GetReal </item>
<item> IO.OpenRead </item>
<item> IO.OpenWrite </item>
<item> Rd </item>
<item> Rd.GetChar </item>
<item> Rd.GetWideChar </item>
<item> Rd.EOF </item>
<item> Rd.UnGetChar </item>
<item> Rd.CharsReady </item>
<item> Rd.GetSub </item>
<item> Rd.GetWideSub </item>
<item> Rd.GetSubLine </item>
<item> Rd.GetWideSubLine </item>
<item> Rd.GetText </item>
<item> Rd.GetWideText </item>
<item> Rd.GetLine </item>
<item> Rd.GetWideLine </item>
<item> Rd.Seek </item>
<item> Rd.Close </item>
<item> Rd.Index </item>
<item> Rd.Length </item>
<item> Rd.Intermittend </item>
<item> Rd.Seekable </item>
<item> Rd.Closed </item>
<item> Wr </item>
<item> Wr.PutChar </item>
<item> Wr.PutWideChar </item>
<item> Wr.PutText </item>
<item> Wr.PutWideText </item>
<item> Wr.PutString </item>
<item> Wr.PutWideString </item>
<item> Wr.Seek </item>
<item> Wr.Flush </item>
<item> Wr.Close </item>
<item> Wr.Length </item>
<item> Wr.Index </item>
<item> Wr.Seekable </item>
<item> Wr.Closed </item>
<item> Wr.Buffered </item>
<item> Lex </item>
<item> Lex.Scan </item>
<item> Lex.Skip </item>
<item> Lex.Match </item>
<item> Lex.Bool </item>
<item> Lex.Int </item>
<item> Lex.Unsigned </item>
<item> Lex.Real </item>
<item> Lex.LongReal </item>
<item> Lex.Extended </item>
<item> Params </item>
<item> Params.Count </item>
<item> Params.Get </item>
<item> Env </item>
<item> Env.Count </item>
<item> Env.Get </item>
<item> Env.GetNth </item>
</list>
<contexts>
<context attribute="Normal Text" lineEndContext="#stay" name="Normal">
<RegExpr attribute="Keyword" context="#stay" String="PROCEDURE[\s].*\(" beginRegion="Proc"/>
<RegExpr attribute="Keyword" context="#stay" String="END\s*[A-Za-z][A-Za-z0-9_]*\;" endRegion="Proc"/>
<RegExpr attribute="Keyword" context="#stay" String="\b(RECORD|OBJECT|TRY|WHILE|FOR|REPEAT|LOOP|IF|CASE|WITH)\b" beginRegion="Block"/>
<RegExpr attribute="Keyword" context="#stay" String="\b(END;|END)\b" endRegion="Block"/>
<keyword attribute="Keyword" context="#stay" String="keywords"/>
<keyword attribute="Operator" context="#stay" String="operators"/>
<keyword attribute="Type" context="#stay" String="types"/>
<keyword attribute="Constant" context="#stay" String="constants"/>
<keyword attribute="Pervasive" context="#stay" String="pervasives"/>
<keyword attribute="StdLib" context="#stay" String="stdlibs"/>
<RegExpr attribute="Real" context="#stay" String="\b[\+|\-]{0,1}[0-9]{1,}\.[0-9]{1,}([E|e|D|d|X|x][\+|\-]{0,1}[0-9]{1,}){0,1}\b"/>
<RegExpr attribute="Integer" context="#stay" String="\b([\+|\-]{0,1}[0-9]{1,}|([2-9]|1[0-6])\_[0-9A-Fa-f]{1,})\b"/>
<DetectChar attribute="String" context="String1" char="""/>
<RegExpr attribute="Char" context="#stay" String="\'(.|\\[ntrf\\'"]|\\[0-7]{3})\'"/>
<Detect2Chars attribute="Pragma" context="Prep1" char="<" char1="*"/>
<Detect2Chars attribute="Comment" context="Comment2" char="(" char1="*" beginRegion="Comment"/>
</context>
<context attribute="String" lineEndContext="#pop" name="String1">
<DetectChar attribute="String" context="#pop" char="""/>
</context>
<context attribute="Comment" lineEndContext="#stay" name="Comment2">
<Detect2Chars attribute="Comment" context="Comment2" char="(" char1="*" beginRegion="Comment"/>
<Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="Comment"/>
</context>
<context attribute="Pragma" lineEndContext="#stay" name="Prep1">
<Detect2Chars attribute="Pragma" context="#pop" char="*" char1=">"/>
</context>
</contexts>
<itemDatas>
<itemData name="Normal Text" defStyleNum="dsNormal"/>
<itemData name="Keyword" defStyleNum="dsKeyword"/>
<itemData name="Operator" defStyleNum="dsKeyword"/>
<itemData name="Type" defStyleNum="dsDataType"/>
<itemData name="Integer" defStyleNum="dsBaseN"/>
<itemData name="Real" defStyleNum="dsFloat"/>
<itemData name="Constant" defStyleNum="dsDecVal"/>
<itemData name="String" defStyleNum="dsString"/>
<itemData name="Char" defStyleNum="dsChar"/>
<itemData name="Pervasive" defStyleNum="dsFunction"/>
<itemData name="StdLib" defStyleNum="dsFunction"/>
<itemData name="Comment" defStyleNum="dsComment" bold="0" italic="1"/>
<itemData name="Pragma" defStyleNum="dsOthers" bold="0" italic="1"/>
</itemDatas>
</highlighting>
<general>
<keywords casesensitive="1" weakDeliminator="."/>
<comments>
<comment name="multiLine" start="(*" end="*)"/>
</comments>
</general>
</language>