public boolean lex(LexerSemantic lexerSemantic)
		throws IOException
	{
		int c = input.peek();
		boolean eof = (c == Input.EOF);
		boolean error = eof;
		
		if (error == false)	{
			Strategy.Item item = getNextLexerItem(null, c);
			error = (item == null || item.getTokenIdentifier() == null);

			if (error == false && lexerSemantic != null)
				loopResultTree(item.getResultTree(), lexerSemantic);

			c = input.peek();
			eof = (c == Input.EOF);
			error = (eof == false);
		}
		
		if (error)	{
			dump(System.err);
			System.err.println("Could not process character '"+(char)c+"' (int "+c+"), at line/column "+input.getScanLine()+"/"+input.getScanColumn()+", at offset "+input.getScanOffset());
		}

		return error == false;
	}