private static List getNextGrammarNodesWithWords(GrammarNode grammarNode) { ArrayList arrayList = new ArrayList(); GrammarArc[] successors = grammarNode.getSuccessors(); int num = successors.Length; for (int i = 0; i < num; i++) { GrammarArc grammarArc = successors[i]; GrammarNode grammarNode2 = grammarArc.getGrammarNode(); if (grammarNode2.getAlternatives().Length == 0) { if (grammarNode2.isFinalNode()) { arrayList.add(grammarNode2); } else { arrayList.addAll(GrammarPoint.getNextGrammarNodesWithWords(grammarNode2)); } } else { arrayList.add(grammarNode2); } } return(arrayList); }
private void collectNextUnits(GrammarNode grammarNode, Set set, Set set2) { if (set.contains(grammarNode)) { return; } set.add(grammarNode); if (grammarNode.isFinalNode()) { set2.add(UnitManager.__SILENCE); } else if (!grammarNode.isEmpty()) { Word word = grammarNode.getWord(); Pronunciation[] pronunciations = word.getPronunciations(); Pronunciation[] array = pronunciations; int i = array.Length; for (int j = 0; j < i; j++) { Pronunciation pronunciation = array[j]; set2.add(pronunciation.getUnits()[0]); } } else { GrammarArc[] successors = grammarNode.getSuccessors(); GrammarArc[] array2 = successors; int num = array2.Length; for (int i = 0; i < num; i++) { GrammarArc grammarArc = array2[i]; GrammarNode grammarNode2 = grammarArc.getGrammarNode(); this.collectNextUnits(grammarNode2, set, set2); } } }