public void preprocess() {
		StringBuffer readyText = new StringBuffer(text.length());
		Pattern startBlock = Pattern.compile("/\\*");
		int start = 0;
		Matcher matcher = startBlock.matcher(text);
		// Remove block comments
		while (matcher.find(start)) {
			for (int i = matcher.end(); i < text.length()-1; i++) {
				if (text.charAt(i) == '*' && text.charAt(i+1) == '/') {
					readyText.append(text.substring(start, matcher.start()));
					start = i+2;
					break;
				}
			}
		} 
		readyText.append(text.substring(start, text.length()));
		text = readyText.toString();
		
		// Remove line comments
		readyText = new StringBuffer(text.length());
		Pattern line = Pattern.compile("//");
		start = 0;
		matcher = line.matcher(text);
		while (matcher.find(start)) {
			for (int i = matcher.end(); i < text.length()-1; i++) {
				if (text.charAt(i) == '\n' || text.charAt(i) == '\r') {
					readyText.append(text.substring(start, matcher.start()));
					start = i+1;
					break;
				}
			}
		}
		readyText.append(text.substring(start, text.length()));
		text = readyText.toString();
		
		preprocessed = true;
		System.out.println(text);
	}