Exemplo n.º 1
0
 def parse(self, text):
     tokens = self._lex(text)
     assert self._match("message", tokens)
     n = tokens.pop(0)
     element = SchemaElement(name=n)
     self.schema_elements = [element]
     if self._la1("{", tokens):
         g = self._parse_grp(tokens)
         element.num_children = len(g)
     return self.schema_elements
Exemplo n.º 2
0
 def _parse_grp(self, tokens):
     g = []
     self._match("{", tokens)
     while not self._la1("}", tokens) and len(tokens) > 1:
         rt = FieldRepetitionType._NAMES_TO_VALUES[tokens.pop(0).upper()]
         t = tokens.pop(0)
         n = tokens.pop(0)
         element = SchemaElement(name=n, repetition_type=rt)
         self.schema_elements.append(element)
         g.append(element)
         if t != "group":
             assert self._match(";", tokens), "expect ';'"
             element.type = self._map_type(t)
         else:
             subg = self._parse_grp(tokens)
             element.num_children = len(subg)
     self._match("}", tokens)
     return g