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