summaryrefslogtreecommitdiffstats
path: root/kate/data/ocaml.xml
diff options
context:
space:
mode:
Diffstat (limited to 'kate/data/ocaml.xml')
-rw-r--r--kate/data/ocaml.xml671
1 files changed, 507 insertions, 164 deletions
diff --git a/kate/data/ocaml.xml b/kate/data/ocaml.xml
index f86b2fac8..364cbdd9d 100644
--- a/kate/data/ocaml.xml
+++ b/kate/data/ocaml.xml
@@ -1,39 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Kate syntax highlighting for Objective Caml version 3.07 in the standard and revised syntaxes. -->
+<!-- Kate syntax highlighting for Objective Caml version 3.08 in the standard and revised syntaxes, with Ocamldoc comments. -->
+
<!DOCTYPE language SYSTEM "language.dtd"
[
<!-- Regular expresion constants: -->
-<!ENTITY LETTER "A-Za-z\0300-\0326\0330-\0366\0370-\0377"> <!-- Latin-1 letters. -->
-<!ENTITY IDENT "[&LETTER;_][&LETTER;0-9_']*"> <!-- OCaml identifiers. -->
-<!ENTITY MIDENT "[A-Z][&LETTER;0-9_']*"> <!-- OCaml uppercase identifiers. -->
+<!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'&quot;\\]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2})"> <!-- OCaml character code escapes. -->
<!ENTITY DEC "[0-9][0-9_]*"> <!-- Decimal digits with underscores. -->
]>
-<language name="Objective Caml" version="1.05" kateversion="2.4" section="Sources" extensions="*.ml;*.mli" mimetype="" priority="10" author="Glyn Webster (glyn@wave.co.nz)" license="LGPL">
+<language name="Objective Caml"
+ extensions="*.ml;*.mli"
+ mimetype=""
+ section="Sources"
+ version="2.01"
+ priority="10"
+ kateversion="2.4"
+ author="Glyn Webster (glynwebster@orcon.net.nz) and Vincent Hugot (vincent.hugot@gmail.com)"
+ license="LGPL" >
<highlighting>
- <!-- Revised Syntax keywords are highlighted as identifiers by default. -->
- <!-- Change their highlighting colour to match the standard keywords -->
- <!-- if you intend to use the Camlp4 Revised Syntax. -->
- <list name="revised syntax keywords">
- <item> declare </item>
- <item> value </item>
- <item> where </item>
+ <list name="qtest keywords">
+ <item> in </item>
+ <item> as </item>
+ <item> forall </item>
</list>
- <list name="keywords">
+ <list name="Keywords">
<item> and </item>
<item> as </item>
<item> assert </item>
<item> asr </item>
-<!-- <item> begin </item> -->
+ <item> begin </item>
<item> class </item>
<item> closed </item>
<item> constraint </item>
-<!-- <item> do </item> -->
-<!-- <item> done </item> -->
+ <item> do </item>
+ <item> done </item>
<item> downto </item>
<item> else </item>
-<!-- <item> end </item> -->
+ <item> end </item>
<item> exception </item>
<item> external </item>
<item> false </item>
@@ -43,9 +52,8 @@
<item> functor </item>
<item> if </item>
<item> in </item>
-<!-- <item> include </item> -->
+ <item> include </item>
<item> inherit </item>
- <item> initializer </item>
<item> land </item>
<item> lazy </item>
<item> let </item>
@@ -56,18 +64,18 @@
<item> match </item>
<item> method </item>
<item> mod </item>
-<!-- <item> module </item> -->
+ <item> module </item>
<item> mutable </item>
<item> new </item>
-<!-- <item> object </item> -->
+ <item> object </item>
<item> of </item>
-<!-- <item> open </item> -->
+ <item> open </item>
<item> or </item>
<item> parser </item>
<item> private </item>
<item> rec </item>
-<!-- <item> sig </item> -->
-<!-- <item> struct </item> -->
+ <item> sig </item>
+ <item> struct </item>
<item> then </item>
<item> to </item>
<item> true </item>
@@ -79,193 +87,528 @@
<item> while </item>
<item> with </item>
</list>
- <list name="core types">
- <item> exn </item>
- <item> lazy_t </item>
- <item> format </item>
- <item> unit </item>
- <item> int </item>
- <item> real </item>
- <item> char </item>
- <item> string </item>
+
+ <!-- Revised Syntax keywords are highlighted as identifiers by default. -->
+ <!-- Change their highlighting colour to match the standard keywords -->
+ <!-- if you intend to use the Camlp4 Revised Syntax. -->
+ <list name="Revised Syntax Keywords">
+ <item> declare </item>
+ <item> value </item>
+ <item> where </item>
+ </list>
+
+ <list name="Pervasive Functions">
+ <item> abs </item>
+ <item> abs_float </item>
+ <item> acos </item>
+ <item> asin </item>
+ <item> at_exit </item>
+ <item> atan </item>
+ <item> atan2 </item>
+ <item> bool_of_string </item>
+ <item> ceil </item>
+ <item> char_of_int </item>
+ <item> classify_float </item>
+ <item> close_in </item>
+ <item> close_in_noerr </item>
+ <item> close_out </item>
+ <item> close_out_noerr </item>
+ <item> compare </item>
+ <item> cos </item>
+ <item> cosh </item>
+ <item> decr </item>
+ <item> do_at_exit </item>
+ <item> epsilon_float </item>
+ <item> exp </item>
+ <item> float </item>
+ <item> float_of_int </item>
+ <item> float_of_string </item>
+ <item> floor </item>
+ <item> flush </item>
+ <item> flush_all </item>
+ <item> format_of_string </item>
+ <item> frexp </item>
+ <item> fst </item>
+ <item> ignore </item>
+ <item> in_channel_length </item>
+ <item> incr </item>
+ <item> infinity </item>
+ <item> input </item>
+ <item> input_binary_int </item>
+ <item> input_byte </item>
+ <item> input_char </item>
+ <item> input_line </item>
+ <item> input_value </item>
+ <item> int_of_char </item>
+ <item> int_of_float </item>
+ <item> int_of_string </item>
+ <item> ldexp </item>
+ <item> lnot </item>
+ <item> log </item>
+ <item> log10 </item>
+ <item> max </item>
+ <item> max_float </item>
+ <item> max_int </item>
+ <item> min </item>
+ <item> min_float </item>
+ <item> min_int </item>
+ <item> mod_float </item>
+ <item> modf </item>
+ <item> nan </item>
+ <item> neg_infinity </item>
+ <item> not </item>
+ <item> open_in </item>
+ <item> open_in_bin </item>
+ <item> open_in_gen </item>
+ <item> open_out </item>
+ <item> open_out_bin </item>
+ <item> open_out_gen </item>
+ <item> out_channel_length </item>
+ <item> output </item>
+ <item> output_binary_int </item>
+ <item> output_byte </item>
+ <item> output_char </item>
+ <item> output_string </item>
+ <item> output_value </item>
+ <item> pos_in </item>
+ <item> pos_out </item>
+ <item> pred </item>
+ <item> prerr_char </item>
+ <item> prerr_endline </item>
+ <item> prerr_float </item>
+ <item> prerr_int </item>
+ <item> prerr_newline </item>
+ <item> prerr_string </item>
+ <item> print_char </item>
+ <item> print_endline </item>
+ <item> print_float </item>
+ <item> print_int </item>
+ <item> print_newline </item>
+ <item> print_string </item>
+ <item> read_float </item>
+ <item> read_int </item>
+ <item> read_line </item>
+ <item> really_input </item>
<item> ref </item>
+ <item> seek_in </item>
+ <item> seek_out </item>
+ <item> set_binary_mode_in </item>
+ <item> set_binary_mode_out </item>
+ <item> sin </item>
+ <item> sinh </item>
+ <item> snd </item>
+ <item> sqrt </item>
+ <item> stderr </item>
+ <item> stdin </item>
+ <item> stdout </item>
+ <item> string_of_bool </item>
+ <item> string_of_float </item>
+ <item> string_of_format </item>
+ <item> string_of_int </item>
+ <item> succ </item>
+ <item> tan </item>
+ <item> tanh </item>
+ <item> truncate </item>
+ <item> unsafe_really_input </item>
+ <item> valid_float_lexem </item>
+ </list>
+
+ <!-- These pervasive functions control program flow, -->
+ <!-- so some people like to highlight them as keywords: -->
+ <list name="Flow Control Functions">
+ <item> exit </item>
+ <item> failwith </item>
+ <item> invalid_arg </item>
+ <item> raise </item>
+ </list>
+
+ <list name="Pervasive Types">
<item> array </item>
<item> bool </item>
+ <item> char </item>
+ <item> exn </item>
+ <item> format4 </item>
+ <item> fpclass </item>
+ <item> in_channel </item>
+ <item> int </item>
+ <item> int32 </item>
+ <item> int64 </item>
+ <item> lazy_t </item>
<item> list </item>
+ <item> nativeint </item>
+ <item> open_flag </item>
<item> option </item>
+ <item> out_channel </item>
+ <item> real </item>
+ <item> ref </item>
+ <item> string </item>
+ <item> unit </item>
</list>
- <list name="symbols">
- <item> ? </item>
- </list>
- <list name="end">
- <item> end </item>
- </list>
- <list name="sig">
- <item> sig </item>
- </list>
- <list name="struct">
- <item> struct </item>
- </list>
- <list name="object">
- <item> object </item>
- </list>
- <list name="begin">
- <item> begin </item>
- </list>
- <list name="do">
- <item> do </item>
- </list>
- <list name="done">
- <item> done </item>
- </list>
- <list name="module_environment">
- <item> module </item>
- <item> open </item>
- <item> include </item>
- </list>
- <contexts>
- <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
+ <list name="Pervasive Variant Tags">
+ <item> FP_infinite </item>
+ <item> FP_nan </item>
+ <item> FP_normal </item>
+ <item> FP_subnormal </item>
+ <item> FP_zero </item>
+ <item> None </item>
+ <item> Open_append </item>
+ <item> Open_append </item>
+ <item> Open_binary </item>
+ <item> Open_binary </item>
+ <item> Open_creat </item>
+ <item> Open_creat </item>
+ <item> Open_excl </item>
+ <item> Open_excl </item>
+ <item> Open_nonblock </item>
+ <item> Open_nonblock </item>
+ <item> Open_rdonly </item>
+ <item> Open_rdonly </item>
+ <item> Open_text </item>
+ <item> Open_text </item>
+ <item> Open_trunc </item>
+ <item> Open_trunc </item>
+ <item> Open_wronly </item>
+ <item> Open_wronly </item>
+ <item> Some </item>
+ </list>
- <Detect2Chars attribute="Comment" context="Multiline Comment" char="(" char1="*" beginRegion="comment" />
+ <list name="Pervasive Exceptions">
+ <item> Assert_failure </item>
+ <item> Division_by_zero </item>
+ <item> End_of_file </item>
+ <item> Exit </item>
+ <item> Failure </item>
+ <item> Invalid_argument </item>
+ <item> Match_failure </item>
+ <item> Not_found </item>
+ <item> Out_of_memory </item>
+ <item> Stack_overflow </item>
+ <item> Sys_blocked_io </item>
+ <item> Sys_error </item>
+ <item> Undefined_recursive_module </item>
+ </list>
- <DetectChar attribute="Symbol" context="#stay" char="(" beginRegion="paren"/>
- <DetectChar attribute="Symbol" context="#stay" char=")" endRegion="paren"/>
+ <list name="Standard Library Modules">
+ <item> Arg </item>
+ <item> Array </item>
+ <item> ArrayLabels </item>
+ <item> Buffer </item>
+ <item> Callback </item>
+ <item> Char </item>
+ <item> Complex </item>
+ <item> Digest </item>
+ <item> Filename </item>
+ <item> Format </item>
+ <item> Gc </item>
+ <item> Genlex </item>
+ <item> Hashtbl </item>
+ <item> Int32 </item>
+ <item> Int64 </item>
+ <item> Lazy </item>
+ <item> Lexing </item>
+ <item> List </item>
+ <item> ListLabels </item>
+ <item> Map </item>
+ <item> Marshal </item>
+ <item> MoreLabels </item>
+ <item> Nativeint </item>
+ <item> Oo </item>
+ <item> Parsing </item>
+ <item> Printexc </item>
+ <item> Printf </item>
+ <item> Queue </item>
+ <item> Random </item>
+ <item> Scanf </item>
+ <item> Set </item>
+ <item> Sort </item>
+ <item> Stack </item>
+ <item> StdLabels </item>
+ <item> Stream </item>
+ <item> String </item>
+ <item> StringLabels </item>
+ <item> Sys </item>
+ <item> Weak </item>
+ </list>
- <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="record"/>
- <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="record"/>
+ <contexts>
- <Detect2Chars attribute="Symbol" context="#stay" char="[" char1="|" beginRegion="array"/>
- <Detect2Chars attribute="Symbol" context="#stay" char="|" char1="]" endRegion="array"/>
- <DetectChar attribute="Symbol" context="#stay" char="[" beginRegion="list"/>
- <DetectChar attribute="Symbol" context="#stay" char="]" endRegion="list"/>
+ <context name="Code" lineEndContext="#stay" attribute="Operator">
- <keyword attribute="Keyword" context="#stay" String="do" beginRegion="loop"/>
- <keyword attribute="Keyword" context="#stay" String="done" endRegion="loop"/>
- <keyword attribute="Directive" context="ModuleEnv" String="module_environment"/>
- <keyword attribute="Region Marker" context="Block" String="begin" beginRegion="block"/>
- <keyword attribute="Region Marker" context="Object" String="object" beginRegion="object"/>
- <keyword attribute="Region Marker" context="Sig" String="sig" beginRegion="sig"/>
- <keyword attribute="Region Marker" context="Struct" String="struct" beginRegion="struct"/>
+ <!-- ] and ]} close code samples in Ocamldoc, so -->
+ <!-- nested [ ] and { } brackets have to be allowed for: -->
+ <DetectChar char="[" context="Nested Code 1" attribute="Operator" />
+ <DetectChar char="{" context="Nested Code 2" attribute="Operator" />
- <RegExpr attribute="Constructor" context="#stay" String="`\s*&IDENT;"/>
- <RegExpr attribute="Module" lookAhead="true" context="ModuleEnv2" String="&MIDENT;\s*\."/>
- <RegExpr attribute="Constructor" context="#stay" String="&MIDENT;"/>
+ <!-- Comments. -->
+ <!-- A (** begins a special comment with Ocamldoc documentation markup. -->
+ <StringDetect String="(**)" context="#stay" attribute="Comment" />
+ <StringDetect String="(**" context="Ocamldoc" attribute="Comment" beginRegion="comment" />
+ <RegExpr String="\(\*\$(T|Q|R|=)" context="qtest header" attribute="qtest body style" beginRegion="comment" />
+ <Detect2Chars char="(" char1="*" context="Comment" attribute="Comment" beginRegion="comment" />
- <!-- Interpreter directives. -->
+ <!-- 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 -->
+ <!-- Such lines could also be part of a method call split over two lines but -->
<!-- it's unlikey anyone would code like that.) -->
- <RegExpr attribute="Directive" context="#stay" String="#&IDENT;.*$" firstNonSpace="true"/>
+ <RegExpr String="#&IDENT;.*$" context="#stay" firstNonSpace="true" attribute="Directive"/>
- <!-- String, character and Camlp4 "quotation" constants. -->
+ <!-- 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 attribute="String" context="String Constant" char="&quot;" />
- <RegExpr attribute="Character" context="#stay" String="'(&ESC;|[^'])'" />
- <Detect2Chars attribute="Camlp4 Quotation" context="Camlp4 Quotation Constant" char="&lt;" char1="&lt;" />
- <RegExpr attribute="Camlp4 Quotation" context="Camlp4 Quotation Constant" String="&lt;:&IDENT;&lt;" />
+ <DetectChar char="&quot;" context="String" attribute="String" />
+ <RegExpr String="'(&ESC;|[^'])'" context="#stay" attribute="Character" />
+ <Detect2Chars char="&lt;" char1="&lt;" context="Camlp4 Quotation" attribute="Camlp4 Quotation" />
+ <RegExpr String="&lt;:&IDENT;&lt;" context="Camlp4 Quotation" attribute="Camlp4 Quotation" />
- <!-- Identifiers and keywords. -->
- <keyword attribute="Keyword" context="#stay" String="keywords" />
- <keyword attribute="Revised Syntax Keyword" context="#stay" String="revised syntax keywords" />
- <keyword attribute="Core Data Type" context="#stay" String="core types" />
- <RegExpr attribute="Identifier" context="#stay" String="&IDENT;" />
+ <!-- Identifiers and keywords. -->
+ <keyword String="Keywords" context="#stay" attribute="Keyword" />
+ <keyword String="Revised Syntax Keywords" context="#stay" attribute="Revised Syntax Keyword" />
+ <keyword String="Flow Control Functions" context="#stay" attribute="Flow Control Functions" />
+ <keyword String="Pervasive Functions" context="#stay" attribute="Pervasive Functions" />
+ <keyword String="Pervasive Types" context="#stay" attribute="Pervasive Types" />
+ <keyword String="Pervasive Exceptions" context="#stay" attribute="Pervasive Exceptions" />
+ <keyword String="Pervasive Variant Tags" context="#stay" attribute="Pervasive Variant Tags" />
+ <keyword String="Standard Library Modules" context="#stay" attribute="Standard Library Modules" />
+ <RegExpr String="&LIDENT;" context="#stay" attribute="Lowercase Identifier" />
+ <RegExpr String="&UIDENT;" context="#stay" attribute="Uppercase Identifier" />
<!-- Numeric constants. -->
- <!-- Note that they may contain underscores. -->
- <RegExpr attribute="Hexadecimal" context="#stay" String="-?0[xX][0-9A-Fa-f_]+" />
- <RegExpr attribute="Octal" context="#stay" String="-?0[oO][0-7_]+" />
- <RegExpr attribute="Binary" context="#stay" String="-?0[bB][01_]+" />
- <RegExpr attribute="Float" context="#stay" String="-?&DEC;((\.(&DEC;)?([eE][-+]?&DEC;)?)|([eE][-+]?&DEC;))" />
- <RegExpr attribute="Decimal" context="#stay" String="-?&DEC;" />
+ <!-- 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 attribute="Comment" lineEndContext="#stay" name="Multiline Comment">
- <!-- Support for nested comments -->
- <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="comment" />
- <Detect2Chars attribute="Comment" context="Multiline Comment" char="(" char1="*" beginRegion="comment" />
+ <context name="Nested Code 1" lineEndContext="#stay" attribute="Operator">
+ <DetectChar char="]" context="#pop" attribute="Operator" />
+ <IncludeRules context="Code" includeAttrib="true" />
</context>
- <context attribute="String" lineEndContext="#stay" name="String Constant">
- <DetectChar attribute="String" context="#pop" char="&quot;" />
- <RegExpr attribute="Escaped characters" context="#stay" String="&ESC;" />
- <!-- An underscore at the end of a line in a string indicates -->
- <!-- that the string will continue on the next line. -->
- <RegExpr attribute="Escaped characters" context="#stay" String="\\$" />
+ <context name="Nested Code 2" lineEndContext="#stay" attribute="Operator">
+ <DetectChar char="}" context="#pop" attribute="Operator" />
+ <IncludeRules context="Code" includeAttrib="true" />
</context>
- <context attribute="Normal text" lineEndContext="#stay" name="Block">
- <keyword attribute="Region Marker" context="#pop" String="end" endRegion="block"/>
- <IncludeRules context="Normal"/>
+ <context name="String" lineEndContext="#stay" attribute="String">
+ <DetectChar char="&quot;" 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 attribute="Normal text" lineEndContext="#stay" name="Sig">
- <keyword attribute="Region Marker" context="#pop" String="end" endRegion="sig"/>
- <IncludeRules context="Normal"/>
+ <context name="qtest header" lineEndContext="qtest" attribute="Operator">
+ <keyword String="qtest keywords" attribute="Keyword" />
+ <DetectChar char="&amp;" context="qtest param" attribute="qtest param style" />
+ <RegExpr String="&LIDENT;" context="#stay" attribute="qtest header style"/>
</context>
- <context attribute="Normal text" lineEndContext="#stay" name="Struct">
- <keyword attribute="Region Marker" context="#pop" String="end" endRegion="struct"/>
- <IncludeRules context="Normal"/>
+ <context name="qtest param" lineEndContext="qtest" attribute="qtest param style">
</context>
-
- <context attribute="Normal text" lineEndContext="#stay" name="Object">
- <keyword attribute="Region Marker" context="#pop" String="end" endRegion="object"/>
- <IncludeRules context="Normal"/>
+
+ <context name="qtest" lineEndContext="#stay" attribute="qtest body style">
+ <Detect2Chars char="*" char1=')' context="#pop" attribute="qtest body style" endRegion="comment" />
+ <IncludeRules context="Code" includeAttrib="true" />
</context>
-
- <context attribute="Normal text" lineEndContext="#stay" name="ModuleEnv" fallthrough="true" fallthroughContext="#pop">
- <DetectSpaces attribute="Normal text" context="#stay"/>
- <RegExpr attribute="Module" lookAhead="true" context="ModuleEnv2" String="&MIDENT;\s*\."/>
- <RegExpr attribute="Module" context="#pop" String="&MIDENT;"/>
+
+ <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="&quot;" context="String in Comment" attribute="String in Comment" />
</context>
-
- <context attribute="Normal text" lineEndContext="#stay" name="ModuleEnv2">
- <RegExpr attribute="Module" context="#stay" String="&MIDENT;"/>
- <DetectSpaces attribute="Normal text" context="#stay"/>
- <StringDetect attribute="Keyword" context="#pop" String="."/>
+
+ <context name="String in Comment" lineEndContext="#stay" attribute="String in Comment">
+ <DetectChar char="&quot;" context="#pop" attribute="String in Comment" />
+ <IncludeRules context="String" />
</context>
-
+
<!-- Camlp4 Quotations. These are source code literals used by the Campl4 preprocessor. -->
<!-- The only escapes allowed in a Camlp4 quotation are for the quotation start and stop symbols. -->
- <context attribute="Camlp4 Quotation" lineEndContext="#stay" name="Camlp4 Quotation Constant">
- <Detect2Chars attribute="Camlp4 Quotation" context="#pop" char="&gt;" char1="&gt;" />
- <Detect2Chars attribute="Camlp4 Quotation" context="Camlp4 Quotation Constant" char="&lt;" char1="&lt;" />
- <RegExpr attribute="Camlp4 Quotation" context="Camlp4 Quotation Constant" String="&lt;:&IDENT;&lt;" />
- <RegExpr attribute="Escaped characters" context="#stay" String="\\(\\|&gt;&gt;|&lt;&lt;)" />
- <RegExpr attribute="Escaped characters" context="#stay" String="\\&lt;:&IDENT;&lt;" />
+ <context name="Camlp4 Quotation" lineEndContext="#stay" attribute="Camlp4 Quotation">
+ <Detect2Chars char="&gt;" char1="&gt;" context="#pop" attribute="Camlp4 Quotation" />
+ <Detect2Chars char="&lt;" char1="&lt;" context="Camlp4 Quotation" attribute="Camlp4 Quotation" />
+ <RegExpr String="&lt;:&IDENT;&lt;" context="Camlp4 Quotation" attribute="Camlp4 Quotation" />
+ <RegExpr String="\\(\\|&gt;&gt;|&lt;&lt;)" context="#stay" attribute="Escaped Characters" />
+ <RegExpr String="\\&lt;:&IDENT;&lt;" context="#stay" attribute="Escaped Characters" />
+ </context>
+
+ <!-- Ocamldoc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+ <context name="Ocamldoc" lineEndContext="#stay" attribute="Ocamldoc Text">
+ <Detect2Chars char="*" char1=")" context="#pop" attribute="Comment" endRegion="comment" />
+
+ <!-- A backslash escapes markup characters: -->
+ <RegExpr String="\\." context="#stay" attribute="Escaped Characters" />
+
+ <!-- Support for nested comments and strings: -->
+ <StringDetect String="(**)" context="#stay" attribute="Comment" />
+ <StringDetect String="(**" context="Ocamldoc" attribute="Comment" beginRegion="comment" />
+ <Detect2Chars char="(" char1="*" context="Comment" attribute="Comment" beginRegion="comment" />
+
+ <!-- Strings in Ocaml comments must be well-formed: -->
+ <DetectChar char="&quot;" context="String in Comment" attribute="String in Comment" />
+
+ <!-- Nested Markup: -->
+ <DetectChar char="[" context="Ocamldoc Code" attribute="Ocamldoc Markup" />
+ <Detect2Chars char="{" char1="[" context="Ocamldoc Preformatted" attribute="Ocamldoc Markup" />
+ <Detect2Chars char="{" char1="%" context="Ocamldoc LaTeX" attribute="Ocamldoc Markup" />
+ <Detect2Chars char="{" char1="^" context="Nested Ocamldoc" attribute="Ocamldoc Markup" />
+ <RegExpr String="[{]v(\s|$)" context="Ocamldoc Verbatim" attribute="Ocamldoc Markup" />
+ <RegExpr String="[{]b(\s|$)" context="Ocamldoc Bold" attribute="Ocamldoc Markup" />
+ <RegExpr String="[{]i(\s|$)" context="Ocamldoc Italic" attribute="Ocamldoc Markup" />
+ <RegExpr String="[{]e(\s|$)" context="Ocamldoc Emphasised" attribute="Ocamldoc Markup" />
+ <RegExpr String="[{][0-9]+(:&IDENT;)?\s" context="Ocamldoc Heading" attribute="Ocamldoc Markup" />
+ <RegExpr String="[{][{]:&IDENT;[}]" context="Ocamldoc Link" attribute="Ocamldoc Markup" />
+ <RegExpr String="[{]!([a-z]+:)?" context="Ocamldoc References" attribute="Ocamldoc Markup" />
+ <RegExpr String="[{]&IDENT;(\s|$)" context="Nested Ocamldoc" attribute="Ocamldoc Markup" />
+
+ <RegExpr String="@see\s*(&lt;[^&gt;]*&gt;|&quot;[^&quot;]*&quot;|'[^']*')" context="#stay" attribute="Ocamldoc Markup" />
+ <RegExpr String="@(param|raise)\s*" context="Ocamldoc Identifier" attribute="Ocamldoc Markup" />
+ <RegExpr String="@(author|deprecated|return|since|version)" context="#stay" attribute="Ocamldoc Markup" />
+ <RegExpr String="@&IDENT;" context="#stay" attribute="Ocamldoc Custom Tag" />
+
+
+
+ <!-- A dash at the start of a line is a bullet point. -->
+ <RegExpr String="^[ &#009;]*-\s" context="#stay" attribute="Ocamldoc Markup" />
+
+ <IncludeRules context="Unmatched Closing Brackets" />
+ </context>
+
+ <context name="Ocamldoc Code" lineEndContext="#stay" attribute="Operator">
+ <DetectChar char="]" context="#pop" attribute="Ocamldoc Markup" />
+ <IncludeRules context="Code" includeAttrib="true" />
+ </context>
+
+ <context name="Ocamldoc Preformatted" lineEndContext="#stay" attribute="Operator">
+ <Detect2Chars char="]" char1="}" context="#pop" attribute="Ocamldoc Markup" />
+ <IncludeRules context="Code" includeAttrib="true" />
+ </context>
+
+ <context name="Ocamldoc Verbatim" lineEndContext="#stay" attribute="Ocamldoc Text">
+ <Detect2Chars char="v" char1="}" context="#pop" attribute="Ocamldoc Markup" />
+ </context>
+
+ <context name="Ocamldoc LaTeX" lineEndContext="#stay" attribute="Ocamldoc LaTeX">
+ <Detect2Chars char="%" char1="}" context="#pop" attribute="Ocamldoc Markup" />
+ <IncludeRules context="##LaTeX" />
+ </context>
+
+ <!-- A single qualified Ocaml identifier, perhaps preceeded by whitespace. } -->
+ <context name="Ocamldoc Identifier" lineEndContext="#stay" attribute="Mismatched Brackets">
+ <RegExpr String="&IDENT;(\.&IDENT;)*" context="#pop" attribute="Identifier" />
+ <Detect2Chars char="*" char1=")" context="#pop" attribute="Mismatched Brackets" />
+ <DetectSpaces />
+ </context>
+
+ <context name="Nested Ocamldoc" lineEndContext="#stay" attribute="Operator">
+ <DetectChar char="}" context="#pop" attribute="Ocamldoc Markup" />
+ <Detect2Chars char="*" char1=")" context="#pop" attribute="Mismatched Brackets" />
+ <IncludeRules context="Ocamldoc" includeAttrib="true" />
+ </context>
+
+ <context name="Ocamldoc Bold" lineEndContext="#stay" attribute="Ocamldoc Bold">
+ <IncludeRules context="Nested Ocamldoc" />
+ </context>
+
+ <context name="Ocamldoc Italic" lineEndContext="#stay" attribute="Ocamldoc Italic">
+ <IncludeRules context="Nested Ocamldoc" />
+ </context>
+
+ <context name="Ocamldoc Emphasised" lineEndContext="#stay" attribute="Ocamldoc Emphasised">
+ <IncludeRules context="Nested Ocamldoc" />
+ </context>
+
+ <context name="Ocamldoc Heading" lineEndContext="#stay" attribute="Ocamldoc Heading">
+ <IncludeRules context="Nested Ocamldoc" />
+ </context>
+
+ <context name="Ocamldoc Link" lineEndContext="#stay" attribute="Ocamldoc Link">
+ <IncludeRules context="Nested Ocamldoc" />
+ </context>
+
+ <!-- A list of qualified Ocaml identifiers, seperated by whitespace and ending with a } -->
+ <context name="Ocamldoc References" lineEndContext="#stay" attribute="Mismatched Brackets">
+ <DetectChar char="}" context="#pop" attribute="Ocamldoc Markup" />
+ <Detect2Chars char="*" char1=")" context="#pop" attribute="Mismatched Brackets" />
+ <RegExpr String="&IDENT;(\.&IDENT;)*" context="#stay" attribute="Ocamldoc Link" />
+ <DetectSpaces context="#stay" attribute="Ocamldoc Markup" />
+ </context>
+
+ <!-- Unmatched closing brackets- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+ <context name="Unmatched Closing Brackets" lineEndContext="#stay" attribute="Operator">
+ <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="Normal Text" defStyleNum="dsNormal"/>
- <itemData name="Identifier" defStyleNum="dsNormal"/>
- <itemData name="Symbol" defStyleNum="dsNormal"/>
- <itemData name="Keyword" defStyleNum="dsKeyword"/>
- <itemData name="Revised Syntax Keyword" defStyleNum="dsNormal"/>
- <itemData name="Core Data Type" defStyleNum="dsDataType"/>
- <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="Camlp4 Quotation" defStyleNum="dsString"/>
- <itemData name="Directive" defStyleNum="dsOthers"/>
- <itemData name="Constructor" defStyleNum="dsDataType"/>
- <itemData name="Module" defStyleNum="dsNormal"/>
- <itemData name="Region Marker" defStyleNum="dsKeyword"/>
+ <itemData name="Operator" defStyleNum="dsNormal" />
+ <itemData name="Keyword" defStyleNum="dsKeyword" />
+ <itemData name="Revised Syntax Keyword" defStyleNum="dsNormal" />
+ <itemData name="Lowercase Identifier" defStyleNum="dsNormal" />
+ <itemData name="Uppercase Identifier" defStyleNum="dsNormal" italic="true" />
+
+ <!-- Lowercase pervasive identifiers: -->
+ <itemData name="Flow Control Functions" defStyleNum="dsDataType" />
+ <itemData name="Pervasive Functions" defStyleNum="dsDataType" />
+ <itemData name="Pervasive Types" defStyleNum="dsDataType" />
+
+ <!-- Uppercase pervasive identifiers: -->
+ <itemData name="Pervasive Exceptions" defStyleNum="dsDataType" italic="true" />
+ <itemData name="Pervasive Variant Tags" defStyleNum="dsDataType" italic="true" />
+ <itemData name="Standard Library Modules" defStyleNum="dsDataType" italic="true" />
+
+ <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="Camlp4 Quotation" defStyleNum="dsString" />
+ <itemData name="Escaped Characters" defStyleNum="dsChar" />
+
+ <itemData name="Directive" defStyleNum="dsOthers" />
+
+ <itemData name="Comment" defStyleNum="dsComment" />
+ <itemData name="String in Comment" defStyleNum="dsComment" bold="true" />
+ <itemData name="Mismatched Brackets" defStyleNum="dsError" />
+
+ <itemData name="Ocamldoc Markup" defStyleNum="dsOthers" />
+ <itemData name="Ocamldoc Text" defStyleNum="dsComment" italic="false" />
+ <itemData name="Ocamldoc Bold" defStyleNum="dsComment" italic="false" bold="true" />
+ <itemData name="Ocamldoc Italic" defStyleNum="dsComment" italic="true" bold="false" />
+ <itemData name="Ocamldoc Emphasised" defStyleNum="dsComment" italic="true" bold="true" />
+ <itemData name="Ocamldoc Heading" defStyleNum="dsComment" italic="false" bold="true" underline="true" />
+ <itemData name="Ocamldoc Link" defStyleNum="dsComment" italic="false" underline="true" color="#0000ff" />
+ <itemData name="Ocamldoc LaTeX" defStyleNum="dsComment" italic="false" />
+ <itemData name="Ocamldoc Custom Tag" defStyleNum="dsOthers" italic="true" />
+
+ <itemData name="qtest header style" defStyleNum="dsNormal" backgroundColor="#FFEBE0" />
+ <itemData name="qtest param style" defStyleNum="dsNormal" italic="true" color="#7788FF" />
+ <!-- backgroundColor="#EEEEFF" -->
+ <itemData name="qtest body style" defStyleNum="dsNormal" bold="true" backgroundColor="#D6FFEB" />
</itemDatas>
</highlighting>
<general>
- <keywords casesensitive="1" />
+ <keywords casesensitive="true" />
<comments>
- <comment name="multiLine" start="(*" end="*)" />
+ <comment name="multiLine" start="(*" end="*)" region ="comment" />
</comments>
</general>
</language>