private void processLine(String _line) {
		
		Scanner scanner = new Scanner(_line);
		
		// explode the line to tokens using whitespace as delimiter
		scanner.useDelimiter(" ");
		
		// while there are more tokens and no errors, do
		if (scanner.hasNext() && !encounteredError()) {
			
			if (waitingForPreferencesLine()) {
				
				// line begins with this token
				String firstToken = scanner.next();
				
				if (isCommentToken(firstToken)) {
					
					parseCommentLine(scanner);
					
				} else if(isPreferencesToken(firstToken)) {
					
					parsePreferencesLine(scanner);
					
				} else {
					
					mParserState = ParserState.ERROR;
					println("Error: unknown line before preference line");
					
				}
				
			} else if(waitingForClauseLine()) {
				
				parseClauseLine(scanner);

			}
			
		} else {
			
			mParserState = ParserState.ERROR;
			println("Error: can not parse -> " + _line);
			
		}
		
		scanner.close();
		
	}