1" Vim syntax file 2" Language: BIND zone files (RFC 1035) 3" Maintainer: Julian Mehnle <[email protected]> 4" URL: http://www.mehnle.net/source/odds+ends/vim/syntax/ 5" Last Change: Thu 2011-07-16 20:42:00 UTC 6" 7" Based on an earlier version by Вячеслав Горбанев (Slava Gorbanev), with 8" heavy modifications. 9" 10" $Id: bindzone.vim 12 2011-07-16 21:09:57Z julian $ 11 12" quit when a syntax file was already loaded 13if exists("b:current_syntax") 14 finish 15endif 16 17syn case match 18 19" Directives 20syn region zoneRRecord start=/^/ end=/$/ contains=zoneOwnerName,zoneSpecial,zoneTTL,zoneClass,zoneRRType,zoneComment,zoneUnknown 21 22syn match zoneDirective /^\$ORIGIN\s\+/ nextgroup=zoneOrigin,zoneUnknown 23syn match zoneDirective /^\$TTL\s\+/ nextgroup=zoneTTL,zoneUnknown 24syn match zoneDirective /^\$INCLUDE\s\+/ nextgroup=zoneText,zoneUnknown 25syn match zoneDirective /^\$GENERATE\s/ 26 27syn match zoneUnknown contained /\S\+/ 28 29syn match zoneOwnerName contained /^[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\)\@=/ nextgroup=zoneTTL,zoneClass,zoneRRType skipwhite 30syn match zoneOrigin contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/ 31syn match zoneDomain contained /[^[:space:]!"#$%&'()*+,\/:;<=>?@[\]\^`{|}~]\+\(\s\|;\|$\)\@=/ 32 33syn match zoneSpecial contained /^[@*.]\s/ 34syn 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 37syn match zoneRData contained /[^;]*/ contains=zoneDomain,zoneIPAddr,zoneIP6Addr,zoneText,zoneNumber,zoneParen,zoneUnknown 38 39syn match zoneIPAddr contained /\<[0-9]\{1,3}\(\.[0-9]\{1,3}\)\{,3}\>/ 40 41" 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\|;\|$\)\@=/ 60 61syn match zoneText contained /"\([^"\\]\|\\.\)*"\(\s\|;\|$\)\@=/ 62syn match zoneNumber contained /\<[0-9]\+\(\s\|;\|$\)\@=/ 63syn match zoneSerial contained /\<[0-9]\{9,10}\(\s\|;\|$\)\@=/ 64 65syn match zoneErrParen /)/ 66syn region zoneParen contained start="(" end=")" contains=zoneSerial,zoneTTL,zoneNumber,zoneComment 67syn match zoneComment /;.*/ 68 69" Define the default highlighting. 70" Only when an item doesn't have highlighting yet 71 72hi def link zoneDirective Macro 73 74hi def link zoneUnknown Error 75 76hi def link zoneOrigin Statement 77hi def link zoneOwnerName Statement 78hi def link zoneDomain Identifier 79 80hi def link zoneSpecial Special 81hi def link zoneTTL Constant 82hi def link zoneClass Include 83hi def link zoneRRType Type 84 85hi def link zoneIPAddr Number 86hi def link zoneIP6Addr Number 87hi def link zoneText String 88hi def link zoneNumber Number 89hi def link zoneSerial Special 90 91hi def link zoneErrParen Error 92hi def link zoneComment Comment 93 94 95let b:current_syntax = "bindzone" 96 97" vim:sts=2 sw=2 98