<?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. --> ]> <language name="Objective Caml" extensions="*.ml;*.mli" mimetype="text/x-ocaml" section="Sources" version="6" priority="10" kateversion="2.4" author="Glyn Webster (glynwebster@orcon.net.nz) and Vincent Hugot (vincent.hugot@gmail.com)" license="LGPL" > <highlighting> <list name="qtest keywords"> <item>in</item> <item>as</item> <item>forall</item> </list> <list name="Keywords"> <item>and</item> <item>as</item> <item>assert</item> <item>asr</item> <item>begin</item> <item>class</item> <item>closed</item> <item>constraint</item> <item>do</item> <item>done</item> <item>downto</item> <item>else</item> <item>end</item> <item>exception</item> <item>external</item> <item>false</item> <item>for</item> <item>fun</item> <item>function</item> <item>functor</item> <item>if</item> <item>in</item> <item>include</item> <item>inherit</item> <item>land</item> <item>lazy</item> <item>let</item> <item>lor</item> <item>lsl</item> <item>lsr</item> <item>lxor</item> <item>match</item> <item>method</item> <item>mod</item> <item>module</item> <item>mutable</item> <item>new</item> <item>nonrec</item> <item>object</item> <item>of</item> <item>open</item> <item>or</item> <item>parser</item> <item>private</item> <item>rec</item> <item>sig</item> <item>struct</item> <item>then</item> <item>to</item> <item>true</item> <item>try</item> <item>type</item> <item>val</item> <item>virtual</item> <item>when</item> <item>while</item> <item>with</item> </list> <!-- 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>copysign</item> <item>cos</item> <item>cosh</item> <item>decr</item> <item>do_at_exit</item> <item>epsilon_float</item> <item>exp</item> <item>expm1</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>hypot</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>log1p</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_bytes</item> <item>output_char</item> <item>output_string</item> <item>output_substring</item> <item>output_value</item> <item>pos_in</item> <item>pos_out</item> <item>pred</item> <item>prerr_bytes</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_bytes</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>really_input_string</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> <item>raise_notrace</item> </list> <list name="Pervasive Types"> <item>array</item> <item>bool</item> <item>bytes</item> <item>char</item> <item>exn</item> <item>float</item> <item>format4</item> <item>format6</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="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_binary</item> <item>Open_creat</item> <item>Open_excl</item> <item>Open_nonblock</item> <item>Open_rdonly</item> <item>Open_text</item> <item>Open_trunc</item> <item>Open_wronly</item> <item>Some</item> </list> <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> <list name="Standard Library Modules"> <item>Arg</item> <item>Array</item> <item>ArrayLabels</item> <item>Buffer</item> <item>Bytes</item> <item>Callback</item> <item>Char</item> <item>Complex</item> <item>Digest</item> <item>Ephemeron</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>Spacetime</item> <item>Stack</item> <item>StdLabels</item> <item>Stream</item> <item>String</item> <item>StringLabels</item> <item>Sys</item> <item>Uchar</item> <item>Weak</item> </list> <contexts> <context name="Code" lineEndContext="#stay" attribute="Operator"> <!-- ] 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" /> <!-- 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. --> <!-- (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.) --> <RegExpr String="#&IDENT;.*$" context="#stay" firstNonSpace="true" attribute="Directive"/> <!-- 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" /> <Detect2Chars char="<" char1="<" context="Camlp4 Quotation" attribute="Camlp4 Quotation" /> <RegExpr String="<:&IDENT;<" context="Camlp4 Quotation" attribute="Camlp4 Quotation" /> <!-- 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 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="Operator"> <DetectChar char="]" context="#pop" attribute="Operator" /> <IncludeRules context="Code" includeAttrib="true" /> </context> <context name="Nested Code 2" lineEndContext="#stay" attribute="Operator"> <DetectChar char="}" context="#pop" attribute="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="qtest header" lineEndContext="qtest" attribute="Operator"> <keyword String="qtest keywords" attribute="Keyword" /> <DetectChar char="&" context="qtest param" attribute="qtest param style" /> <RegExpr String="&LIDENT;" context="#stay" attribute="qtest header style"/> </context> <context name="qtest param" lineEndContext="qtest" attribute="qtest param style"> </context> <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 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> <!-- 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 name="Camlp4 Quotation" lineEndContext="#stay" attribute="Camlp4 Quotation"> <Detect2Chars char=">" char1=">" context="#pop" attribute="Camlp4 Quotation" /> <Detect2Chars char="<" char1="<" context="Camlp4 Quotation" attribute="Camlp4 Quotation" /> <RegExpr String="<:&IDENT;<" context="Camlp4 Quotation" attribute="Camlp4 Quotation" /> <RegExpr String="\\(\\|>>|<<)" context="#stay" attribute="Escaped Characters" /> <RegExpr String="\\<:&IDENT;<" 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=""" 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*(<[^>]*>|"[^"]*"|'[^']*')" context="#stay" attribute="Ocamldoc Markup" /> <RegExpr String="@(param|raise)\s*" context="Ocamldoc Identifier" attribute="Ocamldoc Markup" /> <RegExpr String="@(author|before|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="^[ 	]*-\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="Ocamldoc Link" /> <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="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="true" /> <comments> <comment name="multiLine" start="(*" end="*)" region ="comment" /> </comments> </general> </language>