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

0001 <?xml version="1.0" encoding="UTF-8"?>
0002 <!-- Kate syntax highlighting for F# based on the OCAML syntax by Glyn Webster (glyn@wave.co.nz). -->
0003 <!DOCTYPE language
0004 [
0005 <!-- Regular expresion constants: -->
0006 <!ENTITY LETTER "A-Za-z\300-\326\330-\366\370-\377">                <!-- Latin-1 letters. -->
0007 <!ENTITY IDENT  "[&LETTER;_][&LETTER;0-9_']*">                      <!-- OCaml identifiers. -->
0008 <!ENTITY MIDENT "[A-Z][&LETTER;0-9_']*">                            <!-- OCaml uppercase identifiers. -->
0009 <!ENTITY ESC    "(\\[ntbr'&quot;\\]|\\[0-9]{3}|\\x[0-9A-Fa-f]{2})"> <!-- OCaml character code escapes. -->
0010 <!ENTITY DEC    "[0-9][0-9_]*">                                     <!-- Decimal digits with underscores. -->
0011 ]>
0012 <language name="FSharp" version="10" kateversion="5.0" section="Sources" extensions="*.fs;*.fsi;*.fsx" mimetype="" priority="10" author="Bas Bossink (bas.bossink@gmail.com)" license="LGPL">
0013 
0014   <highlighting>
0015     <list name="keywords">
0016       <item>abstract</item>
0017       <item>and</item>
0018       <item>as</item>
0019       <item>assert</item>
0020       <item>base</item>
0021 <!--       <item>begin</item> -->
0022       <item>class</item>
0023       <item>delegate</item>
0024 <!--       <item>do</item> -->
0025 <!--       <item>done</item> -->
0026       <item>dowcast</item>
0027       <item>downto</item>
0028       <item>elif</item>
0029       <item>else</item>
0030 <!--       <item>end</item> -->
0031       <item>exception</item>
0032       <item>extern</item>
0033       <item>false</item>
0034       <item>for</item>
0035       <item>fun</item>
0036       <item>function</item>
0037       <item>functor</item>
0038       <item>global</item>
0039       <item>if</item>
0040       <item>in</item>
0041 <!--       <item>include</item> -->
0042       <item>inherit</item>
0043       <item>inline</item>
0044       <item>interfaece</item>
0045       <item>internal</item>
0046       <item>lazy</item>
0047       <item>let</item>
0048       <item>match</item>
0049       <item>member</item>
0050 <!--       <item>module</item> -->
0051       <item>mutable</item>
0052       <item>namespace</item>
0053       <item>new</item>
0054       <item>not</item>
0055       <item>null</item>
0056 <!--       <item>object</item> -->
0057       <item>of</item>
0058 <!--       <item>open</item> -->
0059       <item>or</item>
0060       <item>override</item>
0061       <item>private</item>
0062       <item>public</item>
0063       <item>rec</item>
0064       <item>ref</item>
0065       <item>return</item>
0066 <!--       <item>sig</item> -->
0067       <item>static</item>
0068 <!--       <item>struct</item> -->
0069       <item>then</item>
0070       <item>to</item>
0071       <item>true</item>
0072       <item>try</item>
0073       <item>type</item>
0074       <item>upcast</item>
0075       <item>use</item>
0076       <item>val</item>
0077       <item>void</item>
0078       <item>when</item>
0079       <item>while</item>
0080       <item>with</item>
0081       <item>yield</item>
0082     </list>
0083     <list name="core types">
0084       <item>bool</item>
0085       <item>byte</item>
0086       <item>sbyte</item>
0087       <item>int16</item>
0088       <item>uint16</item>
0089       <item>int</item>
0090       <item>uint32</item>
0091       <item>int64</item>
0092       <item>uint64</item>
0093       <item>nativeint</item>
0094       <item>unativeint</item>
0095       <item>char</item>
0096       <item>string</item>
0097       <item>decimal</item>
0098       <item>unit</item>
0099       <item>void</item>
0100       <item>float32</item>
0101       <item>single</item>
0102       <item>float</item>
0103       <item>double</item>
0104       <item>bigint</item>
0105       <item>option</item>
0106       <item>seq</item>
0107     </list>
0108     <list name="end">
0109       <item>end</item>
0110     </list>
0111     <list name="sig">
0112       <item>sig</item>
0113     </list>
0114     <list name="struct">
0115       <item>struct</item>
0116     </list>
0117     <list name="object">
0118       <item>object</item>
0119     </list>
0120     <list name="begin">
0121       <item>begin</item>
0122     </list>
0123     <list name="do">
0124       <item>do</item>
0125     </list>
0126     <list name="done">
0127       <item>done</item>
0128     </list>
0129     <list name="module_environment">
0130       <item>module</item>
0131       <item>open</item>
0132     </list>
0133     <contexts>
0134 
0135       <context attribute="Normal Text" lineEndContext="#stay" name="Normal">
0136 
0137         <Detect2Chars attribute="Comment" context="Multiline Comment" char="(" char1="*" beginRegion="comment" />
0138         <Detect2Chars context="Singleline Comment" char="/" char1="/" />
0139 
0140         <DetectChar attribute="Symbol" context="#stay" char="(" beginRegion="paren"/>
0141         <DetectChar attribute="Symbol" context="#stay" char=")" endRegion="paren"/>
0142 
0143         <DetectChar attribute="Symbol" context="#stay" char="{" beginRegion="record"/>
0144         <DetectChar attribute="Symbol" context="#stay" char="}" endRegion="record"/>
0145         <Detect2Chars attribute="Symbol" context="#stay" char="[" char1="&lt;" beginRegion="attribute"/>
0146         <Detect2Chars attribute="Symbol" context="#stay" char="&gt;" char1="]" endRegion="attribute"/>
0147 
0148         <Detect2Chars attribute="Symbol" context="#stay" char="[" char1="|" beginRegion="array"/>
0149         <Detect2Chars attribute="Symbol" context="#stay" char="|" char1="]" endRegion="array"/>
0150         <DetectChar attribute="Symbol" context="#stay" char="[" beginRegion="list"/>
0151         <DetectChar attribute="Symbol" context="#stay" char="]" endRegion="list"/>
0152 
0153         <keyword attribute="Keyword" context="#stay" String="do" beginRegion="loop"/>
0154         <keyword attribute="Keyword" context="#stay" String="done" endRegion="loop"/>
0155         <keyword attribute="Directive" context="ModuleEnv" String="module_environment"/>
0156         <keyword attribute="Region Marker" context="Block" String="begin" beginRegion="block"/>
0157         <keyword attribute="Region Marker" context="Object" String="object" beginRegion="object"/>
0158         <keyword attribute="Region Marker" context="Sig" String="sig" beginRegion="sig"/>
0159         <keyword attribute="Region Marker" context="Struct" String="struct" beginRegion="struct"/>
0160 
0161         <RegExpr attribute="Constructor" context="#stay" String="`\s*&IDENT;"/>
0162         <RegExpr attribute="Module" lookAhead="true" context="ModuleEnv2" String="&MIDENT;\s*\."/>
0163         <RegExpr attribute="Constructor" context="#stay" String="&MIDENT;"/>
0164 
0165         <!-- Interpreter directives. -->
0166         <!-- (These are lines where the first symbol is a '#' followed by an identifier. -->
0167         <!-- Such lines could also be part of a method call split over two lines but     -->
0168         <!-- it's unlikey anyone would code like that.)                                  -->
0169         <RegExpr attribute="Directive" context="#stay" String="#&IDENT;.*$" firstNonSpace="true"/>
0170 
0171         <!-- String, character and Camlp4 "quotation" constants.              -->
0172         <!-- Note: If you must modify the pattern for characters be precise:  -->
0173         <!-- single quotes have several meanings in Ocaml.                    -->
0174         <DetectChar attribute="String" context="String Constant" char="&quot;" />
0175         <RegExpr attribute="Character" context="#stay" String="'(&ESC;|[^'])'" />
0176         <Detect2Chars attribute="Camlp4 Quotation" context="Camlp4 Quotation Constant" char="&lt;" char1="&lt;" />
0177         <RegExpr attribute="Camlp4 Quotation" context="Camlp4 Quotation Constant" String="&lt;:&IDENT;&lt;" />
0178 
0179         <!-- Identifiers and keywords. -->
0180         <keyword attribute="Keyword" context="#stay" String="keywords" />
0181         <keyword attribute="Core Data Type" context="#stay" String="core types" />
0182         <RegExpr attribute="Identifier" context="#stay" String="&IDENT;" />
0183 
0184         <!-- Numeric constants. -->
0185         <!-- Note that they may contain underscores. -->
0186         <RegExpr attribute="Hexadecimal" context="#stay" String="-?0[xX][0-9A-Fa-f_]+" />
0187         <RegExpr attribute="Octal" context="#stay" String="-?0[oO][0-7_]+" />
0188         <RegExpr attribute="Binary" context="#stay" String="-?0[bB][01_]+" />
0189         <RegExpr attribute="Float" context="#stay" String="-?&DEC;((\.(&DEC;)?([eE][-+]?&DEC;)?)|([eE][-+]?&DEC;))" />
0190         <RegExpr attribute="Decimal" context="#stay" String="-?&DEC;" />
0191       </context>
0192 
0193       <context attribute="Comment" lineEndContext="#pop" name="Singleline Comment">
0194         <DetectSpaces />
0195         <IncludeRules context="##Comments" />
0196       </context>
0197       <context attribute="Comment" lineEndContext="#stay" name="Multiline Comment">
0198         <!-- Support for nested comments -->
0199         <Detect2Chars attribute="Comment" context="#pop" char="*" char1=")" endRegion="comment" />
0200         <Detect2Chars attribute="Comment" context="Multiline Comment" char="(" char1="*" beginRegion="comment" />
0201         <DetectSpaces />
0202         <IncludeRules context="##Comments" />
0203       </context>
0204 
0205       <context attribute="String" lineEndContext="#stay" name="String Constant">
0206         <DetectChar attribute="String" context="#pop" char="&quot;" />
0207         <!-- An underscore at the end of a line in a string indicates  -->
0208         <!-- that the string will continue on the next line.           -->
0209         <RegExpr attribute="Escaped characters" context="#stay" String="&ESC;|\\$" />
0210       </context>
0211 
0212       <context attribute="Normal Text" lineEndContext="#stay" name="Block">
0213         <keyword attribute="Region Marker" context="#pop" String="end" endRegion="block"/>
0214         <IncludeRules context="Normal"/>
0215       </context>
0216 
0217       <context attribute="Normal Text" lineEndContext="#stay" name="Sig">
0218         <keyword attribute="Region Marker" context="#pop" String="end" endRegion="sig"/>
0219         <IncludeRules context="Normal"/>
0220       </context>
0221 
0222       <context attribute="Normal Text" lineEndContext="#stay" name="Struct">
0223         <keyword attribute="Region Marker" context="#pop" String="end" endRegion="struct"/>
0224         <IncludeRules context="Normal"/>
0225       </context>
0226 
0227       <context attribute="Normal Text" lineEndContext="#stay" name="Object">
0228         <keyword attribute="Region Marker" context="#pop" String="end" endRegion="object"/>
0229         <IncludeRules context="Normal"/>
0230       </context>
0231 
0232       <context attribute="Normal Text" lineEndContext="#stay" name="ModuleEnv" fallthrough="true" fallthroughContext="#pop">
0233         <DetectSpaces attribute="Normal Text" context="#stay"/>
0234         <RegExpr attribute="Module" lookAhead="true" context="ModuleEnv2" String="&MIDENT;\s*\."/>
0235         <RegExpr attribute="Module" context="#pop" String="&MIDENT;"/>
0236       </context>
0237 
0238       <context attribute="Normal Text" lineEndContext="#stay" name="ModuleEnv2">
0239         <RegExpr attribute="Module" context="#stay" String="&MIDENT;"/>
0240         <DetectSpaces attribute="Normal Text" context="#stay"/>
0241         <DetectChar attribute="Keyword" context="#pop" char="."/>
0242       </context>
0243 
0244       <!-- Camlp4 Quotations. These are source code literals used by the Campl4 preprocessor.           -->
0245       <!-- The only escapes allowed in a Camlp4 quotation are for the quotation start and stop symbols. -->
0246       <context attribute="Camlp4 Quotation" lineEndContext="#stay" name="Camlp4 Quotation Constant">
0247         <Detect2Chars attribute="Camlp4 Quotation" context="#pop" char="&gt;" char1="&gt;" />
0248         <Detect2Chars attribute="Camlp4 Quotation" context="Camlp4 Quotation Constant" char="&lt;" char1="&lt;" />
0249         <RegExpr attribute="Camlp4 Quotation" context="Camlp4 Quotation Constant" String="&lt;:&IDENT;&lt;" />
0250         <RegExpr attribute="Escaped characters" context="#stay" String="\\(\\|&gt;&gt;|&lt;&lt;|&lt;:&IDENT;&lt;)" />
0251       </context>
0252     </contexts>
0253 
0254     <itemDatas>
0255       <itemData name="Normal Text" defStyleNum="dsNormal"/>
0256       <itemData name="Identifier" defStyleNum="dsNormal"/>
0257       <itemData name="Symbol" defStyleNum="dsOperator"/>
0258       <itemData name="Keyword"  defStyleNum="dsKeyword"/>
0259       <itemData name="Core Data Type"  defStyleNum="dsDataType"/>
0260       <itemData name="Decimal"  defStyleNum="dsDecVal"/>
0261       <itemData name="Hexadecimal"  defStyleNum="dsBaseN"/>
0262       <itemData name="Octal"  defStyleNum="dsBaseN"/>
0263       <itemData name="Binary"  defStyleNum="dsBaseN"/>
0264       <itemData name="Float"  defStyleNum="dsFloat"/>
0265       <itemData name="Character"  defStyleNum="dsChar"/>
0266       <itemData name="String"  defStyleNum="dsString"/>
0267       <itemData name="Escaped characters"  defStyleNum="dsSpecialChar"/>
0268       <itemData name="Comment"  defStyleNum="dsComment"/>
0269       <itemData name="Camlp4 Quotation"  defStyleNum="dsString"/>
0270       <itemData name="Directive"  defStyleNum="dsOthers"/>
0271       <itemData name="Constructor" defStyleNum="dsNormal"/>
0272       <itemData name="Module" defStyleNum="dsNormal"/>
0273       <itemData name="Region Marker" defStyleNum="dsKeyword"/>
0274     </itemDatas>
0275   </highlighting>
0276 
0277   <general>
0278     <keywords casesensitive="1" />
0279     <comments>
0280       <comment name="singleLine" start="//" />
0281       <comment name="multiLine" start="(*" end="*)" region="comment" />
0282     </comments>
0283   </general>
0284 </language>
0285 <!-- kate: space-indent on; indent-width 2; replace-tabs on; -->