patterns and matcher nfa python code
class Binary(Regex): def __init__(self, left, right, empty): Regex.__init__(self, empty) self.left = left self.right = right def reset(self): self.left.reset() self.right.reset() Regex.reset(self) class Alternative(Binary): def __init__(self, left, right): empty = left.empty or right.empty Binary.__init__(self, left, right, empty) def _shift(self, c, mark): marked_left = self.left.shift(c, mark) marked_right = self.right.shift(c, mark) return marked_left or marked_right
Source: morepypy.blogspot.com
patterns and matcher nfa python code
class Char(Regex): def __init__(self, c): Regex.__init__(self, False) self.c = c def _shift(self, c, mark): return mark and c == self.c
Source: morepypy.blogspot.com