protected void loopResultTree(ResultTree result, LexerSemantic lexerSemantic)	{
		Set wantedNonterminals = lexerSemantic.getWantedNonterminals();
		Set ignoredNonterminals = lexerSemantic.getIgnoredNonterminals();
		String nonterminal = result.getRule().getNonterminal();
		
		if (nonterminal.startsWith(Token.ARTIFICIAL_NONTERMINAL_START_CHARACTER) == false &&
				(wantedNonterminals == null || wantedNonterminals.contains(nonterminal)) &&
				(ignoredNonterminals == null || ignoredNonterminals.contains(nonterminal) == false))
		{
			lexerSemantic.ruleEvaluated(result.getRule(), result);
		}
		
		for (int i = 0; i < result.getChildCount(); i++)	{
			Object child = result.getChild(i);
			if (child instanceof ResultTree)
				loopResultTree((ResultTree) child, lexerSemantic);
		}
	}