Value INTERFACE (\S+)
Value INTERFACE_MODE (\S+)
Value GVRP_STATUS (\S+)
Value INGRESS_FILTERING_STATUS (\S+)
Value ACCEPTABLE_FRAME_TYPE (\S+)
Value NATIVE_VLAN (\S+)
Value List VLAN_ID (\d+)
Value List VLAN_NAME (.*?)
Value List EGRESS_RULE (Untagged|Tagged)
Value List INTERFACE_MEMBERSHIP_TYPE (\S+)
Value List FORBIDDEN_VLAN (\d+)
Value List FORBIDDEN_VLAN_NAME (.*)

Start
  ^\s*Port\s*:\s*${INTERFACE}\s*$$
  ^\s*Port\s+Mode\s*:\s*${INTERFACE_MODE}\s*$$
  ^\s*Gvrp\s+Status\s*:\s*${GVRP_STATUS}\s*$$
  ^\s*Ingress\s+Filtering\s*:\s*${INGRESS_FILTERING_STATUS}\s*$$
  ^\s*Acceptable\s+Frame\s+Type\s*:\s*${ACCEPTABLE_FRAME_TYPE}\s*$$
  ^\s*Ingress\s+UnTagged\s+VLAN\s*\(\s*NATIVE\s*\)\s*:\s*${NATIVE_VLAN}\s*$$
  ^\s*Port\s+is\s+member\s+in:\s*$$ -> PartOfVlan
  ^\s*$$
  ^. -> Error

PartOfVlan
  ^\s*Vlan\s+Name\s+Egress\s+rule\s+Port\s+Membership\s+Type\s*$$
  ^(\s*-*)*\s*$$
  ^\s*${VLAN_ID}\s+${VLAN_NAME}\s+${EGRESS_RULE}\s+${INTERFACE_MEMBERSHIP_TYPE}\s*$$
  ^\s*Forbidden\s+VLANS:\s*$$ -> ForbiddenVlans
  ^\s*$$
  ^. -> Error

ForbiddenVlans
  ^\s*Vlan\s+Name\s*$$
  ^(\s*-*)*\s*$$
  ^\s*${FORBIDDEN_VLAN}\s+${FORBIDDEN_VLAN_NAME}\s*$$
  ^\s*Classification\s+rules:\s*$$ -> ClassificationRules
  ^\s*$$
  ^. -> Error

ClassificationRules
  ^\s*Mac\s+based\s+VLANs:\s*$$ -> MacBasedVlans
  ^\s*$$
  ^. -> Error

MacBasedVlans
  ^\s*Group\s+ID\s+Vlan\s+ID\s*$$
  ^(\s*-*)*\s*$$
  ^\s*${FORBIDDEN_VLAN}\s+${FORBIDDEN_VLAN_NAME}\s*$$
  ^\s*$$
  ^. -> Error
