code: protected void addRule(String reducerString, String nonterminal, String document, String... rhs)
      {
          ExecutableElement reducer = null;
          if (reducerString != null && !reducerString.isEmpty())
          {
              reducer = El.getExecutableElement(reducerString);
              if (reducer == null)
              {
                  throw new IllegalArgumentException(reducerString+" method not found");
              }
          }
          addRule(reducer, nonterminal, document, false, parseRhs(rhs));
      }
docs: Adds new rule if the same rule doesn't exist already.
  @param nonterminal Left hand side of the rule.
  @param rhs Strings in BnfGrammarFactory format.
  @see BnfGrammarFactory