@Override public final RuleMatch[] match(List<AnalyzedSentence> sentences) { UnsyncStack<SymbolLocator> symbolStack = new UnsyncStack<>(); // the stack for pairing symbols UnsyncStack<SymbolLocator> ruleMatchStack = new UnsyncStack<>(); List<RuleMatch> ruleMatches = new ArrayList<>(); int startPosBase = 0; for (AnalyzedSentence sentence : sentences) { AnalyzedTokenReadings[] tokens = sentence.getTokensWithoutWhitespace(); for (int i = 1; i < tokens.length; i++) { for (int j = 0; j < startSymbols.length; j++) { if (fillSymbolStack(startPosBase, tokens, i, j, symbolStack, sentence)) { break; } } } for (AnalyzedTokenReadings readings : sentence.getTokens()) { startPosBase += readings.getToken().length(); } } for (SymbolLocator sLoc : symbolStack) { RuleMatch rMatch = createMatch(ruleMatches, ruleMatchStack, sLoc.getStartPos(), sLoc.getSymbol(), sLoc.getSentence()); if (rMatch != null) { ruleMatches.add(rMatch); } } return toRuleMatchArray(ruleMatches); }
@Override public final RuleMatch[] match(List<AnalyzedSentence> sentences) { UnsyncStack<SymbolLocator> symbolStack = new UnsyncStack<>(); // the stack for pairing symbols UnsyncStack<SymbolLocator> ruleMatchStack = new UnsyncStack<>(); List<RuleMatch> ruleMatches = new ArrayList<>(); int startPosBase = 0; for (AnalyzedSentence sentence : sentences) { AnalyzedTokenReadings[] tokens = sentence.getTokensWithoutWhitespace(); for (int i = 1; i < tokens.length; i++) { for (int j = 0; j < startSymbols.length; j++) { if (fillSymbolStack(startPosBase, tokens, i, j, symbolStack, sentence)) { break; } } } for (AnalyzedTokenReadings readings : sentence.getTokens()) { startPosBase += readings.getToken().length(); } } for (SymbolLocator sLoc : symbolStack) { RuleMatch rMatch = createMatch(ruleMatches, ruleMatchStack, sLoc.getStartPos(), sLoc.getSymbol(), sLoc.getSentence()); if (rMatch != null) { ruleMatches.add(rMatch); } } return toRuleMatchArray(ruleMatches); }