public void run()
    {
        if (!inputFile.exists())
        {
            return;
        }
        
        try
        {
            final FileReader reader = new FileReader(inputFile);
            parser = new TencTokenMaker(reader);
            parser.parse();
            
            syntaxTreeBuilder = new AbstractSyntaxTreeBuilder(parser);
            final Program program = syntaxTreeBuilder.build();
            
            System.out.println(program.toString());
            
            final Generator generator = new Generator(program);
            final List<AssemblyLine> assembly = generator.generate();
            
            List<String> lines = Lists.newLinkedList();
            for (AssemblyLine line : assembly)
            {
                if (line instanceof Comment && comments)
                {
                    lines.add(line.generate());
                }
                else
                {
                    lines.add(line.generate());
                }
            }
            
            IOUtils.writeLines(lines, null, new FileOutputStream(outputFile));
        }
        catch (final Exception e)
        {
            e.printStackTrace();
        }
    }