blob: 28c8efba952e41238c7ed50975ec43038afb9c47 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: ASN.1
3" Maintainer: Claudio Fleiner <claudio@fleiner.com>
4" URL: http://www.fleiner.com/vim/syntax/asn.vim
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +02005" Last Change: 2012 Oct 05
Bram Moolenaar071d4272004-06-13 20:20:40 +00006
7" For version 5.x: Clear all syntax items
8" For version 6.x: Quit when a syntax file was already loaded
9if version < 600
10 syntax clear
11elseif exists("b:current_syntax")
12 finish
13endif
14
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +020015let s:cpo_save = &cpo
16set cpo&vim
17
Bram Moolenaar071d4272004-06-13 20:20:40 +000018" keyword definitions
19syn keyword asnExternal DEFINITIONS BEGIN END IMPORTS EXPORTS FROM
20syn match asnExternal "\<IMPLICIT\s\+TAGS\>"
21syn match asnExternal "\<EXPLICIT\s\+TAGS\>"
22syn keyword asnFieldOption DEFAULT OPTIONAL
23syn keyword asnTagModifier IMPLICIT EXPLICIT
24syn keyword asnTypeInfo ABSENT PRESENT SIZE UNIVERSAL APPLICATION PRIVATE
25syn keyword asnBoolValue TRUE FALSE
26syn keyword asnNumber MIN MAX
27syn match asnNumber "\<PLUS-INFINITY\>"
28syn match asnNumber "\<MINUS-INFINITY\>"
29syn keyword asnType INTEGER REAL STRING BIT BOOLEAN OCTET NULL EMBEDDED PDV
30syn keyword asnType BMPString IA5String TeletexString GeneralString GraphicString ISO646String NumericString PrintableString T61String UniversalString VideotexString VisibleString
31syn keyword asnType ANY DEFINED
32syn match asnType "\.\.\."
33syn match asnType "OBJECT\s\+IDENTIFIER"
34syn match asnType "TYPE-IDENTIFIER"
35syn keyword asnType UTF8String
36syn keyword asnStructure CHOICE SEQUENCE SET OF ENUMERATED CONSTRAINED BY WITH COMPONENTS CLASS
37
38" Strings and constants
39syn match asnSpecial contained "\\\d\d\d\|\\."
40syn region asnString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=asnSpecial
41syn match asnCharacter "'[^\\]'"
42syn match asnSpecialCharacter "'\\.'"
43syn match asnNumber "-\=\<\d\+L\=\>\|0[xX][0-9a-fA-F]\+\>"
44syn match asnLineComment "--.*"
45syn match asnLineComment "--.*--"
46
47syn match asnDefinition "^\s*[a-zA-Z][-a-zA-Z0-9_.\[\] \t{}]* *::="me=e-3 contains=asnType
48syn match asnBraces "[{}]"
49
50syn sync ccomment asnComment
51
52" Define the default highlighting.
53" For version 5.7 and earlier: only when not done already
54" For version 5.8 and later: only when an item doesn't have highlighting yet
55if version >= 508 || !exists("did_asn_syn_inits")
56 if version < 508
57 let did_asn_syn_inits = 1
58 command -nargs=+ HiLink hi link <args>
59 else
60 command -nargs=+ HiLink hi def link <args>
61 endif
62 HiLink asnDefinition Function
63 HiLink asnBraces Function
64 HiLink asnStructure Statement
65 HiLink asnBoolValue Boolean
66 HiLink asnSpecial Special
67 HiLink asnString String
68 HiLink asnCharacter Character
69 HiLink asnSpecialCharacter asnSpecial
70 HiLink asnNumber asnValue
71 HiLink asnComment Comment
72 HiLink asnLineComment asnComment
73 HiLink asnType Type
74 HiLink asnTypeInfo PreProc
75 HiLink asnValue Number
76 HiLink asnExternal Include
77 HiLink asnTagModifier Function
78 HiLink asnFieldOption Type
79 delcommand HiLink
80endif
81
Bram Moolenaar0c5fa7d2012-10-05 22:26:30 +020082let &cpo = s:cpo_save
83unlet s:cpo_save
Bram Moolenaar071d4272004-06-13 20:20:40 +000084let b:current_syntax = "asn"
85
86" vim: ts=8