|
|
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- Kate syntax highlighting for Objective Caml version 4.02 in the standard and revised syntaxes, with Ocamldoc comments. -->
-
- <!DOCTYPE language SYSTEM "language.dtd"
- [
- <!-- Regular expresion constants: -->
- <!ENTITY LOWER "a-z\300-\326\330-\337"> <!-- Lowercase Latin-1 letters. -->
- <!ENTITY UPPER "A-Z\340-\366\370-\377"> <!-- Uppercase Latin-1 letters. -->
- <!ENTITY LETTER "&LOWER;&UPPER;"> <!-- All Latin-1 letters. -->
- <!ENTITY LIDENT "[&LOWER;_][&LETTER;0-9_']*"> <!-- Lowercase OCaml identifiers. -->
- <!ENTITY UIDENT "`?[&UPPER;][&LETTER;0-9_']*"> <!-- Uppercase OCaml identifiers. -->
- <!ENTITY IDENT "`?[&LETTER;][&LETTER;0-9_']*"> <!-- All OCaml identifiers. -->
- <!ENTITY ESC "(\\[ntbr'"\\]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2})"> <!-- OCaml character code escapes. -->
- <!ENTITY DEC "[0-9][0-9_]*"> <!-- Decimal digits with underscores. -->
- <!ENTITY INFIX "[:!#$%&*+\\/<=>?@^|-~][:!#$%&*+\\/<=>?@^|-~\.]*">
- ]>
- <language name="Amulet"
- extensions="*.ml;*.mli"
- mimetype="text/x-amulet"
- section="Sources"
- version="6"
- priority="10"
- kateversion="2.4"
- author="Abigail Magalhães ([email protected])"
- license="LGPL" >
-
- <highlighting>
- <list name="Keywords">
- <item>as</item>
- <item>forall</item>
- <item>begin</item>
- <item>class</item>
- <item>else</item>
- <item>end</item>
- <item>external</item>
- <item>fun</item>
- <item>function</item>
- <item>if</item>
- <item>in</item>
- <item>lazy</item>
- <item>let</item>
- <item>match</item>
- <item>module</item>
- <item>of</item>
- <item>open</item>
- <item>then</item>
- <item>type</item>
- <item>val</item>
- <item>with</item>
- <item>instance</item>
- <item>rec</item>
- <item>import</item>
- <item>and</item>
- </list>
-
- <list name="Boolean Literals">
- <item>true</item>
- <item>false</item>
- </list>
-
- <list name="Pervasive Functions">
- </list>
-
- <list name="Pervasive Types">
- <item>string</item>
- <item>int</item>
- <item>float</item>
- <item>bool</item>
- <item>unit</item>
- <item>lazy</item>
- <item>list</item>
- <item>constraint</item>
- <item>ref</item>
-
- <item>known_string</item>
- <item>known_int</item>
- <item>row_cons</item>
- </list>
-
- <list name="Standard Library Modules">
- <item>Amc</item>
- </list>
-
- <contexts>
-
- <context name="Code" lineEndContext="#stay" attribute="Normal">
-
- <!-- ] and ]} close code samples in Ocamldoc, so -->
- <!-- nested [ ] and { } brackets have to be allowed for: -->
- <DetectChar char="[" context="Nested Code 1" attribute="Infix Operator" />
- <DetectChar char="{" context="Nested Code 2" attribute="Infix Operator" />
-
-
- <!-- Comments. -->
- <!-- A (** begins a special comment with Ocamldoc documentation markup. -->
- <Detect2Chars char="(" char1="*" context="Comment" attribute="Comment" beginRegion="comment" />
-
- <!-- Interpreter directives. -->
- <!-- (These are lines where the first symbol is a '#' followed by an identifier. -->
- <!-- Such lines could also be part of a method call split over two lines but -->
- <!-- it's unlikey anyone would code like that.) -->
-
- <!-- String, character and Camlp4 "quotation" constants. -->
- <!-- Note: If you must modify the pattern for characters be precise: -->
- <!-- single quotes have several meanings in Ocaml. -->
- <DetectChar char=""" context="String" attribute="String" />
- <RegExpr String="'(&ESC;|[^'])'" context="#stay" attribute="Character" />
-
-
- <!-- Identifiers and keywords. -->
- <keyword String="Keywords" context="#stay" attribute="Keyword" />
- <keyword String="Pervasive Functions" context="#stay" attribute="Pervasive Functions" />
- <keyword String="Pervasive Types" context="#stay" attribute="Pervasive Types" />
- <keyword String="Standard Library Modules" context="#stay" attribute="Standard Library Modules" />
- <keyword String="Boolean Literals" context="#stay" attribute="Boolean Literals" />
-
- <RegExpr String="&LIDENT;" context="#stay" attribute="Lowercase Identifier" />
- <RegExpr String="&UIDENT;" context="#stay" attribute="Uppercase Identifier" />
- <RegExpr String="'&LIDENT;" context="#stay" attribute="Type Variable" />
- <RegExpr String="[\-!#\$%&\*\+/<=>\?\@\^\|~\.:]+"
- context="#stay" attribute="Infix Operator" />
-
- <RegExpr String="," context="#stay" attribute="Infix Operator" />
-
- <!-- Numeric constants. -->
- <!-- Note that they may contain underscores. -->
- <RegExpr String="-?0[xX][0-9A-Fa-f_]+" context="#stay" attribute="Hexadecimal" />
- <RegExpr String="-?0[oO][0-7_]+" context="#stay" attribute="Octal" />
- <RegExpr String="-?0[bB][01_]+" context="#stay" attribute="Binary" />
- <RegExpr String="-?&DEC;(\.&DEC;([eE][-+]?&DEC;)?|[eE][-+]?&DEC;)" context="#stay" attribute="Float" />
- <RegExpr String="-?&DEC;" context="#stay" attribute="Decimal" />
-
- <IncludeRules context="Unmatched Closing Brackets" />
- </context>
-
- <context name="Nested Code 1" lineEndContext="#stay" attribute="Normal">
- <DetectChar char="]" context="#pop" attribute="Infix Operator" />
- <IncludeRules context="Code" includeAttrib="true" />
- </context>
-
- <context name="Nested Code 2" lineEndContext="#stay" attribute="Normal">
- <DetectChar char="}" context="#pop" attribute="Infix Operator" />
- <IncludeRules context="Code" includeAttrib="true" />
- </context>
-
- <context name="String" lineEndContext="#stay" attribute="String">
- <DetectChar char=""" context="#pop" attribute="String" />
- <RegExpr String="&ESC;" context="#stay" attribute="Escaped Characters" />
- <!-- A backslash at the end of a line in a string indicates -->
- <!-- that the string will continue on the next line: -->
- <RegExpr String="\\$" context="#stay" attribute="Escaped Characters" />
- </context>
-
- <context name="Comment" lineEndContext="#stay" attribute="Comment">
- <Detect2Chars char="*" char1=")" context="#pop" attribute="Comment" endRegion="comment" />
- <!-- Support for nested comments: -->
- <Detect2Chars char="(" char1="*" context="Comment" attribute="Comment" beginRegion="comment" />
- <!-- Strings in Ocaml comments must be well-formed: -->
- <DetectChar char=""" context="String in Comment" attribute="String in Comment" />
- </context>
-
- <context name="String in Comment" lineEndContext="#stay" attribute="String in Comment">
- <DetectChar char=""" context="#pop" attribute="String in Comment" />
- <IncludeRules context="String" />
- </context>
-
- <!-- Unmatched closing brackets- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
-
- <context name="Unmatched Closing Brackets" lineEndContext="#stay" attribute="Normal">
- <Detect2Chars char="*" char1=")" context="#pop" attribute="Mismatched Brackets" />
- <Detect2Chars char="v" char1="}" context="#stay" attribute="Mismatched Brackets" />
- <Detect2Chars char="]" char1="}" context="#stay" attribute="Mismatched Brackets" />
- <Detect2Chars char="%" char1="}" context="#stay" attribute="Mismatched Brackets" />
- <DetectChar char="]" context="#stay" attribute="Mismatched Brackets" />
- <DetectChar char="}" context="#stay" attribute="Mismatched Brackets" />
- </context>
- </contexts>
-
- <itemDatas>
- <itemData name="Keyword" defStyleNum="dsKeyword" />
- <itemData name="Normal" defStyleNum="dsNormal" />
- <itemData name="Infix Operator" defStyleNum="dsOperator" />
-
- <itemData name="Uppercase Identifier" defStyleNum="dsDataType" italic="true" />
- <itemData name="Lowercase Identifier" defStyleNum="dsVariable" />
-
- <!-- Lowercase pervasive identifiers: -->
- <itemData name="Pervasive Functions" defStyleNum="dsFunction" />
- <itemData name="Pervasive Types" defStyleNum="dsDataType" />
-
- <!-- Type variables -->
- <itemData name="Type Variable" defStyleNum="dsSpecialString" />
-
- <!-- Uppercase pervasive identifiers: -->
- <itemData name="Standard Library Modules" defStyleNum="dsDataType" italic="true" />
-
- <itemData name="Boolean Literals" defStyleNum="dsConstant" />
- <itemData name="Decimal" defStyleNum="dsDecVal" />
- <itemData name="Hexadecimal" defStyleNum="dsBaseN" />
- <itemData name="Octal" defStyleNum="dsBaseN" />
- <itemData name="Binary" defStyleNum="dsBaseN" />
- <itemData name="Float" defStyleNum="dsFloat" />
-
- <itemData name="Character" defStyleNum="dsChar" />
- <itemData name="String" defStyleNum="dsString" />
- <itemData name="Escaped Characters" defStyleNum="dsChar" />
-
- <itemData name="Comment" defStyleNum="dsComment" />
- <itemData name="String in Comment" defStyleNum="dsComment" bold="true" />
- <itemData name="Mismatched Brackets" defStyleNum="dsError" />
-
- </itemDatas>
- </highlighting>
-
- <general>
- <keywords casesensitive="true" />
- <comments>
- <comment name="multiLine" start="(*" end="*)" region ="comment" />
- </comments>
- </general>
- </language>
- <!-- kate: space-indent on; indent-width 2; replace-tabs on; -->
|