Libraries

 The introduction of the import directive in a grammar allows reuse of common grammar files
 as well as the ability to divide up functional components of large grammars. However it has
 caused some confusion in regard to the fact that generated vocabulary files (<<<*.tokens>>>) can also
 be searched for with the <<<<libDirectory>>>> directive.

 This has confused two separate functions and imposes a structure upon the layout of
 your grammar files in certain cases. If you have grammars that both use the import
 directive and also require the use of a vocabulary file then you will need to locate
 the grammar that generates the <<<.tokens>>> file alongside the grammar that uses it. This
 is because you will need to use the <<<<libDirectory>>>> directive to specify the
 location of your imported grammars and ANTLR will not find any vocabulary files in
 this directory.

 The <<<.tokens>>> files for any grammars are generated within the same output directory structure
 as the <<<.java>>> files. So, wherever the <<<.java>>> files are generated, you will also find the <<<.tokens>>>
 files. ANTLR looks for <<<.tokens>>> files in both the <<<<libDirectory>>>> and the output directory
 where it is placing the generated <<<.java>>> files. Hence when you locate the grammars that generate
 <<<.tokens>>> files in the same source directory as the ones that use the <<<.tokens>>> files, then
 the Maven plugin will find the expected <<<.tokens>>> files.

 The <<<<libDirectory>>>> is specified like any other directory parameter in Maven. Here is an
 example:

+--
<plugin>
    <groupId>org.antlr</groupId>
    <artifactId>antlr3-maven-plugin</artifactId>
    <version>${plugin.version}</version>

    <executions>
        <execution>
            <configuration>
                <goals>
                    <goal>antlr</goal>
                </goals>
                <libDirectory>src/main/antlr_imports</libDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>
+--



