@@ -3,3 +3,94 @@ package net.sjrx.intellij.plugins.systemdunitfiles.semanticdata.optionvalues.gra
33val BYTES = RegexTerminal (" [0-9]+[a-zA-Z]*\\ s*" , " [0-9]+[KMGT]?\\ s*" )
44val DEVICE = RegexTerminal (" \\ S+\\ s*" , " /[^\\ u0000. ]+\\ s*" )
55val IOPS = RegexTerminal (" [0-9]+[a-zA-Z]*\\ s*" , " [0-9]+[KMGT]?\\ s*" )
6+
7+ var IPV4_OCTET = IntegerTerminal (0 , 256 )
8+ val DOT = LiteralChoiceTerminal (" ." )
9+ var IPV4_ADDR = SequenceCombinator (IPV4_OCTET , DOT , IPV4_OCTET , DOT , IPV4_OCTET , DOT , IPV4_OCTET )
10+
11+ val CIDR_SEPARATOR = LiteralChoiceTerminal (" /" )
12+
13+ val IPV4_ADDR_AND_PREFIX_LENGTH = SequenceCombinator (IPV4_ADDR , CIDR_SEPARATOR , IntegerTerminal (8 , 33 ))
14+ val IPV4_ADDR_AND_OPTIONAL_PREFIX_LENGTH = SequenceCombinator (IPV4_ADDR , ZeroOrOne (SequenceCombinator ( CIDR_SEPARATOR , IntegerTerminal (8 , 33 ))))
15+
16+ var IPV6_HEXTET = RegexTerminal (" [0-9a-fA-F]{1,4}" , " [0-9a-fA-F]{1,4}" )
17+ val COLON = LiteralChoiceTerminal (" :" )
18+ val DOUBLE_COLON = LiteralChoiceTerminal (" ::" )
19+
20+
21+ val IPV6_FULL_SPECIFIED = SequenceCombinator (IPV6_HEXTET , COLON , IPV6_HEXTET , COLON , IPV6_HEXTET , COLON , IPV6_HEXTET , COLON , IPV6_HEXTET , COLON , IPV6_HEXTET , COLON , IPV6_HEXTET , COLON , IPV6_HEXTET )
22+ val IPV6_ZERO_HEXTET_BEFORE_ZERO_COMP = SequenceCombinator (DOUBLE_COLON , ZeroOrOne (SequenceCombinator (Repeat (SequenceCombinator (IPV6_HEXTET , COLON ), 0 , 8 ), IPV6_HEXTET )))
23+ val IPV6_ONE_HEXTET_BEFORE_ZERO_COMP = SequenceCombinator (IPV6_HEXTET , DOUBLE_COLON , ZeroOrOne (SequenceCombinator ( Repeat (SequenceCombinator (IPV6_HEXTET , COLON ), 0 , 7 ), IPV6_HEXTET )))
24+ val IPV6_TWO_HEXTET_BEFORE_ZERO_COMP = SequenceCombinator (IPV6_HEXTET , COLON , IPV6_HEXTET , DOUBLE_COLON , ZeroOrOne (SequenceCombinator (Repeat (SequenceCombinator (IPV6_HEXTET , COLON ), 0 , 6 ), IPV6_HEXTET )))
25+ val IPV6_THREE_HEXTET_BEFORE_ZERO_COMP = SequenceCombinator (IPV6_HEXTET , COLON ,IPV6_HEXTET , COLON ,IPV6_HEXTET , DOUBLE_COLON , ZeroOrOne (SequenceCombinator (Repeat (SequenceCombinator (IPV6_HEXTET , COLON ), 0 , 5 ), IPV6_HEXTET )))
26+ val IPV6_FOUR_HEXTET_BEFORE_ZERO_COMP = SequenceCombinator (IPV6_HEXTET , COLON ,IPV6_HEXTET , COLON ,IPV6_HEXTET , COLON ,IPV6_HEXTET , DOUBLE_COLON , ZeroOrOne (SequenceCombinator (Repeat (SequenceCombinator (IPV6_HEXTET , COLON ), 0 , 4 ), IPV6_HEXTET )))
27+ val IPV6_FIVE_HEXTET_BEFORE_ZERO_COMP = SequenceCombinator (IPV6_HEXTET , COLON ,IPV6_HEXTET , COLON ,IPV6_HEXTET , COLON ,IPV6_HEXTET , COLON ,IPV6_HEXTET , DOUBLE_COLON , ZeroOrOne (SequenceCombinator (Repeat (SequenceCombinator (IPV6_HEXTET , COLON ), 0 , 3 ), IPV6_HEXTET )))
28+ val IPV6_SIX_HEXTET_BEFORE_ZERO_COMP = SequenceCombinator (IPV6_HEXTET , COLON ,IPV6_HEXTET , COLON ,IPV6_HEXTET , COLON ,IPV6_HEXTET , COLON ,IPV6_HEXTET , COLON ,IPV6_HEXTET , DOUBLE_COLON , ZeroOrOne (SequenceCombinator (Repeat (SequenceCombinator (IPV6_HEXTET , COLON ), 0 , 2 ), IPV6_HEXTET )))
29+ val IPV6_SEVEN_HEXTET_BEFORE_ZERO_COMP = SequenceCombinator (IPV6_HEXTET , COLON ,IPV6_HEXTET , COLON ,IPV6_HEXTET , COLON ,IPV6_HEXTET , COLON ,IPV6_HEXTET , COLON ,IPV6_HEXTET , COLON ,IPV6_HEXTET , DOUBLE_COLON , ZeroOrOne (IPV6_HEXTET ))
30+
31+
32+ val IPV6_IPV4_SUFFIX_FULL = SequenceCombinator (IPV6_HEXTET , COLON , IPV6_HEXTET , COLON , IPV6_HEXTET , COLON , IPV6_HEXTET , COLON , IPV6_HEXTET , COLON , IPV6_HEXTET , COLON , IPV4_ADDR )
33+ val IPV6_IPV4_SUFFIX_ZERO_HEXTET_BEFORE_ZERO_COMP = SequenceCombinator (DOUBLE_COLON ,SequenceCombinator (Repeat (SequenceCombinator (IPV6_HEXTET , COLON ), 0 , 6 ), IPV4_ADDR ))
34+ val IPV6_IPV4_SUFFIX_ONE_HEXTET_BEFORE_ZERO_COMP = SequenceCombinator (IPV6_HEXTET , DOUBLE_COLON , SequenceCombinator (Repeat (SequenceCombinator (IPV6_HEXTET , COLON ), 0 , 5 ), IPV4_ADDR ))
35+ val IPV6_IPV4_SUFFIX_TWO_HEXTET_BEFORE_ZERO_COMP = SequenceCombinator (IPV6_HEXTET , COLON , IPV6_HEXTET , DOUBLE_COLON , SequenceCombinator (Repeat (SequenceCombinator (IPV6_HEXTET , COLON ), 0 , 4 ), IPV4_ADDR ))
36+ val IPV6_IPV4_SUFFIX_THREE_HEXTET_BEFORE_ZERO_COMP = SequenceCombinator (IPV6_HEXTET , COLON , IPV6_HEXTET , COLON , IPV6_HEXTET , DOUBLE_COLON ,SequenceCombinator (Repeat (SequenceCombinator (IPV6_HEXTET , COLON ), 0 , 3 ), IPV4_ADDR ))
37+ val IPV6_IPV4_SUFFIX_FOUR_HEXTET_BEFORE_ZERO_COMP = SequenceCombinator (IPV6_HEXTET , COLON , IPV6_HEXTET , COLON , IPV6_HEXTET , COLON , IPV6_HEXTET , DOUBLE_COLON , SequenceCombinator (Repeat (SequenceCombinator (IPV6_HEXTET , COLON ), 0 , 2 ), IPV4_ADDR ))
38+ val IPV6_IPV4_SUFFIX_FIVE_HEXTET_BEFORE_ZERO_COMP = SequenceCombinator (IPV6_HEXTET , COLON , IPV6_HEXTET , COLON , IPV6_HEXTET , COLON , IPV6_HEXTET , COLON , IPV6_HEXTET , DOUBLE_COLON , IPV4_ADDR )
39+
40+ // val IPV6_ALL_ZEROS = DOUBLE_COLON
41+
42+ val IPV6_ADDR = AlternativeCombinator (
43+ IPV6_IPV4_SUFFIX_FULL ,
44+ IPV6_IPV4_SUFFIX_ZERO_HEXTET_BEFORE_ZERO_COMP ,
45+ IPV6_IPV4_SUFFIX_ONE_HEXTET_BEFORE_ZERO_COMP ,
46+ IPV6_IPV4_SUFFIX_TWO_HEXTET_BEFORE_ZERO_COMP ,
47+ IPV6_IPV4_SUFFIX_THREE_HEXTET_BEFORE_ZERO_COMP ,
48+ IPV6_IPV4_SUFFIX_FOUR_HEXTET_BEFORE_ZERO_COMP ,
49+ IPV6_IPV4_SUFFIX_FIVE_HEXTET_BEFORE_ZERO_COMP ,
50+ IPV6_FULL_SPECIFIED ,
51+ IPV6_SEVEN_HEXTET_BEFORE_ZERO_COMP ,
52+ IPV6_SIX_HEXTET_BEFORE_ZERO_COMP ,
53+ IPV6_FIVE_HEXTET_BEFORE_ZERO_COMP ,
54+ IPV6_FOUR_HEXTET_BEFORE_ZERO_COMP ,
55+ IPV6_THREE_HEXTET_BEFORE_ZERO_COMP ,
56+ IPV6_TWO_HEXTET_BEFORE_ZERO_COMP ,
57+ IPV6_ONE_HEXTET_BEFORE_ZERO_COMP ,
58+ // Must go last because it's the most general and can match ::
59+ IPV6_ZERO_HEXTET_BEFORE_ZERO_COMP ,
60+
61+ // I suspect maybe that this one is redundant
62+ // IPV6_ALL_ZEROS,
63+ )
64+
65+ val IPV6_ADDR_AND_PREFIX_LENGTH = SequenceCombinator (IPV6_ADDR , CIDR_SEPARATOR , IntegerTerminal (64 , 129 ))
66+ val IPV6_ADDR_AND_OPTIONAL_PREFIX_LENGTH = SequenceCombinator (IPV6_ADDR , ZeroOrOne (SequenceCombinator (CIDR_SEPARATOR , IntegerTerminal (64 , 129 ))))
67+
68+
69+ var IP_ADDR_AND_PREFIX_LENGTH = AlternativeCombinator (
70+ IPV4_ADDR_AND_OPTIONAL_PREFIX_LENGTH ,
71+ IPV6_ADDR_AND_PREFIX_LENGTH )
72+
73+ var IN_ADDR_PREFIX_SPECIAL_VALUES = LiteralChoiceTerminal (" any" , " localhost" , " link-local" , " multicast" )
74+
75+ var IPV4_ADDR_AND_PREFIX_OR_SPECIAL = AlternativeCombinator (
76+ IPV4_ADDR_AND_OPTIONAL_PREFIX_LENGTH ,
77+ IN_ADDR_PREFIX_SPECIAL_VALUES ,
78+ )
79+
80+ var IPV6_ADDR_AND_PREFIX_OR_SPECIAL = AlternativeCombinator (
81+ IPV6_ADDR_AND_OPTIONAL_PREFIX_LENGTH ,
82+ IN_ADDR_PREFIX_SPECIAL_VALUES ,
83+ )
84+
85+
86+ var IP_ADDR_AND_PREFIX_OR_SPECIAL = AlternativeCombinator (
87+ IPV4_ADDR_AND_OPTIONAL_PREFIX_LENGTH ,
88+ IPV6_ADDR_AND_OPTIONAL_PREFIX_LENGTH ,
89+ IN_ADDR_PREFIX_SPECIAL_VALUES ,
90+ )
91+
92+ var IP_ADDR_PREFIX_LIST = SequenceCombinator (IP_ADDR_AND_PREFIX_OR_SPECIAL , ZeroOrMore (SequenceCombinator (WhitespaceTerminal (), IP_ADDR_AND_PREFIX_OR_SPECIAL )))
93+ var IPV4_ADDR_PREFIX_LIST = SequenceCombinator (IPV4_ADDR_AND_PREFIX_OR_SPECIAL , ZeroOrMore (SequenceCombinator (WhitespaceTerminal (), IPV4_ADDR_AND_PREFIX_OR_SPECIAL )))
94+ var IPV6_ADDR_PREFIX_LIST = SequenceCombinator (IPV6_ADDR_AND_PREFIX_OR_SPECIAL , ZeroOrMore (SequenceCombinator (WhitespaceTerminal (), IPV6_ADDR_AND_PREFIX_OR_SPECIAL )))
95+
96+
0 commit comments