xref: /vim-8.2.3635/runtime/syntax/bindzone.vim (revision 89bcfda6)
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
71command -nargs=+ HiLink hi def link <args>
72
73HiLink zoneDirective    Macro
74
75HiLink 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
96
97let b:current_syntax = "bindzone"
98
99" vim:sts=2 sw=2
100