def _parsePrimitive(self, source): f = source.peek() if f == "ε": return Epsilon.parse(source) elif f == "<": return NonTerminal.parse(source) elif f == "(": source.read() e = GrammarExpression.parse(source) source.match(")") return e else: return Terminal.parse(source)