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:	2012 Oct 05
6
7" quit when a syntax file was already loaded
8if exists("b:current_syntax")
9  finish
10endif
11
12let s:cpo_save = &cpo
13set cpo&vim
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" Only when an item doesn't have highlighting yet
51hi def link asnDefinition	Function
52hi def link asnBraces		Function
53hi def link asnStructure	Statement
54hi def link asnBoolValue	Boolean
55hi def link asnSpecial		Special
56hi def link asnString		String
57hi def link asnCharacter	Character
58hi def link asnSpecialCharacter	asnSpecial
59hi def link asnNumber		asnValue
60hi def link asnComment		Comment
61hi def link asnLineComment	asnComment
62hi def link asnType		Type
63hi def link asnTypeInfo		PreProc
64hi def link asnValue		Number
65hi def link asnExternal		Include
66hi def link asnTagModifier	Function
67hi def link asnFieldOption	Type
68
69let &cpo = s:cpo_save
70unlet s:cpo_save
71let b:current_syntax = "asn"
72
73" vim: ts=8
74