blob: fede3d97d52940e8a1f1db302944e122fd3c983c [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
Bram Moolenaar5be4cee2019-09-27 19:34:08 +020035syn keyword zoneClass contained IN CHAOS CH HS HESIOD nextgroup=zoneRRType,zoneTTL skipwhite
Stuart Henderson442d1742023-08-17 23:04:24 +010036syn keyword zoneRRType contained A AAAA CAA CERT CNAME DNAME DNSKEY DS HINFO LOC MX NAPTR NS NSEC NSEC3 NSEC3PARAM OPENPGPKEY PTR RP RRSIG SMIMEA SOA SPF SRV SSHFP TLSA TXT 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
Bram Moolenaar071d4272004-06-13 20:20:40 +000071
Bram Moolenaarf37506f2016-08-31 22:22:10 +020072hi def link zoneDirective Macro
Bram Moolenaar071d4272004-06-13 20:20:40 +000073
Bram Moolenaarf37506f2016-08-31 22:22:10 +020074hi def link zoneUnknown Error
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020075
Bram Moolenaarf37506f2016-08-31 22:22:10 +020076hi def link zoneOrigin Statement
77hi def link zoneOwnerName Statement
78hi def link zoneDomain Identifier
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020079
Bram Moolenaarf37506f2016-08-31 22:22:10 +020080hi def link zoneSpecial Special
81hi def link zoneTTL Constant
82hi def link zoneClass Include
83hi def link zoneRRType Type
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020084
Bram Moolenaarf37506f2016-08-31 22:22:10 +020085hi def link zoneIPAddr Number
86hi def link zoneIP6Addr Number
87hi def link zoneText String
88hi def link zoneNumber Number
89hi def link zoneSerial Special
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020090
Bram Moolenaarf37506f2016-08-31 22:22:10 +020091hi def link zoneErrParen Error
92hi def link zoneComment Comment
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020093
Bram Moolenaar071d4272004-06-13 20:20:40 +000094
95let b:current_syntax = "bindzone"
96
Bram Moolenaarfc1421e2006-04-20 22:17:20 +000097" vim:sts=2 sw=2