code: @Override
    protected void processGrammar (final GrammarInfo grammarInfo) throws MojoExecutionException, MojoFailureException
    {
      final File jjFile = grammarInfo.getGrammarFile ();
      final File jjDirectory = jjFile.getParentFile ();
  
      final File tempDirectory = getTempDirectory ();
  
      // setup output directory of parser file (*.java) generated by JavaCC
      final File parserDirectory = new File (tempDirectory, "parser");
  
      // generate parser files
      final JavaCC javacc = newJavaCC ();
      javacc.setInputFile (jjFile);
      javacc.setOutputDirectory (parserDirectory);
      javacc.run ();
  
      // copy parser files from JavaCC
      copyGrammarOutput (getOutputDirectory (),
                         grammarInfo.getParserPackage (),
                         parserDirectory,
                         grammarInfo.getParserName () + "*");
  
      // copy source files which are next to grammar unless the grammar resides in
      // an ordinary source root
      // (legacy support for custom sources)
      if (!isSourceRoot (grammarInfo.getSourceDirectory ()))
      {
        copyGrammarOutput (getOutputDirectory (), grammarInfo.getParserPackage (), jjDirectory, "*");
      }
  
      deleteTempDirectory (tempDirectory);
    }
docs: {@inheritDoc}