import gll def loop(string): parser = gll.seq(gll.skip(gll.string("[")), gll.many(op), gll.skip(gll.string("]")), tag="loop") return parser(string) op = (gll.string("+", tag="add") | gll.string("-", tag="sub") | gll.string(".", tag="out") | gll.string(",", tag="in") | gll.string(">", tag="fwd") | gll.string("<", tag="bck") | loop) parser = gll.all(gll.many(op), tag="program")