Value NUM (\d+)
Value FLAGS ((?:X|I|D)+)
Value COMMENT (.*)
Value IP (\S+)
Value SUBNET (\d+)
Value NETWORK (\S+)
Value INTERFACE (.*?)

Start
  ^\s*Flags:
  ^\s*Columns:\s*ADDRESS,\s*NETWORK,\s*INTERFACE\s*$$
  ^\s*#\s+ADDRESS\s+NETWORK\s+INTERFACE\s*$$ -> IPsTable
  ^\s*$$
  ^. -> Error

IPsTable
  ^\s*${NUM}\s+(?:${FLAGS}\s+)?${IP}/${SUBNET}\s+${NETWORK}\s+${INTERFACE}\s*$$ -> Record
  ^\s*;{3}\s*${COMMENT}\s*$$
  ^\s*${NUM}\s+(?:${FLAGS}\s+)?;;;\s+${COMMENT}\s*$$
  ^\s*${IP}/${SUBNET}\s+${NETWORK}\s+${INTERFACE}\s*$$ -> Record
  ^\s*$$
  ^. -> Error
