|
| 1 | +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cryptol') == -1 |
| 2 | + |
| 3 | +" Vim syntax file |
| 4 | +" Language: Cryptol |
| 5 | +" Maintainer: Fergus Henderson |
| 6 | +" Last Change: Thu Feb 10 13:14:24 PST 2005 |
| 7 | +" |
| 8 | + |
| 9 | +" Remove any old syntax stuff hanging around |
| 10 | +if version < 600 |
| 11 | + syn clear |
| 12 | +elseif exists("b:current_syntax") |
| 13 | + finish |
| 14 | +endif |
| 15 | + |
| 16 | +set expandtab |
| 17 | +set list lcs=tab:>-,trail:. |
| 18 | + |
| 19 | +" (Qualified) identifiers (no default highlighting) |
| 20 | +" XXX copied from Haskell |
| 21 | +syn match ConId "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=\<[A-Z][a-zA-Z0-9_']*\>" |
| 22 | +syn match VarId "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=\<[a-z][a-zA-Z0-9_']*\>" |
| 23 | + |
| 24 | +" Infix operators--most punctuation characters and any (qualified) identifier |
| 25 | +" enclosed in `backquotes`. An operator starting with : is a constructor, |
| 26 | +" others are variables (e.g. functions). |
| 27 | +" XXX copied from Haskell |
| 28 | +syn match cryVarSym "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[-!#$%&\*\+/<=>\?@\\^|~.][-!#$%&\*\+/<=>\?@\\^|~:.]*" |
| 29 | +syn match cryConSym "\(\<[A-Z][a-zA-Z0-9_']*\.\)\=:[-!#$%&\*\+./<=>\?@\\^|~:]*" |
| 30 | +syn match cryVarSym "`\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[a-z][a-zA-Z0-9_']*`" |
| 31 | +syn match cryConSym "`\(\<[A-Z][a-zA-Z0-9_']*\.\)\=[A-Z][a-zA-Z0-9_']*`" |
| 32 | + |
| 33 | +" Reserved symbols |
| 34 | +syn match cryDelimiter "(\|)\|\[|\||]\|||\|\[\|\]\|,\|;\|{\|}" |
| 35 | + |
| 36 | +" Strings and constants |
| 37 | +" XXX Copied from Haskell |
| 38 | +syn match crySpecialChar contained "\\\([0-9]\+\|o[0-7]\+\|x[0-9a-fA-F]\+\|[\"\\'&\\abfnrtv]\|^[A-Z^_\[\\\]]\)" |
| 39 | +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\)" |
| 40 | +syn match crySpecialCharError contained "\\&\|'''\+" |
| 41 | +syn region cryString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=crySpecialChar |
| 42 | +syn region cryString start=+``+ skip=+\\\\\|\\"+ end=+``+ contains=hsSpecialChar |
| 43 | +syn match cryCharacter "[^a-zA-Z0-9_']'\([^\\]\|\\[^']\+\|\\'\)'"lc=1 contains=crySpecialChar,crySpecialCharError |
| 44 | +syn match cryCharacter "^'\([^\\]\|\\[^']\+\|\\'\)'" contains=crySpecialChar,crySpecialCharError |
| 45 | +syn match cryNumber "\<[0-9]\+\>\|\<0[xX][0-9a-fA-F]\+\>\|\<0[oO][0-7]\+\>" |
| 46 | + |
| 47 | +" Keyword definitions. |
| 48 | + |
| 49 | +syn keyword cryInclude include |
| 50 | +syn keyword cryConditional if then else |
| 51 | +syn keyword cryWhere where |
| 52 | +syn keyword cryTypeSyn type |
| 53 | +syn keyword cryPragma pragma |
| 54 | +syn keyword cryProp extern theorem proof forall codeGen Cpp Haskell SMT Isabelle axioms |
| 55 | +syn keyword cryType Bit inf |
| 56 | + |
| 57 | +" Primitives |
| 58 | +syn keyword cryBoolean False True |
| 59 | +syn keyword cryPrimitive zero undefined |
| 60 | +syn keyword cryPrimitive error parity lg2 pmod pdiv pmult format |
| 61 | +syn keyword cryPrimitive join split groupBy take drop min max negate reverse |
| 62 | +syn keyword cryPrimitive project tail width |
| 63 | +syn keyword cryPrimitive ASSERT |
| 64 | + |
| 65 | +" Comments |
| 66 | +syn match cryLineComment "//.*" |
| 67 | +syn region cryBlockComment start="/\*" end="\*/" contains=cryBlockComment |
| 68 | + |
| 69 | +if !exists("cry_minlines") |
| 70 | + let cry_minlines = 50 |
| 71 | +endif |
| 72 | +exec "syn sync lines=" . cry_minlines |
| 73 | + |
| 74 | +if version >= 508 || !exists("did_cry_syntax_inits") |
| 75 | + if version < 508 |
| 76 | + let did_cry_syntax_inits = 1 |
| 77 | + command -nargs=+ HiLink hi link <args> |
| 78 | + else |
| 79 | + command -nargs=+ HiLink hi def link <args> |
| 80 | + endif |
| 81 | + |
| 82 | + hi link cryInclude Include |
| 83 | + hi link cryTypeSyn Keyword |
| 84 | + hi link cryImportMod cryImport |
| 85 | + hi link cryConditional Conditional |
| 86 | + hi link crySpecialChar SpecialChar |
| 87 | + hi link cryTypedef Typedef |
| 88 | + hi link cryPragma Keyword |
| 89 | + hi link cryVarSym cryOperator |
| 90 | + hi link cryConSym cryOperator |
| 91 | + hi link cryOperator Operator |
| 92 | + hi link cryDelimiter Delimiter |
| 93 | + hi link crySpecialCharError Error |
| 94 | + hi link cryString String |
| 95 | + hi link cryCharacter Character |
| 96 | + hi link cryNumber Number |
| 97 | + hi link cryConditional Conditional |
| 98 | + hi link cryWhere Keyword |
| 99 | + hi link cryPrimitive Keyword |
| 100 | + hi link cryBlockComment cryComment |
| 101 | + hi link cryLineComment cryComment |
| 102 | + hi link cryComment Comment |
| 103 | + hi link cryBoolean Boolean |
| 104 | + hi link cryType Type |
| 105 | + hi link cryProp Keyword |
| 106 | + |
| 107 | + delcommand HiLink |
| 108 | +endif |
| 109 | + |
| 110 | +let b:current_syntax = "cryptol" |
| 111 | + |
| 112 | +" Options for vi: ts=8 sw=2 sts=2 nowrap noexpandtab ft=vim |
| 113 | + |
| 114 | +endif |
0 commit comments