Warning, /frameworks/syntax-highlighting/data/syntax/ocaml.xml is written in an unsupported language. File is not indexed.

0001 <?xml version="1.0" encoding="UTF-8"?>
0002 <!-- Kate syntax highlighting for Objective Caml version 4.02 in the standard and revised syntaxes, with Ocamldoc comments. -->
0003 
0004 <!DOCTYPE language
0005 [
0006 <!-- Regular expresion constants: -->
0007 <!ENTITY LOWER  "a-z\300-\326\330-\337">         <!-- Lowercase Latin-1 letters. -->
0008 <!ENTITY UPPER  "A-Z\340-\366\370-\377">         <!-- Uppercase Latin-1 letters. -->
0009 <!ENTITY LETTER "&LOWER;&UPPER;">                <!-- All Latin-1 letters. -->
0010 <!ENTITY LIDENT "[&LOWER;_][&LETTER;0-9_']*">    <!-- Lowercase OCaml identifiers. -->
0011 <!ENTITY UIDENT "`?[&UPPER;][&LETTER;0-9_']*">   <!-- Uppercase OCaml identifiers. -->
0012 <!ENTITY IDENT  "`?[&LETTER;][&LETTER;0-9_']*">  <!-- All OCaml identifiers. -->
0013 <!ENTITY ESC    "(\\[ntbr'&quot;\\]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2})"> <!-- OCaml character code escapes. -->
0014 <!ENTITY DEC    "[0-9][0-9_]*">                                     <!-- Decimal digits with underscores. -->
0015 ]>
0016 <language name="Objective Caml"
0017           extensions="*.ml;*.mli"
0018           mimetype="text/x-ocaml"
0019           section="Sources"
0020           version="10"
0021           priority="10"
0022           kateversion="5.79"
0023           author="Glyn Webster (glynwebster@orcon.net.nz) and Vincent Hugot (vincent.hugot@gmail.com)"
0024           license="LGPL" >
0025 
0026   <highlighting>
0027     <list name="qtest keywords">
0028       <item>in</item>
0029       <item>as</item>
0030       <item>forall</item>
0031     </list>
0032     <list name="Keywords">
0033       <item>and</item>
0034       <item>as</item>
0035       <item>assert</item>
0036       <item>asr</item>
0037       <item>begin</item>
0038       <item>class</item>
0039       <item>closed</item>
0040       <item>constraint</item>
0041       <item>do</item>
0042       <item>done</item>
0043       <item>downto</item>
0044       <item>else</item>
0045       <item>end</item>
0046       <item>exception</item>
0047       <item>external</item>
0048       <item>false</item>
0049       <item>for</item>
0050       <item>fun</item>
0051       <item>function</item>
0052       <item>functor</item>
0053       <item>if</item>
0054       <item>in</item>
0055       <item>include</item>
0056       <item>inherit</item>
0057       <item>land</item>
0058       <item>lazy</item>
0059       <item>let</item>
0060       <item>lor</item>
0061       <item>lsl</item>
0062       <item>lsr</item>
0063       <item>lxor</item>
0064       <item>match</item>
0065       <item>method</item>
0066       <item>mod</item>
0067       <item>module</item>
0068       <item>mutable</item>
0069       <item>new</item>
0070       <item>nonrec</item>
0071       <item>object</item>
0072       <item>of</item>
0073       <item>open</item>
0074       <item>or</item>
0075       <item>parser</item>
0076       <item>private</item>
0077       <item>rec</item>
0078       <item>sig</item>
0079       <item>struct</item>
0080       <item>then</item>
0081       <item>to</item>
0082       <item>true</item>
0083       <item>try</item>
0084       <item>type</item>
0085       <item>val</item>
0086       <item>virtual</item>
0087       <item>when</item>
0088       <item>while</item>
0089       <item>with</item>
0090     </list>
0091 
0092     <!-- Revised Syntax keywords are highlighted as identifiers by default. -->
0093     <!-- Change their highlighting colour to match the standard keywords    -->
0094     <!-- if you intend to use the Camlp4 Revised Syntax.                    -->
0095     <list name="Revised Syntax Keywords">
0096       <item>declare</item>
0097       <item>value</item>
0098       <item>where</item>
0099     </list>
0100 
0101     <list name="Pervasive Functions">
0102       <item>abs</item>
0103       <item>abs_float</item>
0104       <item>acos</item>
0105       <item>asin</item>
0106       <item>at_exit</item>
0107       <item>atan</item>
0108       <item>atan2</item>
0109       <item>bool_of_string</item>
0110       <item>ceil</item>
0111       <item>char_of_int</item>
0112       <item>classify_float</item>
0113       <item>close_in</item>
0114       <item>close_in_noerr</item>
0115       <item>close_out</item>
0116       <item>close_out_noerr</item>
0117       <item>compare</item>
0118       <item>copysign</item>
0119       <item>cos</item>
0120       <item>cosh</item>
0121       <item>decr</item>
0122       <item>do_at_exit</item>
0123       <item>epsilon_float</item>
0124       <item>exp</item>
0125       <item>expm1</item>
0126       <item>float</item>
0127       <item>float_of_int</item>
0128       <item>float_of_string</item>
0129       <item>floor</item>
0130       <item>flush</item>
0131       <item>flush_all</item>
0132       <item>format_of_string</item>
0133       <item>frexp</item>
0134       <item>fst</item>
0135       <item>hypot</item>
0136       <item>ignore</item>
0137       <item>in_channel_length</item>
0138       <item>incr</item>
0139       <item>infinity</item>
0140       <item>input</item>
0141       <item>input_binary_int</item>
0142       <item>input_byte</item>
0143       <item>input_char</item>
0144       <item>input_line</item>
0145       <item>input_value</item>
0146       <item>int_of_char</item>
0147       <item>int_of_float</item>
0148       <item>int_of_string</item>
0149       <item>ldexp</item>
0150       <item>lnot</item>
0151       <item>log</item>
0152       <item>log10</item>
0153       <item>log1p</item>
0154       <item>max</item>
0155       <item>max_float</item>
0156       <item>max_int</item>
0157       <item>min</item>
0158       <item>min_float</item>
0159       <item>min_int</item>
0160       <item>mod_float</item>
0161       <item>modf</item>
0162       <item>nan</item>
0163       <item>neg_infinity</item>
0164       <item>not</item>
0165       <item>open_in</item>
0166       <item>open_in_bin</item>
0167       <item>open_in_gen</item>
0168       <item>open_out</item>
0169       <item>open_out_bin</item>
0170       <item>open_out_gen</item>
0171       <item>out_channel_length</item>
0172       <item>output</item>
0173       <item>output_binary_int</item>
0174       <item>output_byte</item>
0175       <item>output_bytes</item>
0176       <item>output_char</item>
0177       <item>output_string</item>
0178       <item>output_substring</item>
0179       <item>output_value</item>
0180       <item>pos_in</item>
0181       <item>pos_out</item>
0182       <item>pred</item>
0183       <item>prerr_bytes</item>
0184       <item>prerr_char</item>
0185       <item>prerr_endline</item>
0186       <item>prerr_float</item>
0187       <item>prerr_int</item>
0188       <item>prerr_newline</item>
0189       <item>prerr_string</item>
0190       <item>print_bytes</item>
0191       <item>print_char</item>
0192       <item>print_endline</item>
0193       <item>print_float</item>
0194       <item>print_int</item>
0195       <item>print_newline</item>
0196       <item>print_string</item>
0197       <item>read_float</item>
0198       <item>read_int</item>
0199       <item>read_line</item>
0200       <item>really_input</item>
0201       <item>really_input_string</item>
0202       <item>ref</item>
0203       <item>seek_in</item>
0204       <item>seek_out</item>
0205       <item>set_binary_mode_in</item>
0206       <item>set_binary_mode_out</item>
0207       <item>sin</item>
0208       <item>sinh</item>
0209       <item>snd</item>
0210       <item>sqrt</item>
0211       <item>stderr</item>
0212       <item>stdin</item>
0213       <item>stdout</item>
0214       <item>string_of_bool</item>
0215       <item>string_of_float</item>
0216       <item>string_of_format</item>
0217       <item>string_of_int</item>
0218       <item>succ</item>
0219       <item>tan</item>
0220       <item>tanh</item>
0221       <item>truncate</item>
0222       <item>unsafe_really_input</item>
0223       <item>valid_float_lexem</item>
0224     </list>
0225 
0226     <!-- These pervasive functions control program flow,    -->
0227     <!-- so some people like to highlight them as keywords: -->
0228     <list name="Flow Control Functions">
0229       <item>exit</item>
0230       <item>failwith</item>
0231       <item>invalid_arg</item>
0232       <item>raise</item>
0233       <item>raise_notrace</item>
0234     </list>
0235 
0236     <list name="Pervasive Types">
0237       <item>array</item>
0238       <item>bool</item>
0239       <item>bytes</item>
0240       <item>char</item>
0241       <item>exn</item>
0242       <item>float</item>
0243       <item>format4</item>
0244       <item>format6</item>
0245       <item>fpclass</item>
0246       <item>in_channel</item>
0247       <item>int</item>
0248       <item>int32</item>
0249       <item>int64</item>
0250       <item>lazy_t</item>
0251       <item>list</item>
0252       <item>nativeint</item>
0253       <item>open_flag</item>
0254       <item>option</item>
0255       <item>out_channel</item>
0256       <item>real</item>
0257       <item>ref</item>
0258       <item>string</item>
0259       <item>unit</item>
0260     </list>
0261 
0262     <list name="Pervasive Variant Tags">
0263       <item>FP_infinite</item>
0264       <item>FP_nan</item>
0265       <item>FP_normal</item>
0266       <item>FP_subnormal</item>
0267       <item>FP_zero</item>
0268       <item>None</item>
0269       <item>Open_append</item>
0270       <item>Open_binary</item>
0271       <item>Open_creat</item>
0272       <item>Open_excl</item>
0273       <item>Open_nonblock</item>
0274       <item>Open_rdonly</item>
0275       <item>Open_text</item>
0276       <item>Open_trunc</item>
0277       <item>Open_wronly</item>
0278       <item>Some</item>
0279     </list>
0280 
0281     <list name="Pervasive Exceptions">
0282       <item>Assert_failure</item>
0283       <item>Division_by_zero</item>
0284       <item>End_of_file</item>
0285       <item>Exit</item>
0286       <item>Failure</item>
0287       <item>Invalid_argument</item>
0288       <item>Match_failure</item>
0289       <item>Not_found</item>
0290       <item>Out_of_memory</item>
0291       <item>Stack_overflow</item>
0292       <item>Sys_blocked_io</item>
0293       <item>Sys_error</item>
0294       <item>Undefined_recursive_module</item>
0295     </list>
0296 
0297     <list name="Standard Library Modules">
0298       <item>Arg</item>
0299       <item>Array</item>
0300       <item>ArrayLabels</item>
0301       <item>Buffer</item>
0302       <item>Bytes</item>
0303       <item>Callback</item>
0304       <item>Char</item>
0305       <item>Complex</item>
0306       <item>Digest</item>
0307       <item>Ephemeron</item>
0308       <item>Filename</item>
0309       <item>Format</item>
0310       <item>Gc</item>
0311       <item>Genlex</item>
0312       <item>Hashtbl</item>
0313       <item>Int32</item>
0314       <item>Int64</item>
0315       <item>Lazy</item>
0316       <item>Lexing</item>
0317       <item>List</item>
0318       <item>ListLabels</item>
0319       <item>Map</item>
0320       <item>Marshal</item>
0321       <item>MoreLabels</item>
0322       <item>Nativeint</item>
0323       <item>Oo</item>
0324       <item>Parsing</item>
0325       <item>Printexc</item>
0326       <item>Printf</item>
0327       <item>Queue</item>
0328       <item>Random</item>
0329       <item>Scanf</item>
0330       <item>Set</item>
0331       <item>Sort</item>
0332       <item>Spacetime</item>
0333       <item>Stack</item>
0334       <item>StdLabels</item>
0335       <item>Stream</item>
0336       <item>String</item>
0337       <item>StringLabels</item>
0338       <item>Sys</item>
0339       <item>Uchar</item>
0340       <item>Weak</item>
0341     </list>
0342 
0343     <contexts>
0344 
0345       <context name="Code" lineEndContext="#stay" attribute="Operator">
0346 
0347         <!-- ] and ]} close code samples in Ocamldoc, so -->
0348         <!-- nested [ ] and { } brackets have to be allowed for: -->
0349         <DetectChar char="[" context="Nested Code 1" attribute="Operator" />
0350         <DetectChar char="{" context="Nested Code 2" attribute="Operator" />
0351 
0352         <!-- Comments. -->
0353         <!-- A (** begins a special comment with Ocamldoc documentation markup. -->
0354         <StringDetect String="(**)"      context="#stay"    attribute="Comment" />
0355         <StringDetect String="(**"       context="Ocamldoc" attribute="Comment" beginRegion="comment" />
0356         <RegExpr String="\(\*\$(T|Q|R|=)"       context="qtest header" attribute="qtest body style" beginRegion="comment" />
0357         <Detect2Chars char="(" char1="*" context="Comment"  attribute="Comment" beginRegion="comment" />
0358 
0359         <!-- Interpreter directives. -->
0360         <!-- (These are lines where the first symbol is a '#' followed by an identifier. -->
0361         <!-- Such lines could also be part of a method call split over two lines but     -->
0362         <!-- it's unlikey anyone would code like that.)                                  -->
0363         <RegExpr String="#&IDENT;.*$" context="#stay" firstNonSpace="true" attribute="Directive"/>
0364 
0365         <!-- String, character and Camlp4 "quotation" constants.              -->
0366         <!-- Note: If you must modify the pattern for characters be precise:  -->
0367         <!-- single quotes have several meanings in Ocaml.                    -->
0368         <DetectChar char="&quot;" context="String" attribute="String" />
0369         <RegExpr String="'(&ESC;|[^'])'" context="#stay" attribute="Character" />
0370         <Detect2Chars char="&lt;" char1="&lt;" context="Camlp4 Quotation" attribute="Camlp4 Quotation" />
0371         <RegExpr String="&lt;:&IDENT;&lt;" context="Camlp4 Quotation" attribute="Camlp4 Quotation" />
0372 
0373         <!-- Identifiers and keywords. -->
0374         <keyword String="Keywords"                 context="#stay" attribute="Keyword" />
0375         <keyword String="Revised Syntax Keywords"  context="#stay" attribute="Revised Syntax Keyword" />
0376         <keyword String="Flow Control Functions"      context="#stay" attribute="Flow Control Functions" />
0377         <keyword String="Pervasive Functions"      context="#stay" attribute="Pervasive Functions" />
0378         <keyword String="Pervasive Types"          context="#stay" attribute="Pervasive Types" />
0379         <keyword String="Pervasive Exceptions"     context="#stay" attribute="Pervasive Exceptions" />
0380         <keyword String="Pervasive Variant Tags"   context="#stay" attribute="Pervasive Variant Tags" />
0381         <keyword String="Standard Library Modules" context="#stay" attribute="Standard Library Modules" />
0382         <RegExpr String="&LIDENT;"                 context="#stay" attribute="Lowercase Identifier" />
0383         <RegExpr String="&UIDENT;"                 context="#stay" attribute="Uppercase Identifier" />
0384 
0385         <!-- Numeric constants. -->
0386         <!-- Note that they may contain underscores. -->
0387         <RegExpr String="-?0[xX][0-9A-Fa-f_]+" context="#stay" attribute="Hexadecimal" />
0388         <RegExpr String="-?0[oO][0-7_]+" context="#stay" attribute="Octal" />
0389         <RegExpr String="-?0[bB][01_]+" context="#stay" attribute="Binary" />
0390         <RegExpr String="-?&DEC;(\.&DEC;([eE][-+]?&DEC;)?|[eE][-+]?&DEC;)" context="#stay" attribute="Float" />
0391         <RegExpr String="-?&DEC;" context="#stay" attribute="Decimal" />
0392 
0393         <IncludeRules context="Unmatched Closing Brackets" />
0394       </context>
0395 
0396       <context name="Nested Code 1" lineEndContext="#stay" attribute="Operator">
0397         <DetectChar char="]" context="#pop" attribute="Operator" />
0398         <IncludeRules context="Code" includeAttrib="true" />
0399       </context>
0400 
0401       <context name="Nested Code 2" lineEndContext="#stay" attribute="Operator">
0402         <DetectChar char="}" context="#pop" attribute="Operator" />
0403         <IncludeRules context="Code" includeAttrib="true" />
0404       </context>
0405 
0406       <context name="String" lineEndContext="#stay" attribute="String">
0407         <DetectChar char="&quot;" context="#pop" attribute="String" />
0408         <!-- A backslash at the end of a line in a string indicates  -->
0409         <!-- that the string will continue on the next line:         -->
0410         <RegExpr String="&ESC;|\\$" context="#stay" attribute="Escaped Characters" />
0411       </context>
0412 
0413       <context name="qtest header" lineEndContext="qtest" attribute="Operator">
0414         <keyword String="qtest keywords"  attribute="Keyword" />
0415         <DetectChar char="&amp;" context="qtest param" attribute="qtest param style" />
0416         <RegExpr String="&LIDENT;" context="#stay" attribute="qtest header style"/>
0417       </context>
0418 
0419       <context name="qtest param" lineEndContext="qtest" attribute="qtest param style">
0420       </context>
0421 
0422       <context name="qtest" lineEndContext="#stay" attribute="qtest body style">
0423         <Detect2Chars char="*" char1=')' context="#pop" attribute="qtest body style" endRegion="comment" />
0424         <IncludeRules context="Code" includeAttrib="true" />
0425       </context>
0426 
0427       <context name="Comment" lineEndContext="#stay" attribute="Comment">
0428         <Detect2Chars char="*" char1=")" context="#pop" attribute="Comment" endRegion="comment"  />
0429         <!-- Support for nested comments: -->
0430         <Detect2Chars char="(" char1="*" context="Comment" attribute="Comment" beginRegion="comment" />
0431         <!-- Strings in Ocaml comments must be well-formed: -->
0432         <DetectChar char="&quot;" context="String in Comment" attribute="String in Comment" />
0433 
0434         <DetectSpaces />
0435         <IncludeRules context="##Comments" />
0436       </context>
0437 
0438       <context name="String in Comment" lineEndContext="#stay" attribute="String in Comment">
0439         <DetectChar char="&quot;" context="#pop" attribute="String in Comment" />
0440         <IncludeRules context="String" />
0441       </context>
0442 
0443       <!-- Camlp4 Quotations. These are source code literals used by the Campl4 preprocessor.           -->
0444       <!-- The only escapes allowed in a Camlp4 quotation are for the quotation start and stop symbols. -->
0445       <context name="Camlp4 Quotation" lineEndContext="#stay" attribute="Camlp4 Quotation">
0446         <Detect2Chars char="&gt;" char1="&gt;"     context="#pop"             attribute="Camlp4 Quotation" />
0447         <Detect2Chars char="&lt;" char1="&lt;"     context="Camlp4 Quotation" attribute="Camlp4 Quotation" />
0448         <RegExpr String="&lt;:&IDENT;&lt;"         context="Camlp4 Quotation" attribute="Camlp4 Quotation" />
0449         <RegExpr String="\\(\\|&gt;&gt;|&lt;&lt;|&lt;:&IDENT;&lt;)" context="#stay" attribute="Escaped Characters" />
0450       </context>
0451 
0452     <!-- Ocamldoc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
0453 
0454       <context name="Ocamldoc" lineEndContext="#stay" attribute="Ocamldoc Text">
0455         <Detect2Chars char="*" char1=")" context="#pop" attribute="Comment" endRegion="comment" />
0456 
0457         <!-- A backslash escapes markup characters: -->
0458         <RegExpr String="\\." context="#stay" attribute="Escaped Characters" />
0459 
0460         <!-- Support for nested comments and strings: -->
0461         <StringDetect String="(**)"      context="#stay"    attribute="Comment" />
0462         <StringDetect String="(**"       context="Ocamldoc" attribute="Comment" beginRegion="comment" />
0463         <Detect2Chars char="(" char1="*" context="Comment"  attribute="Comment" beginRegion="comment" />
0464 
0465         <!-- Strings in Ocaml comments must be well-formed: -->
0466         <DetectChar char="&quot;" context="String in Comment" attribute="String in Comment" />
0467 
0468         <!-- Nested Markup: -->
0469         <DetectChar   char="["                   context="Ocamldoc Code"         attribute="Ocamldoc Markup" />
0470         <Detect2Chars char="{" char1="["         context="Ocamldoc Preformatted" attribute="Ocamldoc Markup" />
0471         <Detect2Chars char="{" char1="%"         context="Ocamldoc LaTeX"        attribute="Ocamldoc Markup" />
0472         <Detect2Chars char="{" char1="^"         context="Nested Ocamldoc"       attribute="Ocamldoc Markup" />
0473         <RegExpr String="[{]v(\s|$)"             context="Ocamldoc Verbatim"     attribute="Ocamldoc Markup" />
0474         <RegExpr String="[{]b(\s|$)"             context="Ocamldoc Bold"         attribute="Ocamldoc Markup" />
0475         <RegExpr String="[{]i(\s|$)"             context="Ocamldoc Italic"       attribute="Ocamldoc Markup" />
0476         <RegExpr String="[{]e(\s|$)"             context="Ocamldoc Emphasised"   attribute="Ocamldoc Markup" />
0477         <RegExpr String="[{][0-9]+(:&IDENT;)?\s" context="Ocamldoc Heading"      attribute="Ocamldoc Markup" />
0478         <RegExpr String="[{][{]:&IDENT;[}]"      context="Ocamldoc Link"         attribute="Ocamldoc Markup" />
0479         <RegExpr String="[{]!([a-z]+:)?"         context="Ocamldoc References"   attribute="Ocamldoc Markup" />
0480         <RegExpr String="[{]&IDENT;(\s|$)"       context="Nested Ocamldoc"       attribute="Ocamldoc Markup" />
0481 
0482         <RegExpr String="@see\s*(&lt;[^&gt;]*&gt;|&quot;[^&quot;]*&quot;|'[^']*')" context="#stay" attribute="Ocamldoc Markup" />
0483         <RegExpr String="@(param|raise)\s*" context="Ocamldoc Identifier" attribute="Ocamldoc Markup" />
0484         <RegExpr String="@(author|before|deprecated|return|since|version)" context="#stay" attribute="Ocamldoc Markup" />
0485         <RegExpr String="@&IDENT;" context="#stay" attribute="Ocamldoc Custom Tag" />
0486 
0487 
0488 
0489         <!-- A dash at the start of a line is a bullet point. -->
0490         <RegExpr String="^[ &#009;]*-\s" context="#stay"  attribute="Ocamldoc Markup" column="0" />
0491 
0492         <IncludeRules context="Unmatched Closing Brackets" />
0493       </context>
0494 
0495       <context name="Ocamldoc Code" lineEndContext="#stay" attribute="Operator">
0496         <DetectChar char="]" context="#pop" attribute="Ocamldoc Markup" />
0497         <IncludeRules context="Code" includeAttrib="true" />
0498       </context>
0499 
0500       <context name="Ocamldoc Preformatted" lineEndContext="#stay" attribute="Operator">
0501         <Detect2Chars char="]" char1="}" context="#pop" attribute="Ocamldoc Markup" />
0502         <IncludeRules context="Code" includeAttrib="true" />
0503       </context>
0504 
0505       <context name="Ocamldoc Verbatim" lineEndContext="#stay" attribute="Ocamldoc Text">
0506         <Detect2Chars char="v" char1="}" context="#pop" attribute="Ocamldoc Markup" />
0507       </context>
0508 
0509       <context name="Ocamldoc LaTeX" lineEndContext="#stay" attribute="Ocamldoc LaTeX">
0510         <Detect2Chars char="%" char1="}" context="#pop" attribute="Ocamldoc Markup" />
0511         <IncludeRules context="##LaTeX" />
0512       </context>
0513 
0514       <!-- A single qualified Ocaml identifier, perhaps preceeded by whitespace. } -->
0515       <context name="Ocamldoc Identifier" lineEndContext="#stay" attribute="Mismatched Brackets">
0516         <RegExpr      String="&IDENT;(\.&IDENT;)*" context="#pop" attribute="Ocamldoc Link"  />
0517         <Detect2Chars char="*" char1=")"           context="#pop" attribute="Mismatched Brackets" />
0518         <DetectSpaces />
0519       </context>
0520 
0521       <context name="Nested Ocamldoc" lineEndContext="#stay" attribute="Operator">
0522         <DetectChar   char="}"           context="#pop" attribute="Ocamldoc Markup" />
0523         <Detect2Chars char="*" char1=")" context="#pop" attribute="Mismatched Brackets" />
0524         <IncludeRules context="Ocamldoc" includeAttrib="true" />
0525       </context>
0526 
0527       <context name="Ocamldoc Bold" lineEndContext="#stay" attribute="Ocamldoc Bold">
0528         <IncludeRules context="Nested Ocamldoc" />
0529       </context>
0530 
0531       <context name="Ocamldoc Italic" lineEndContext="#stay" attribute="Ocamldoc Italic">
0532         <IncludeRules context="Nested Ocamldoc" />
0533       </context>
0534 
0535       <context name="Ocamldoc Emphasised" lineEndContext="#stay" attribute="Ocamldoc Emphasised">
0536         <IncludeRules context="Nested Ocamldoc" />
0537       </context>
0538 
0539       <context name="Ocamldoc Heading" lineEndContext="#stay" attribute="Ocamldoc Heading">
0540         <IncludeRules context="Nested Ocamldoc" />
0541       </context>
0542 
0543       <context name="Ocamldoc Link" lineEndContext="#stay" attribute="Ocamldoc Link">
0544         <IncludeRules context="Nested Ocamldoc" />
0545       </context>
0546 
0547       <!-- A list of qualified Ocaml identifiers, seperated by whitespace and ending with a } -->
0548       <context name="Ocamldoc References" lineEndContext="#stay" attribute="Mismatched Brackets">
0549         <DetectChar   char="}"                     context="#pop"  attribute="Ocamldoc Markup"  />
0550         <Detect2Chars char="*" char1=")"           context="#pop"  attribute="Mismatched Brackets" />
0551         <RegExpr      String="&IDENT;(\.&IDENT;)*" context="#stay" attribute="Ocamldoc Link"  />
0552         <DetectSpaces                              context="#stay" attribute="Ocamldoc Markup" />
0553       </context>
0554 
0555       <!-- Unmatched closing brackets- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
0556 
0557       <context name="Unmatched Closing Brackets"  lineEndContext="#stay" attribute="Operator">
0558         <Detect2Chars char="*" char1=")" context="#pop"  attribute="Mismatched Brackets" />
0559         <Detect2Chars char="v" char1="}" context="#stay" attribute="Mismatched Brackets" />
0560         <Detect2Chars char="]" char1="}" context="#stay" attribute="Mismatched Brackets" />
0561         <Detect2Chars char="%" char1="}" context="#stay" attribute="Mismatched Brackets" />
0562         <AnyChar      String="]}"        context="#stay" attribute="Mismatched Brackets" />
0563       </context>
0564     </contexts>
0565 
0566     <itemDatas>
0567       <itemData name="Operator"                defStyleNum="dsNormal"   />
0568       <itemData name="Keyword"                 defStyleNum="dsKeyword"  />
0569       <itemData name="Revised Syntax Keyword"  defStyleNum="dsNormal"   />
0570       <itemData name="Lowercase Identifier"    defStyleNum="dsNormal"   />
0571       <itemData name="Uppercase Identifier"    defStyleNum="dsNormal"   italic="true" />
0572 
0573       <!-- Lowercase pervasive identifiers: -->
0574       <itemData name="Flow Control Functions"   defStyleNum="dsDataType" />
0575       <itemData name="Pervasive Functions"      defStyleNum="dsDataType" />
0576       <itemData name="Pervasive Types"          defStyleNum="dsDataType" />
0577 
0578       <!-- Uppercase pervasive identifiers: -->
0579       <itemData name="Pervasive Exceptions"     defStyleNum="dsDataType" italic="true" />
0580       <itemData name="Pervasive Variant Tags"   defStyleNum="dsDataType" italic="true" />
0581       <itemData name="Standard Library Modules" defStyleNum="dsDataType" italic="true" />
0582 
0583       <itemData name="Decimal"                 defStyleNum="dsDecVal"   />
0584       <itemData name="Hexadecimal"             defStyleNum="dsBaseN"    />
0585       <itemData name="Octal"                   defStyleNum="dsBaseN"    />
0586       <itemData name="Binary"                  defStyleNum="dsBaseN"    />
0587       <itemData name="Float"                   defStyleNum="dsFloat"    />
0588 
0589       <itemData name="Character"               defStyleNum="dsChar"     />
0590       <itemData name="String"                  defStyleNum="dsString"   />
0591       <itemData name="Camlp4 Quotation"        defStyleNum="dsString"   />
0592       <itemData name="Escaped Characters"      defStyleNum="dsChar"     />
0593 
0594       <itemData name="Directive"               defStyleNum="dsOthers"   />
0595 
0596       <itemData name="Comment"                 defStyleNum="dsComment"  />
0597       <itemData name="String in Comment"       defStyleNum="dsComment"  bold="true" />
0598       <itemData name="Mismatched Brackets"     defStyleNum="dsError"    />
0599 
0600       <itemData name="Ocamldoc Markup"         defStyleNum="dsOthers"   />
0601       <itemData name="Ocamldoc Text"           defStyleNum="dsComment"  italic="false" />
0602       <itemData name="Ocamldoc Bold"           defStyleNum="dsComment"  italic="false" bold="true" />
0603       <itemData name="Ocamldoc Italic"         defStyleNum="dsComment"  italic="true"  bold="false" />
0604       <itemData name="Ocamldoc Emphasised"     defStyleNum="dsComment"  italic="true"  bold="true" />
0605       <itemData name="Ocamldoc Heading"        defStyleNum="dsComment"  italic="false" bold="true" underline="true" />
0606       <itemData name="Ocamldoc Link"           defStyleNum="dsComment"  italic="false" underline="true" color="#0000ff" />
0607       <itemData name="Ocamldoc LaTeX"          defStyleNum="dsComment"  italic="false" />
0608       <itemData name="Ocamldoc Custom Tag"     defStyleNum="dsOthers"   italic="true"  />
0609 
0610       <itemData name="qtest header style"     defStyleNum="dsNormal"  backgroundColor="#FFEBE0" />
0611       <itemData name="qtest param style"      defStyleNum="dsNormal"  italic="true" color="#7788FF" />
0612       <!-- backgroundColor="#EEEEFF" -->
0613       <itemData name="qtest body style"       defStyleNum="dsNormal"  bold="true" backgroundColor="#D6FFEB" />
0614     </itemDatas>
0615   </highlighting>
0616 
0617   <general>
0618     <keywords casesensitive="true" />
0619     <comments>
0620       <comment name="multiLine" start="(*" end="*)" region ="comment" />
0621     </comments>
0622   </general>
0623 </language>
0624 <!-- kate: space-indent on; indent-width 2; replace-tabs on; -->