File indexing completed on 2024-05-12 04:02:08

0001 <!DOCTYPE html>
0002 <html><head>
0003 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
0004 <title>highlight_ocaml.ml</title>
0005 <meta name="generator" content="KF5::SyntaxHighlighting - Definition (Objective Caml) - Theme (Breeze Dark)"/>
0006 </head><body style="background-color:#232629;color:#cfcfc2"><pre>
0007 <span style="color:#7a7c7d">(* ocaml test file -- a big stew of Objective Caml syntax to use to</span>
0008 <span style="color:#7a7c7d">   test Kate's syntax highlighting. This will not run! :-) *)</span>
0009 
0010 <span style="color:#7a7c7d">(* First a little piece of real OCaml that should look right: *)</span>
0011 
0012     <span style="color:#27ae60">#load "basic";;</span>
0013     <span style="color:#7a7c7d">(* Return a default value for a BASIC variable given its identifer. *)</span>
0014     <span style="font-weight:bold">let</span> default_value (ident : <span style="color:#2980b9">string</span>) : basic_value =
0015        <span style="font-weight:bold">assert</span> (<span style="color:#2980b9;font-style:italic">String</span>.length ident > <span style="color:#f67400">0</span>);
0016        <span style="font-weight:bold">match</span> ident.[<span style="color:#2980b9;font-style:italic">String</span>.length ident - <span style="color:#f67400">1</span>] <span style="font-weight:bold">with</span>
0017        | <span style="color:#3daee9">'$'</span> -> <span style="font-style:italic">Str</span> <span style="color:#f44f4f">""</span>
0018        | <span style="color:#3daee9">'%'</span> -> <span style="font-style:italic">Int</span> <span style="color:#f67400">0</span>
0019        | <span style="color:#3daee9">'!'</span> -> <span style="font-style:italic">Flt</span> <span style="color:#f67400">0.0</span>
0020        | _   -> <span style="font-style:italic">Flt</span> <span style="color:#f67400">0.0</span>
0021     ;;
0022 
0023 <span style="color:#7a7c7d">(* Directives: *)</span>
0024 <span style="color:#27ae60">#load "pa_o";;</span>
0025   <span style="color:#27ae60">#load "pa_o";;</span>
0026 <span style="font-weight:bold">object</span> # meth ;;  <span style="color:#7a7c7d">(* not a directive - a method call *)</span>
0027 <span style="font-weight:bold">object</span>
0028    # meth ;;  <span style="color:#7a7c7d">(* not a directive - a method call *)</span>
0029 
0030 <span style="color:#7a7c7d">(* OCaml keywords: *)</span>
0031 <span style="font-weight:bold">and</span> <span style="font-weight:bold">as</span> <span style="font-weight:bold">assert</span> <span style="font-weight:bold">asr</span> <span style="color:#7a7c7d">(* etc. there so many... *)</span>
0032 
0033 <span style="color:#7a7c7d">(* Additional OCaml Revised Syntax keywords: *)</span>
0034 <span style="color:#7a7c7d">(* These are in a seperate category so they can be coloured to look</span>
0035 <span style="color:#7a7c7d">   like identifiers when ordinary OCaml syntax is being used: *)</span>
0036 declare where value
0037 
0038 <span style="color:#7a7c7d">(* There's no way to reliably highlight all OCaml type expressions,</span>
0039 <span style="color:#7a7c7d">   (they can be very complex) so just the built-in type names are highlighted.*)</span>
0040 <span style="color:#2980b9">exn</span> <span style="color:#2980b9">lazy_t</span> format <span style="color:#2980b9">unit</span> <span style="color:#2980b9">int</span> <span style="color:#2980b9">real</span> <span style="color:#2980b9">char</span> <span style="color:#2980b9">string</span> <span style="color:#2980b9">ref</span> <span style="color:#2980b9">array</span> <span style="color:#2980b9">bool</span> <span style="color:#2980b9">list</span> <span style="color:#2980b9">option</span>
0041 
0042 
0043 <span style="font-weight:bold">let</span> integers : <span style="color:#2980b9">int</span> <span style="color:#2980b9">list</span> = [
0044     <span style="color:#f67400">123456789</span>;              <span style="color:#7a7c7d">(* decimal *)</span>
0045     <span style="color:#f67400">-0xabcedf0123456789</span>;    <span style="color:#7a7c7d">(* hexadecimal *)</span>
0046     <span style="color:#f67400">0xABCDEF0123456789</span>;     <span style="color:#7a7c7d">(* hexadecimal *)</span>
0047     <span style="color:#f67400">-0o1234567</span>;             <span style="color:#7a7c7d">(* octal *)</span>
0048     <span style="color:#f67400">0b01001010101010</span>;       <span style="color:#7a7c7d">(* binary *)</span>
0049     <span style="color:#f67400">-0Xabcedf0123456789</span>;    <span style="color:#7a7c7d">(* hexadecimal *)</span>
0050     <span style="color:#f67400">0XABCDEF0123456789</span>;     <span style="color:#7a7c7d">(* hexadecimal *)</span>
0051     <span style="color:#f67400">-0O1234567</span>;             <span style="color:#7a7c7d">(* octal *)</span>
0052     <span style="color:#f67400">0B01001010101010</span>;       <span style="color:#7a7c7d">(* binary *)</span>
0053     <span style="color:#f67400">-123_456_789</span>;           <span style="color:#7a7c7d">(* Underscores are allowed in numeric constants. *)</span>
0054     <span style="color:#f67400">0x_abce_df01_2345_6789</span>;
0055     <span style="color:#f67400">-0o12_34_567</span>;
0056     <span style="color:#f67400">0b_0100_1010_1010_1101</span>;
0057 ];;
0058 
0059 <span style="font-weight:bold">let</span> floats : <span style="color:#2980b9">real</span> <span style="color:#2980b9">list</span> = [
0060     <span style="color:#f67400">12345.6789</span>;
0061     <span style="color:#f67400">-1.23456789e4</span>;      <span style="color:#7a7c7d">(* All variations of the exponent form *)</span>
0062     <span style="color:#f67400">1.23456789e+4</span>;
0063     <span style="color:#f67400">-1.23456789e-4</span>;
0064     <span style="color:#f67400">1.23456789E-4</span>;
0065     <span style="color:#f67400">-1.23456789E+4</span>;
0066     <span style="color:#f67400">12_345.6789</span>;       <span style="color:#7a7c7d">(* Underscores are allowed in numeric constants. *)</span>
0067     <span style="color:#f67400">-1.23_456_789e+4</span>;
0068     <span style="color:#f67400">12_345.6789</span>;
0069 ];;
0070 
0071 <span style="font-weight:bold">let</span> characters : <span style="color:#2980b9">char</span> <span style="color:#2980b9">list</span> = [
0072     <span style="color:#3daee9">'a'</span>;
0073     <span style="color:#3daee9">' '</span>;
0074     <span style="color:#3daee9">'�'</span>;
0075     <span style="color:#3daee9">'\n'</span>; <span style="color:#3daee9">'\r'</span>; <span style="color:#3daee9">'\t'</span>; <span style="color:#3daee9">'\b'</span>;    <span style="color:#7a7c7d">(* Control characters. Only these four: not the full C-language range. *)</span>
0076     <span style="color:#3daee9">'\000'</span>; <span style="color:#3daee9">'\128'</span>;            <span style="color:#7a7c7d">(* Decimal character codes. These are always 3 digits. *)</span>
0077     <span style="color:#3daee9">'\x02'</span>; <span style="color:#3daee9">'\xff'</span>; <span style="color:#3daee9">'\xFF'</span>;    <span style="color:#7a7c7d">(* Hexadecimal character codes. These are always 3 digits. *)</span>
0078     <span style="color:#3daee9">'\\'</span>; <span style="color:#3daee9">'\''</span>; <span style="color:#3daee9">'\"'</span>; <span style="color:#3daee9">'"'</span>      <span style="color:#7a7c7d">(* Quote character escapes. *)</span>
0079 ];;
0080 
0081 <span style="color:#7a7c7d">(* Quotes used to mark constants in parsers should</span>
0082 <span style="color:#7a7c7d">   not be confused with character constant quotes.</span>
0083 <span style="color:#7a7c7d">   </span><span style="color:#7a7c7d;font-weight:bold">"Ticks"</span><span style="color:#7a7c7d"> at the end of identifiers should</span>
0084 <span style="color:#7a7c7d">   not be confused with character constant quotes.  *)</span>
0085 <span style="font-weight:bold">let</span> basic_identifier =
0086   <span style="font-weight:bold">parser</span>
0087       [&lt; '<span style="color:#3daee9">'F'</span>; '<span style="color:#3daee9">'N'</span>; name = s >] -> <span style="font-style:italic">ID</span> (s, <span style="color:#3daee9">'f'</span>)
0088     | [&lt; name = s' >] -> <span style="font-style:italic">ID</span> (s',<span style="color:#3daee9">'i'</span>)
0089 ;;
0090 
0091 <span style="font-weight:bold">let</span> strings : <span style="color:#2980b9">string</span> <span style="color:#2980b9">list</span> = [
0092     <span style="color:#f44f4f">""</span>; <span style="color:#7a7c7d">(* Empty string *)</span>
0093     <span style="color:#f44f4f">"a"</span>; <span style="color:#f44f4f">" "</span>;  <span style="color:#f44f4f">"�"</span>;   <span style="color:#f44f4f">"ab"</span>;
0094     <span style="color:#f44f4f">"A</span><span style="color:#3daee9">\n</span><span style="color:#f44f4f">B"</span>; <span style="color:#f44f4f">"A</span><span style="color:#3daee9">\r</span><span style="color:#f44f4f">B"</span>; <span style="color:#f44f4f">"A</span><span style="color:#3daee9">\t</span><span style="color:#f44f4f">B"</span>; <span style="color:#f44f4f">"A</span><span style="color:#3daee9">\b</span><span style="color:#f44f4f">B"</span>;  <span style="color:#7a7c7d">(* Control characters. Only these four: not the full C-language range. *)</span>
0095     <span style="color:#f44f4f">"A</span><span style="color:#3daee9">\000</span><span style="color:#f44f4f">B"</span>; <span style="color:#f44f4f">"A</span><span style="color:#3daee9">\128</span><span style="color:#f44f4f">B"</span>;              <span style="color:#7a7c7d">(* Decimal character codes. These are always 3 digits. *)</span>
0096     <span style="color:#f44f4f">"A</span><span style="color:#3daee9">\x02</span><span style="color:#f44f4f">B"</span>; <span style="color:#f44f4f">"A</span><span style="color:#3daee9">\xff</span><span style="color:#f44f4f">B"</span>; <span style="color:#f44f4f">"A</span><span style="color:#3daee9">\xFF</span><span style="color:#f44f4f">B"</span>;    <span style="color:#7a7c7d">(* Hexadecimal character codes. These are always 3 digits. *)</span>
0097     <span style="color:#f44f4f">"A</span><span style="color:#3daee9">\\</span><span style="color:#f44f4f">B"</span>; <span style="color:#f44f4f">"A</span><span style="color:#3daee9">\'</span><span style="color:#f44f4f">B"</span>; <span style="color:#f44f4f">"A'B"</span>;  <span style="color:#f44f4f">"A</span><span style="color:#3daee9">\"</span><span style="color:#f44f4f">B"</span>;  <span style="color:#7a7c7d">(* Quote character escapes. *)</span>
0098     <span style="color:#f44f4f">"A multiline</span><span style="color:#3daee9">\</span>
0099 <span style="color:#f44f4f">    string"</span>;
0100 ];
0101 
0102 <span style="font-weight:bold">let</span> camlp4_quotations = [
0103     <span style="color:#f44f4f">&lt;&lt;A Camlp4 source code quotation.>></span> ;
0104     <span style="color:#f44f4f">&lt;:QUOTE&lt;A labelled Camlp4 source code quotation.>></span> ;
0105     &lt;:<span style="font-style:italic">QU</span>�<span style="font-style:italic">T</span>�&lt;<span style="font-style:italic">A</span> labelled <span style="font-style:italic">Camlp4</span> source code quotation. (<span style="font-style:italic">Latin</span><span style="color:#f67400">-1</span> identifier.)>> ;
0106     <span style="color:#f44f4f">&lt;&lt; A quote with an escape: </span><span style="color:#3daee9">\>></span><span style="color:#f44f4f"> (end-quote symbol) >></span> ;
0107     <span style="color:#f44f4f">&lt;&lt; A quote with an escape: </span><span style="color:#3daee9">\&lt;&lt;</span><span style="color:#f44f4f"> (plain start quote-symbol) >></span> ;
0108     <span style="color:#f44f4f">&lt;&lt; A quote with an escape: \&lt;:Trouv�&lt; (labelled start-quote symbol) >></span> ;
0109 ];;
0110 
0111 <span style="color:#7a7c7d">(* end *)</span>
0112 </pre></body></html>