def _compile(self, cont): # In words: take `x` and split to `x` and `cont` split = Split() x = self.x._compile(split) if self.greedy: split.succ = x split.split = cont else: split.succ = cont split.split = x # `Star` would return `split` return x
def _compile(self, cont): # In words: split to (`x` and return to split) and `cont` split = Split() x = self.x._compile(split) if self.greedy: split.succ = x split.split = cont else: split.succ = cont split.split = x # `Plus` would return `x` return split
def _compile(self, cont): a = self.a._compile(cont) b = self.b._compile(cont) return Split(a, b)
def _compile(self, cont): xcode = self.x._compile(cont) if self.greedy: return Split(xcode, cont) else: return Split(cont, xcode)