docs: def _check_self_replicate(self, myntr):
          """
          For each Rule B -> c where c is a known terminal, this function
          searches for B occurences in rules with the form A -> B and sets
          A -> c.
          """
          # print 'BFS Dictionary Update - Self Replicate'
          find = 0
          for nonterm in self.grammar.grammar_nonterminals_map:
              for i in self.grammar.grammar_nonterminals_map[nonterm]:
                  if self.grammar.grammar_rules[i][0] not in self.resolved and not isinstance(
                          self.grammar.grammar_rules[i][1], (set, tuple)) \
                          and self.grammar.grammar_rules[i][1] == myntr:
                      self.resolved[self.grammar.grammar_rules[i][0]] = self.resolved[myntr]
                      if self._checkfinal(self.grammar.grammar_rules[i][0]):
                          return self.resolved[self.grammar.grammar_rules[i][0]]
                      if self.grammar.grammar_rules[i][0] not in self.bfs_queue:
                          self.bfs_queue.append(self.grammar.grammar_rules[i][0])
                      find = 1
          if find == 1:
              return 1
          return 0