def atomic_parser(self, s, i): # note: no checking for multiple matches... for r in self._parse_cache.keys(): (m_group, new_i) = parsing.consume_pattern(s, i, r) if m_group is None: continue return (self._parse_cache[r], new_i) raise TypeParseError("Unknown atomic type", s, i)
def parse(cls, s, i, parse_control_fun): (m_group, new_i) = parsing.consume_pattern(s, i, vartype_regex) if m_group is None: return (None, i) else: return (VariableType(m_group), new_i)