package gen; import edu.neu.ccs.demeterf.lib.*; import edu.neu.ccs.demeterf.*; nogen List(X) = Cons(X) | Empty(X). nogen Cons(X) = X List(X). nogen Empty(X) = . nogen Option(X)= Some(X) | None(X). nogen Some(X) = X. nogen None(X) = . EdgeLabeledGraph(N,L1,L2) = List(Adjacency(N,L1,L2)). Adjacency(N,L1,L2) = N "successors" "(" List(NodeAndLabel(N,L1,L2)) ")". NodeAndLabel(N,L1,L2) = N L1 L2. NetworkFlowInstance = // Instance "instance" EdgeLabeledGraph(Node, EdgeCapacity, Option(EdgeFlow)) "source" Node "sink" Node. Node = String. EdgeCapacity = "c" int. Flow = // Solution "solution" EdgeLabeledGraph(Node, EdgeFlow, Nothing). EdgeFlow = "f" int. Nothing = . TestNetworkFlow = List(InstanceAndSolution) EOF. InstanceAndSolution = NetworkFlowInstance Option(Flow) Claim. Claim = "FlowClaim" "proposer" String "claim" "name" String NetworkFlowInstance "quality" Quality. Quality = double.