Parses at least one edge, stops if any commas are found. We return
NESeq rather than Edges as the former allows us to be more precise that
at least one edge is required for a successful parse.
After we are done parsing all edges, we can combine them.