Since I couldn't find a ready-made syntax highlighting definition to edit OCaml code in BBEdit, I pieced together one from information and examples I found around. So, for the record, here is an OCaml Codeless Language Module that does the job:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>BBEditDocumentType</key> <string>CodelessLanguageModule</string> <key>BBLMColorsSyntax</key> <true/> <key>BBLMIsCaseSensitive</key> <true/> <key>BBLMKeywordList</key> <array> <string>and</string> <string>as</string> <string>assert</string> <string>asr</string> <string>begin</string> <string>class</string> <string>constraint</string> <string>do</string> <string>done</string> <string>downto</string> <string>else</string> <string>end</string> <string>exception</string> <string>external</string> <string>false</string> <string>for</string> <string>fun</string> <string>function</string> <string>functor</string> <string>if</string> <string>in</string> <string>include</string> <string>inherit</string> <string>initializer</string> <string>land</string> <string>lazy</string> <string>let</string> <string>lor</string> <string>lsl</string> <string>lsr</string> <string>lxor</string> <string>match</string> <string>method</string> <string>mod</string> <string>module</string> <string>mutable</string> <string>new</string> <string>object</string> <string>of</string> <string>open</string> <string>or</string> <string>parser</string> <string>private</string> <string>rec</string> <string>sig</string> <string>struct</string> <string>then</string> <string>to</string> <string>true</string> <string>try</string> <string>type</string> <string>val</string> <string>virtual</string> <string>when</string> <string>while</string> <string>with</string> </array> <key>BBLMLanguageCode</key> <string>Caml</string> <key>BBLMLanguageDisplayName</key> <string>Objective Caml</string> <key>BBLMScansFunctions</key> <true/> <key>BBLMSuffixMap</key> <array> <dict> <key>BBLMLanguageSuffix</key> <string>.ml</string> </dict> <dict> <key>BBLMLanguageSuffix</key> <string>.mli</string> </dict> </array> <key>Language Features</key> <dict> <key>Comment Pattern</key> <string><![CDATA[(?x: (?> \(\* (?s: .*? ) (?> \*\) | \z ) ) )]]></string> <key>Function Pattern</key> <string><![CDATA[(?x: ^[ \t]* (?P<function> \b(?: let | and )\b [ \t]+ (?: \brec\b [ \t]+ )? (?P<function_name> [A-Za-z]['0-9A-Za-z_]* | \([^)]+\) ) (?:[ \t]+ [^ \t=]+)+ [ \t]* = ) )]]></string> <key>String Pattern</key> <string><![CDATA[(?x: (?> (?<!') " (?: [^"\\] | (?P<escape> \\ (?: ['"ntbr\\] | \d{3} | x[0-9A-Fa-f]{2} ) ) )* (?> " | \z ) ) | (?> ' (?: [^'\\] | (?P>escape) ) ' ) )]]></string> <key>Identifier and Keyword Character Class</key> <string>\w</string> <key>Skip Pattern</key> <string><![CDATA[(?x: (?> \(\* (?s: .*? ) (?> \*\) | \z ) ) | (?> (?<!') " (?: [^"\\] | \\ (?: ['"ntbr\\] | \d{3} | x[0-9A-Fa-f]{2} ) )* " ) )]]></string> </dict> </dict> </plist>
The function pattern could use some work, and the comments pattern doesn't recognize nested comments, but it's a start. I hope you will find it useful.
1 comment:
Matias,
Was trying to figure out how to do the Skip Pattern
section of a codeless language module: I've got a line of HTML l I'd like to skip, so any help would be appreciated on how to configure...
Respond at my ppearson@technn.com address...
Cordially,
Phil Pearson
Publisher, MacSurfer and TechNN
www.macsurfer.com
www.technn.com
ppearson@technn.com
Post a Comment