mirror of
https://github.com/Myzel394/config-lsp.git
synced 2025-06-18 23:15:26 +02:00
121 lines
1.4 KiB
ANTLR
121 lines
1.4 KiB
ANTLR
grammar Hosts;
|
|
|
|
lineStatement
|
|
: SEPARATOR? entry SEPARATOR? leadingComment? EOF
|
|
;
|
|
|
|
entry
|
|
: ipAddress SEPARATOR hostname (SEPARATOR aliases)?
|
|
;
|
|
|
|
aliases
|
|
: (alias SEPARATOR?)+
|
|
;
|
|
|
|
alias
|
|
: domain
|
|
;
|
|
|
|
hostname
|
|
: domain
|
|
;
|
|
|
|
domain
|
|
: (STRING)+ (DOT STRING*)*
|
|
;
|
|
|
|
ipAddress
|
|
: (ipv4Address | ipv6Address)
|
|
;
|
|
|
|
ipv4Address
|
|
: (STRING DOT)+ STRING (ipRange? | ipPort?)
|
|
;
|
|
|
|
ipv6Address
|
|
: (((STRING COLON)+ STRING) | (STRING? COLON COLON STRING)) (ipRange? | ipPort?)
|
|
;
|
|
|
|
/*
|
|
ipv4Address
|
|
: singleIPv4Address
|
|
// Allow optional range to tell user ranges are not allowed
|
|
(ipRange? | ipPort?)
|
|
;
|
|
|
|
singleIPv4Address
|
|
: ipv4Digit DOT ipv4Digit DOT ipv4Digit DOT ipv4Digit
|
|
;
|
|
|
|
// This is not correct but fits for now
|
|
ipv6Address
|
|
: singleIPv6Address
|
|
// Allow optional range to tell user ranges are not allowed
|
|
(ipRange? | ipPort?)
|
|
;
|
|
|
|
singleIPv6Address
|
|
: (ipv6Octet COLON)+ ipv6Octet
|
|
;
|
|
|
|
ipv4Digit
|
|
: STRING
|
|
;
|
|
|
|
ipv6Octet
|
|
: STRING
|
|
;
|
|
*/
|
|
|
|
ipRange
|
|
: SLASH ipRangeBits
|
|
;
|
|
|
|
ipRangeBits
|
|
: STRING
|
|
;
|
|
|
|
ipPort
|
|
: COLON STRING
|
|
;
|
|
|
|
comment
|
|
: COMMENTLINE
|
|
;
|
|
|
|
leadingComment
|
|
: COMMENTLINE
|
|
;
|
|
|
|
COMMENTLINE
|
|
: HASHTAG ~[\r\n]+
|
|
;
|
|
|
|
SLASH
|
|
: '/'
|
|
;
|
|
|
|
DOT
|
|
: '.'
|
|
;
|
|
|
|
COLON
|
|
: ':'
|
|
;
|
|
|
|
HASHTAG
|
|
: '#'
|
|
;
|
|
|
|
SEPARATOR
|
|
: [ \t]+
|
|
;
|
|
|
|
NEWLINE
|
|
: [\r]? [\n]
|
|
;
|
|
|
|
STRING
|
|
: [a-zA-Z0-9_\-]+
|
|
;
|