code: def is_syntactic(expression):
      
      if isinstance(expression, Wildcard):
          return expression.fixed_size
      if isinstance(expression, Expression):
          return expression.is_syntactic
      if isinstance(expression, (AssociativeOperation, CommutativeOperation)):
          return False
      if isinstance(expression, Operation):
          return all(is_syntactic(o) for o in op_iter(expression))
      return True
docs: Check if the given expression is syntactic, i.e. it does not contain sequence wildcards or
      associative/commutative operations.