diff options
Diffstat (limited to '')
| -rw-r--r-- | syntax/cryptol.vim | 114 | 
1 files changed, 114 insertions, 0 deletions
| diff --git a/syntax/cryptol.vim b/syntax/cryptol.vim new file mode 100644 index 00000000..587b5bb8 --- /dev/null +++ b/syntax/cryptol.vim @@ -0,0 +1,114 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cryptol') == -1 +   +" Vim syntax file +" Language:	Cryptol +" Maintainer:	Fergus Henderson +" Last Change:	Thu Feb 10 13:14:24 PST 2005 +" + +" Remove any old syntax stuff hanging around +if version < 600 +  syn clear +elseif exists("b:current_syntax") +  finish +endif + +set expandtab +set list lcs=tab:>-,trail:. + +" (Qualified) identifiers (no default highlighting) +" XXX copied from Haskell +syn match ConId "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=\<[A-Z][a-zA-Z0-9_']*\>" +syn match VarId "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=\<[a-z][a-zA-Z0-9_']*\>" + +" Infix operators--most punctuation characters and any (qualified) identifier +" enclosed in `backquotes`. An operator starting with : is a constructor, +" others are variables (e.g. functions). +" XXX copied from Haskell +syn match cryVarSym "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[-!#$%&\*\+/<=>\?@\\^|~.][-!#$%&\*\+/<=>\?@\\^|~:.]*" +syn match cryConSym "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=:[-!#$%&\*\+./<=>\?@\\^|~:]*" +syn match cryVarSym "`\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[a-z][a-zA-Z0-9_']*`" +syn match cryConSym "`\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[A-Z][a-zA-Z0-9_']*`" + +" Reserved symbols +syn match cryDelimiter  "(\|)\|\[|\||]\|||\|\[\|\]\|,\|;\|{\|}" + +" Strings and constants +" XXX Copied from Haskell +syn match   crySpecialChar	contained "\\\([0-9]\+\|o[0-7]\+\|x[0-9a-fA-F]\+\|[\"\\'&\\abfnrtv]\|^[A-Z^_\[\\\]]\)" +syn match   crySpecialChar	contained "\\\(NUL\|SOH\|STX\|ETX\|EOT\|ENQ\|ACK\|BEL\|BS\|HT\|LF\|VT\|FF\|CR\|SO\|SI\|DLE\|DC1\|DC2\|DC3\|DC4\|NAK\|SYN\|ETB\|CAN\|EM\|SUB\|ESC\|FS\|GS\|RS\|US\|SP\|DEL\)" +syn match   crySpecialCharError	contained "\\&\|'''\+" +syn region  cryString		start=+"+  skip=+\\\\\|\\"+  end=+"+  contains=crySpecialChar +syn region  cryString		start=+``+  skip=+\\\\\|\\"+  end=+``+  contains=hsSpecialChar +syn match   cryCharacter		"[^a-zA-Z0-9_']'\([^\\]\|\\[^']\+\|\\'\)'"lc=1 contains=crySpecialChar,crySpecialCharError +syn match   cryCharacter		"^'\([^\\]\|\\[^']\+\|\\'\)'" contains=crySpecialChar,crySpecialCharError +syn match   cryNumber		"\<[0-9]\+\>\|\<0[xX][0-9a-fA-F]\+\>\|\<0[oO][0-7]\+\>" + +" Keyword definitions. + +syn keyword cryInclude		include +syn keyword cryConditional	if then else +syn keyword cryWhere	        where +syn keyword cryTypeSyn	        type +syn keyword cryPragma	        pragma +syn keyword cryProp	        extern theorem proof forall codeGen Cpp Haskell SMT Isabelle axioms +syn keyword cryType	        Bit inf + +" Primitives +syn keyword cryBoolean          False True +syn keyword cryPrimitive        zero undefined +syn keyword cryPrimitive        error parity lg2 pmod pdiv pmult format +syn keyword cryPrimitive        join split groupBy take drop min max negate reverse +syn keyword cryPrimitive        project tail width +syn keyword cryPrimitive        ASSERT + +" Comments +syn match   cryLineComment      "//.*" +syn region  cryBlockComment     start="/\*"  end="\*/" contains=cryBlockComment + +if !exists("cry_minlines") +  let cry_minlines = 50 +endif +exec "syn sync lines=" . cry_minlines + +if version >= 508 || !exists("did_cry_syntax_inits") +  if version < 508 +    let did_cry_syntax_inits = 1 +    command -nargs=+ HiLink hi link <args> +  else +    command -nargs=+ HiLink hi def link <args> +  endif + +  hi link cryInclude			  Include +  hi link cryTypeSyn			  Keyword +  hi link cryImportMod			  cryImport +  hi link cryConditional		  Conditional +  hi link crySpecialChar		  SpecialChar +  hi link cryTypedef			  Typedef +  hi link cryPragma			  Keyword +  hi link cryVarSym			  cryOperator +  hi link cryConSym			  cryOperator +  hi link cryOperator			  Operator +  hi link cryDelimiter			  Delimiter +  hi link crySpecialCharError		  Error +  hi link cryString			  String +  hi link cryCharacter			  Character +  hi link cryNumber			  Number +  hi link cryConditional		  Conditional +  hi link cryWhere			  Keyword +  hi link cryPrimitive			  Keyword +  hi link cryBlockComment		  cryComment +  hi link cryLineComment		  cryComment +  hi link cryComment			  Comment +  hi link cryBoolean			  Boolean +  hi link cryType			  Type +  hi link cryProp			  Keyword + +  delcommand HiLink +endif + +let b:current_syntax = "cryptol" + +" Options for vi: ts=8 sw=2 sts=2 nowrap noexpandtab ft=vim + +endif | 
