ProgramInput = "Network" InputNetwork "Traffic" InputNetwork "Initialize" "Util" InitAlg "Proximity" ProxAlg "Probability" ProbAlg "Flow" FlowAlg "Utilization" "Bias" "Factor" UtilAlg "Iterations" DemNumber. InputNetwork = ParList(InputAdjacency). InputAdjacency = InputNode ParList(InputNeighbor). InputNeighbor = InputNode ["with" DemReal]. InputNode = DemNumber. RoutingAlgorithm = Network Ring RoutingTable InitAlg ProxAlg ProbAlg FlowAlg UtilAlg DemNumber. Dummy = List(Commodity). Commodity = VNode List(VNodeTraff). VNodeTraff = VNode DemReal. RoutingTable = List(DagDest). DagDest = Dag VNode. Dag = List(DagAdjacency). DagAdjacency = DemReal DemReal VNode List(DagNeighbor). DagNeighbor = VNode DemReal DemReal DemNumber. InitAlg : InitConstant. InitConstant = "constant" "=" DemReal. ProxAlg : Greedy | EP | MP. Greedy = "greedy". EP = "ep". MP = "mp". ProbAlg : Priority. Priority = "priority". FlowAlg : Propagate | Simplex. Propagate = "propagate". Simplex = "simplex". UtilAlg : Factor0 | Factor1 | Factor2 | Factor3 | Factor4 . Factor0 = "bf0". Factor1 = "bf1". Factor2 = "bf2". Factor3 = "bf3". Factor4 = "bf4". Network = ParList(Adjacency). Adjacency = Node ParList(Neighbor) "mark" "=" DemNumber. Neighbor = Node ["with" DemReal]. Node = "ID" "=" DemNumber ParList(VNode). ParList(S) ~ "(" {S} ")". Tree = ParList(Tree_Adjacency). Tree_Adjacency = Node List(Node) "mark" "=" DemNumber. Ring = List(VirtualAdjacency) DemNumber. VirtualAdjacency = VNode DemReal DemReal DemReal List(VirtualNeighbor) List(VirtualNeighbor). VirtualNeighbor = VNode DemReal DemReal DemReal. VNode = "VID" "=" DemNumber Node. List(S) ~ {S}.