Beispiel #1
0
 def parse_binary(self, expr1, token, p):
     tag = token.tag
     q = binary_ops[tag]
     if q < p:
         return None
     self.consume()
     if tag not in right_binary_ops:
         q += 1
     expr2 = self.parse_exp(q)
     # flatten or associate
     if tag in nonassoc_binary_ops and expr1.get_head_name() == tag and not expr1.parenthesised:
         self.tokeniser.sntx_message(token.pos)
         raise InvalidSyntaxError()
     result = Node(tag, expr1, expr2)
     if tag in flat_binary_ops:
         result.flatten()
     return result
Beispiel #2
0
 def parse_binary(self, expr1, token, p):
     tag = token.tag
     q = binary_ops[tag]
     if q < p:
         return None
     self.consume()
     if tag not in right_binary_ops:
         q += 1
     expr2 = self.parse_exp(q)
     # flatten or associate
     if tag in nonassoc_binary_ops and expr1.get_head_name(
     ) == tag and not expr1.parenthesised:
         self.tokeniser.sntx_message(token.pos)
         raise InvalidSyntaxError()
     result = Node(tag, expr1, expr2)
     if tag in flat_binary_ops:
         result.flatten()
     return result