public static void main(String[] args) throws Throwable
	{
		try
		{
			Options options = new Options();

			options.addOption("v", "verbose", false, "Enables verbose compiler output.");
			options.addOption("ee", "easterEgg", false, "Enables compiler easter eggs, DO NOT USE!");

			CommandLineParser parser = new BasicParser();
			CommandLine cmd = parser.parse(options, args);

			if(cmd.getArgs().length > 0)
			{
				int start = -1;
				while(true)
				{
					start++;
					if(options.getOption(cmd.getArgs()[start]) == null)
						break;
				}

				String[] sourceFiles = Arrays.copyOfRange(cmd.getArgs(), start, cmd.getArgs().length);

				// TODO
			}
			else
			{
				System.out.println("Expected source files, got none!");
				System.out.println("Usage: ebc [options] <source files>");
			}
		}
		catch(ParseException e)
		{
			e.printStackTrace();
		}

		/* ----- Testing ----- */
		Lexer lexer = Lexer.newInstance();
		Parser parser = Parser.newInstance();

		try(InputStream in = new FileInputStream("test.eb"))
		{
			lexer.reset(Utils.readAll(in));
		}

		List<Token> tokens = lexer.tokenize();
		parser.reset(tokens);
		SyntaxTree t = parser.parse();

		ASTPrettyPrinter.print(t);
	}