public static Lexical scanLexicon(String lexFilePath){		
		String line= "";
		iIdentifier out;
		PScanner scan = new PScanner(lexFilePath);
		HashMap<String, CharacterC> chars = new HashMap<String, CharacterC>();
		ArrayList<TokenC> tokens = new ArrayList<TokenC>();
		
		int state = 0; //state 0 = first comments, 1 = in characters, 2 = in identifiers.
		
		while((line = scan.getLine()) != null)
		{
			if(line.startsWith("%") || line.isEmpty())
			{
				if(state == 0)
					state = 1;
				else if(state == 1)
					state = 2;
			}
			else
				if(state == 1 || state == 0) // characters
				{
					if(state == 0) state = 1;
					
					//Create new char and parse line.
					CharacterC character = new CharacterC(line, chars);
					chars.put(character.getTitle(), character);
				}
				else if(state == 2) // identifiers
				{
					//create new token and parse line
					TokenC token = new TokenC(line);
					tokens.add(token);
				}			
		}
		//Create epsilon using @ symbol
		String epsilonStr = "$Epsilon [@]";
		chars.put("$Epsilon", new CharacterC(epsilonStr, chars));
		return new Lexical(tokens, chars);
	}