blob: f2372556b12c2e02a2d9b2505b70f4f13c755c7c [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
Bram Moolenaar97293012011-07-18 19:40:27 +02002" Language: BIND zone files (RFC 1035)
Bram Moolenaarfc1421e2006-04-20 22:17:20 +00003" Maintainer: Julian Mehnle <julian@mehnle.net>
4" URL: http://www.mehnle.net/source/odds+ends/vim/syntax/
Bram Moolenaar97293012011-07-18 19:40:27 +02005" Last Change: Thu 2011-07-16 20:42:00 UTC
Bram Moolenaarfc1421e2006-04-20 22:17:20 +00006"
7" Based on an earlier version by Вячеслав Горбанев (Slava Gorbanev), with
8" heavy modifications.
9"
Bram Moolenaar97293012011-07-18 19:40:27 +020010" $Id: bindzone.vim 12 2011-07-16 21:09:57Z julian $
Bram Moolenaar071d4272004-06-13 20:20:40 +000011
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020012" quit when a syntax file was already loaded
13if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000014 finish
15endif
16
17syn case match
18
Bram Moolenaarfc1421e2006-04-20 22:17:20 +000019" Directives
20syn region zoneRRecord start=/^/ end=/$/ contains=zoneOwnerName,zoneSpecial,zoneTTL,zoneClass,zoneRRType,zoneComment,zoneUnknown
Bram Moolenaar071d4272004-06-13 20:20:40 +000021
Bram Moolenaarfc1421e2006-04-20 22:17:20 +000022syn match zoneDirective /^\$ORIGIN\s\+/ nextgroup=zoneOrigin,zoneUnknown
Bram Moolenaar97293012011-07-18 19:40:27 +020023syn match zoneDirective /^\$TTL\s\+/ nextgroup=zoneTTL,zoneUnknown
Bram Moolenaarfc1421e2006-04-20 22:17:20 +000024syn match zoneDirective /^\$INCLUDE\s\+/ nextgroup=zoneText,zoneUnknown
25syn match zoneDirective /^\$GENERATE\s/
Bram Moolenaar071d4272004-06-13 20:20:40 +000026
Bram Moolenaarfc1421e2006-04-20 22:17:20 +000027syn match zoneUnknown contained /\S\+/
Bram Moolenaar071d4272004-06-13 20:20:40 +000028
Bram Moolenaarfc1421e2006-04-20 22:17:20 +000029syn match zoneOwnerName contained /^[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\)\@=/ nextgroup=zoneTTL,zoneClass,zoneRRType skipwhite
30syn match zoneOrigin contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/
31syn match zoneDomain contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/
Bram Moolenaar071d4272004-06-13 20:20:40 +000032
Bram Moolenaarfc1421e2006-04-20 22:17:20 +000033syn match zoneSpecial contained /^[@*.]\s/
Bram Moolenaar97293012011-07-18 19:40:27 +020034syn match zoneTTL contained /\s\@<=\d[0-9WwDdHhMmSs]*\(\s\|$\)\@=/ nextgroup=zoneClass,zoneRRType skipwhite
35syn keyword zoneClass contained IN CHAOS nextgroup=zoneRRType,zoneTTL skipwhite
36syn keyword zoneRRType contained A AAAA CNAME DNAME HINFO MX NS PTR SOA SRV TXT SPF nextgroup=zoneRData skipwhite
Bram Moolenaarfc1421e2006-04-20 22:17:20 +000037syn match zoneRData contained /[^;]*/ contains=zoneDomain,zoneIPAddr,zoneIP6Addr,zoneText,zoneNumber,zoneParen,zoneUnknown
Bram Moolenaar071d4272004-06-13 20:20:40 +000038
Bram Moolenaarfc1421e2006-04-20 22:17:20 +000039syn match zoneIPAddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\>/
Bram Moolenaar071d4272004-06-13 20:20:40 +000040
Bram Moolenaarfc1421e2006-04-20 22:17:20 +000041" Plain IPv6 address IPv6-embedded-IPv4 address
42" 1111:2:3:4:5:6:7:8 1111:2:3:4:5:6:127.0.0.1
43syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{6}\(\x\{1,4}:\x\{1,4}\|\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
44" ::[...:]8 ::[...:]127.0.0.1
45syn match zoneIP6Addr contained /\s\@<=::\(\(\x\{1,4}:\)\{,6}\x\{1,4}\|\(\x\{1,4}:\)\{,5}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
46" 1111::[...:]8 1111::[...:]127.0.0.1
47syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{1}:\(\(\x\{1,4}:\)\{,5}\x\{1,4}\|\(\x\{1,4}:\)\{,4}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
48" 1111:2::[...:]8 1111:2::[...:]127.0.0.1
49syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{2}:\(\(\x\{1,4}:\)\{,4}\x\{1,4}\|\(\x\{1,4}:\)\{,3}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
50" 1111:2:3::[...:]8 1111:2:3::[...:]127.0.0.1
51syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{3}:\(\(\x\{1,4}:\)\{,3}\x\{1,4}\|\(\x\{1,4}:\)\{,2}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
52" 1111:2:3:4::[...:]8 1111:2:3:4::[...:]127.0.0.1
53syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{4}:\(\(\x\{1,4}:\)\{,2}\x\{1,4}\|\(\x\{1,4}:\)\{,1}\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
54" 1111:2:3:4:5::[...:]8 1111:2:3:4:5::127.0.0.1
55syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{5}:\(\(\x\{1,4}:\)\{,1}\x\{1,4}\|\([0-2]\?\d\{1,2}\.\)\{3}[0-2]\?\d\{1,2}\)\>/
56" 1111:2:3:4:5:6::8 -
57syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{6}:\x\{1,4}\>/
58" 1111[:...]:: -
59syn match zoneIP6Addr contained /\<\(\x\{1,4}:\)\{1,7}:\(\s\|;\|$\)\@=/
Bram Moolenaar071d4272004-06-13 20:20:40 +000060
Bram Moolenaarfc1421e2006-04-20 22:17:20 +000061syn match zoneText contained /"\([^"\\]\|\\.\)*"\(\s\|;\|$\)\@=/
62syn match zoneNumber contained /\<[0-9]\+\(\s\|;\|$\)\@=/
63syn match zoneSerial contained /\<[0-9]\{9,10}\(\s\|;\|$\)\@=/
Bram Moolenaar071d4272004-06-13 20:20:40 +000064
Bram Moolenaarfc1421e2006-04-20 22:17:20 +000065syn match zoneErrParen /)/
Bram Moolenaar97293012011-07-18 19:40:27 +020066syn region zoneParen contained start="(" end=")" contains=zoneSerial,zoneTTL,zoneNumber,zoneComment
Bram Moolenaarfc1421e2006-04-20 22:17:20 +000067syn match zoneComment /;.*/
Bram Moolenaar071d4272004-06-13 20:20:40 +000068
69" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020070" Only when an item doesn't have highlighting yet
71command -nargs=+ HiLink hi def link <args>
Bram Moolenaar071d4272004-06-13 20:20:40 +000072
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020073HiLink zoneDirective Macro
Bram Moolenaar071d4272004-06-13 20:20:40 +000074
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020075HiLink zoneUnknown Error
76
77HiLink zoneOrigin Statement
78HiLink zoneOwnerName Statement
79HiLink zoneDomain Identifier
80
81HiLink zoneSpecial Special
82HiLink zoneTTL Constant
83HiLink zoneClass Include
84HiLink zoneRRType Type
85
86HiLink zoneIPAddr Number
87HiLink zoneIP6Addr Number
88HiLink zoneText String
89HiLink zoneNumber Number
90HiLink zoneSerial Special
91
92HiLink zoneErrParen Error
93HiLink zoneComment Comment
94
95delcommand HiLink
Bram Moolenaar071d4272004-06-13 20:20:40 +000096
97let b:current_syntax = "bindzone"
98
Bram Moolenaarfc1421e2006-04-20 22:17:20 +000099" vim:sts=2 sw=2