/usr/share/vim/vim74/syntax/sml.vim is in vim-runtime 2:7.4.052-1ubuntu3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 | " Vim syntax file
" Language: SML
" Filenames: *.sml *.sig
" Maintainers: Markus Mottl <markus.mottl@gmail.com>
" Fabrizio Zeno Cornelli <zeno@filibusta.crema.unimi.it>
" URL: http://www.ocaml.info/vim/syntax/sml.vim
" Last Change: 2006 Oct 23 - Fixed character highlighting bug (MM)
" 2002 Jun 02 - Fixed small typo (MM)
" 2001 Nov 20 - Fixed small highlighting bug with modules (MM)
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
" SML is case sensitive.
syn case match
" lowercase identifier - the standard way to match
syn match smlLCIdentifier /\<\(\l\|_\)\(\w\|'\)*\>/
syn match smlKeyChar "|"
" Errors
syn match smlBraceErr "}"
syn match smlBrackErr "\]"
syn match smlParenErr ")"
syn match smlCommentErr "\*)"
syn match smlThenErr "\<then\>"
" Error-highlighting of "end" without synchronization:
" as keyword or as error (default)
if exists("sml_noend_error")
syn match smlKeyword "\<end\>"
else
syn match smlEndErr "\<end\>"
endif
" Some convenient clusters
syn cluster smlAllErrs contains=smlBraceErr,smlBrackErr,smlParenErr,smlCommentErr,smlEndErr,smlThenErr
syn cluster smlAENoParen contains=smlBraceErr,smlBrackErr,smlCommentErr,smlEndErr,smlThenErr
syn cluster smlContained contains=smlTodo,smlPreDef,smlModParam,smlModParam1,smlPreMPRestr,smlMPRestr,smlMPRestr1,smlMPRestr2,smlMPRestr3,smlModRHS,smlFuncWith,smlFuncStruct,smlModTypeRestr,smlModTRWith,smlWith,smlWithRest,smlModType,smlFullMod
" Enclosing delimiters
syn region smlEncl transparent matchgroup=smlKeyword start="(" matchgroup=smlKeyword end=")" contains=ALLBUT,@smlContained,smlParenErr
syn region smlEncl transparent matchgroup=smlKeyword start="{" matchgroup=smlKeyword end="}" contains=ALLBUT,@smlContained,smlBraceErr
syn region smlEncl transparent matchgroup=smlKeyword start="\[" matchgroup=smlKeyword end="\]" contains=ALLBUT,@smlContained,smlBrackErr
syn region smlEncl transparent matchgroup=smlKeyword start="#\[" matchgroup=smlKeyword end="\]" contains=ALLBUT,@smlContained,smlBrackErr
" Comments
syn region smlComment start="(\*" end="\*)" contains=smlComment,smlTodo
syn keyword smlTodo contained TODO FIXME XXX
" let
syn region smlEnd matchgroup=smlKeyword start="\<let\>" matchgroup=smlKeyword end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr
" local
syn region smlEnd matchgroup=smlKeyword start="\<local\>" matchgroup=smlKeyword end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr
" abstype
syn region smlNone matchgroup=smlKeyword start="\<abstype\>" matchgroup=smlKeyword end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr
" begin
syn region smlEnd matchgroup=smlKeyword start="\<begin\>" matchgroup=smlKeyword end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr
" if
syn region smlNone matchgroup=smlKeyword start="\<if\>" matchgroup=smlKeyword end="\<then\>" contains=ALLBUT,@smlContained,smlThenErr
"" Modules
" "struct"
syn region smlStruct matchgroup=smlModule start="\<struct\>" matchgroup=smlModule end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr
" "sig"
syn region smlSig matchgroup=smlModule start="\<sig\>" matchgroup=smlModule end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr,smlModule
syn region smlModSpec matchgroup=smlKeyword start="\<structure\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\>" contained contains=@smlAllErrs,smlComment skipwhite skipempty nextgroup=smlModTRWith,smlMPRestr
" "open"
syn region smlNone matchgroup=smlKeyword start="\<open\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*\>" contains=@smlAllErrs,smlComment
" "structure" - somewhat complicated stuff ;-)
syn region smlModule matchgroup=smlKeyword start="\<\(structure\|functor\)\>" matchgroup=smlModule end="\<\u\(\w\|'\)*\>" contains=@smlAllErrs,smlComment skipwhite skipempty nextgroup=smlPreDef
syn region smlPreDef start="."me=e-1 matchgroup=smlKeyword end="\l\|="me=e-1 contained contains=@smlAllErrs,smlComment,smlModParam,smlModTypeRestr,smlModTRWith nextgroup=smlModPreRHS
syn region smlModParam start="([^*]" end=")" contained contains=@smlAENoParen,smlModParam1
syn match smlModParam1 "\<\u\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=smlPreMPRestr
syn region smlPreMPRestr start="."me=e-1 end=")"me=e-1 contained contains=@smlAllErrs,smlComment,smlMPRestr,smlModTypeRestr
syn region smlMPRestr start=":" end="."me=e-1 contained contains=@smlComment skipwhite skipempty nextgroup=smlMPRestr1,smlMPRestr2,smlMPRestr3
syn region smlMPRestr1 matchgroup=smlModule start="\ssig\s\=" matchgroup=smlModule end="\<end\>" contained contains=ALLBUT,@smlContained,smlEndErr,smlModule
syn region smlMPRestr2 start="\sfunctor\(\s\|(\)\="me=e-1 matchgroup=smlKeyword end="->" contained contains=@smlAllErrs,smlComment,smlModParam skipwhite skipempty nextgroup=smlFuncWith
syn match smlMPRestr3 "\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*" contained
syn match smlModPreRHS "=" contained skipwhite skipempty nextgroup=smlModParam,smlFullMod
syn region smlModRHS start="." end=".\w\|([^*]"me=e-2 contained contains=smlComment skipwhite skipempty nextgroup=smlModParam,smlFullMod
syn match smlFullMod "\<\u\(\w\|'\)*\(\.\u\(\w\|'\)*\)*" contained skipwhite skipempty nextgroup=smlFuncWith
syn region smlFuncWith start="([^*]"me=e-1 end=")" contained contains=smlComment,smlWith,smlFuncStruct
syn region smlFuncStruct matchgroup=smlModule start="[^a-zA-Z]struct\>"hs=s+1 matchgroup=smlModule end="\<end\>" contains=ALLBUT,@smlContained,smlEndErr
syn match smlModTypeRestr "\<\w\(\w\|'\)*\(\.\w\(\w\|'\)*\)*\>" contained
syn region smlModTRWith start=":\s*("hs=s+1 end=")" contained contains=@smlAENoParen,smlWith
syn match smlWith "\<\(\u\(\w\|'\)*\.\)*\w\(\w\|'\)*\>" contained skipwhite skipempty nextgroup=smlWithRest
syn region smlWithRest start="[^)]" end=")"me=e-1 contained contains=ALLBUT,@smlContained
" "signature"
syn region smlKeyword start="\<signature\>" matchgroup=smlModule end="\<\w\(\w\|'\)*\>" contains=smlComment skipwhite skipempty nextgroup=smlMTDef
syn match smlMTDef "=\s*\w\(\w\|'\)*\>"hs=s+1,me=s
syn keyword smlKeyword and andalso case
syn keyword smlKeyword datatype else eqtype
syn keyword smlKeyword exception fn fun handle
syn keyword smlKeyword in infix infixl infixr
syn keyword smlKeyword match nonfix of orelse
syn keyword smlKeyword raise handle type
syn keyword smlKeyword val where while with withtype
syn keyword smlType bool char exn int list option
syn keyword smlType real string unit
syn keyword smlOperator div mod not or quot rem
syn keyword smlBoolean true false
syn match smlConstructor "(\s*)"
syn match smlConstructor "\[\s*\]"
syn match smlConstructor "#\[\s*\]"
syn match smlConstructor "\u\(\w\|'\)*\>"
" Module prefix
syn match smlModPath "\u\(\w\|'\)*\."he=e-1
syn match smlCharacter +#"\\""\|#"."\|#"\\\d\d\d"+
syn match smlCharErr +#"\\\d\d"\|#"\\\d"+
syn region smlString start=+"+ skip=+\\\\\|\\"+ end=+"+
syn match smlFunDef "=>"
syn match smlRefAssign ":="
syn match smlTopStop ";;"
syn match smlOperator "\^"
syn match smlOperator "::"
syn match smlAnyVar "\<_\>"
syn match smlKeyChar "!"
syn match smlKeyChar ";"
syn match smlKeyChar "\*"
syn match smlKeyChar "="
syn match smlNumber "\<-\=\d\+\>"
syn match smlNumber "\<-\=0[x|X]\x\+\>"
syn match smlReal "\<-\=\d\+\.\d*\([eE][-+]\=\d\+\)\=[fl]\=\>"
" Synchronization
syn sync minlines=20
syn sync maxlines=500
syn sync match smlEndSync grouphere smlEnd "\<begin\>"
syn sync match smlEndSync groupthere smlEnd "\<end\>"
syn sync match smlStructSync grouphere smlStruct "\<struct\>"
syn sync match smlStructSync groupthere smlStruct "\<end\>"
syn sync match smlSigSync grouphere smlSig "\<sig\>"
syn sync match smlSigSync groupthere smlSig "\<end\>"
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet
if version >= 508 || !exists("did_sml_syntax_inits")
if version < 508
let did_sml_syntax_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink smlBraceErr Error
HiLink smlBrackErr Error
HiLink smlParenErr Error
HiLink smlCommentErr Error
HiLink smlEndErr Error
HiLink smlThenErr Error
HiLink smlCharErr Error
HiLink smlComment Comment
HiLink smlModPath Include
HiLink smlModule Include
HiLink smlModParam1 Include
HiLink smlModType Include
HiLink smlMPRestr3 Include
HiLink smlFullMod Include
HiLink smlModTypeRestr Include
HiLink smlWith Include
HiLink smlMTDef Include
HiLink smlConstructor Constant
HiLink smlModPreRHS Keyword
HiLink smlMPRestr2 Keyword
HiLink smlKeyword Keyword
HiLink smlFunDef Keyword
HiLink smlRefAssign Keyword
HiLink smlKeyChar Keyword
HiLink smlAnyVar Keyword
HiLink smlTopStop Keyword
HiLink smlOperator Keyword
HiLink smlBoolean Boolean
HiLink smlCharacter Character
HiLink smlNumber Number
HiLink smlReal Float
HiLink smlString String
HiLink smlType Type
HiLink smlTodo Todo
HiLink smlEncl Keyword
delcommand HiLink
endif
let b:current_syntax = "sml"
" vim: ts=8
|