Class JTBJavaCCMojo

  • All Implemented Interfaces:
    org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo

    public class JTBJavaCCMojo
    extends AbstractJavaCCMojo
    Preprocesses ordinary grammar files (*.jtb) with JTB and passes the output to JavaCC in order to finally generate a parser with parse tree actions.

    Note: JTB requires Java 1.5 or higher. This goal will not work with earlier versions of the JRE.
    Since:
    2.4
    Version:
    $Id: JTBJavaCCMojo.java 8156 2008-11-26 18:20:19Z bentmann $
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.lang.Boolean descriptiveFieldNames
      Setting this option to true causes JTB to generate field names that reflect the structure of the tree instead of generic names like f0, f1 etc.
      private java.lang.String[] excludes
      A set of Ant-like exclusion patterns used to prevent certain files from being processing.
      private java.lang.String[] includes
      A set of Ant-like inclusion patterns used to select files from the source directory for processing.
      private java.io.File interimDirectory
      The directory where the visitor and AST node files generated by JTB will be stored.
      private java.lang.Boolean javadocFriendlyComments
      If true, all generated comments will be wrapped in <pre> tags so that they are formatted correctly in API docs.
      private java.lang.String nodePackageName
      This option specifies the package for the generated AST nodes.
      private java.lang.String nodeParentClass
      The qualified name of a user-defined class from which all AST nodes will inherit.
      private java.io.File outputDirectory
      The directory where the parser files generated by JavaCC will be stored.
      private java.lang.String packageName
      This option is short for nodePackageName = <packageName>.syntaxtree and visitorPackageName = <packageName>.visitor.
      private java.lang.Boolean parentPointers
      If true, all nodes will contain fields for its parent node.
      private java.lang.Boolean printer
      If true, JTB will generate a syntax tree dumping visitor.
      private java.lang.Boolean scheme
      If true, JTB will generate the following files to support the Schema programming language: Scheme records representing the grammar. A Scheme tree building visitor. Default value is false.
      private java.io.File sourceDirectory
      The directory where the JavaCC grammar files (*.jtb) are located.
      private java.lang.Boolean specialTokens
      If true, JTB will include JavaCC "special tokens" in the AST.
      private int staleMillis
      The granularity in milliseconds of the last modification date for testing whether a grammar file needs recompilation.
      private java.lang.Boolean supressErrorChecking
      If true, JTB will suppress its semantic error checking.
      private java.lang.String visitorPackageName
      This option specifies the package for the generated visitors.
      • Fields inherited from interface org.apache.maven.plugin.Mojo

        ROLE
    • Constructor Summary

      Constructors 
      Constructor Description
      JTBJavaCCMojo()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected java.io.File[] getCompileSourceRoots()
      Gets all the output directories to register with the project for compilation.
      protected java.lang.String[] getExcludes()
      Gets a set of Ant-like exclusion patterns used to unselect files from the source directory for processing.
      protected java.lang.String[] getIncludes()
      Gets a set of Ant-like inclusion patterns used to select files from the source directory for processing.
      private java.io.File getInterimDirectory()
      Gets the absolute path to the directory where the interim output from JTB will be stored.
      private java.lang.String getNodePackageName()
      Gets the effective package name for the AST node files.
      protected java.io.File getOutputDirectory()
      Gets the absolute path to the directory where the generated Java files for the parser will be stored.
      protected java.io.File getSourceDirectory()
      Gets the absolute path to the directory where the grammar files are located.
      protected int getStaleMillis()
      Gets the granularity in milliseconds of the last modification date for testing whether a source needs recompilation.
      private java.lang.String getVisitorPackageName()
      Gets the effective package name for the visitor files.
      private JTB newJTB()
      Creates a new facade to invoke JTB.
      protected void processGrammar​(GrammarInfo grammarInfo)
      Passes the specified grammar file through the tool.
      • Methods inherited from class org.apache.maven.plugin.AbstractMojo

        getLog, getPluginContext, setLog, setPluginContext
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • packageName

        private java.lang.String packageName
        This option is short for nodePackageName = <packageName>.syntaxtree and visitorPackageName = <packageName>.visitor. Note that this option takes precedence over nodePackageName and visitorPackageName if specified.
      • nodePackageName

        private java.lang.String nodePackageName
        This option specifies the package for the generated AST nodes. This value may use a leading asterisk to reference the package of the corresponding parser. For example, if the parser package is org.apache and this parameter is set to *.demo, the tree node classes will be located in the package org.apache.demo. Default value is *.syntaxtree.
      • visitorPackageName

        private java.lang.String visitorPackageName
        This option specifies the package for the generated visitors. This value may use a leading asterisk to reference the package of the corresponding parser. For example, if the parser package is org.apache and this parameter is set to *.demo, the visitor classes will be located in the package org.apache.demo. Default value is *.visitor.
      • supressErrorChecking

        private java.lang.Boolean supressErrorChecking
        If true, JTB will suppress its semantic error checking. Default value is false.
      • javadocFriendlyComments

        private java.lang.Boolean javadocFriendlyComments
        If true, all generated comments will be wrapped in <pre> tags so that they are formatted correctly in API docs. Default value is false.
      • descriptiveFieldNames

        private java.lang.Boolean descriptiveFieldNames
        Setting this option to true causes JTB to generate field names that reflect the structure of the tree instead of generic names like f0, f1 etc. Default value is false.
      • nodeParentClass

        private java.lang.String nodeParentClass
        The qualified name of a user-defined class from which all AST nodes will inherit. By default, AST nodes will inherit from the generated class Node.
      • parentPointers

        private java.lang.Boolean parentPointers
        If true, all nodes will contain fields for its parent node. Default value is false.
      • specialTokens

        private java.lang.Boolean specialTokens
        If true, JTB will include JavaCC "special tokens" in the AST. Default value is false.
      • scheme

        private java.lang.Boolean scheme
        If true, JTB will generate the following files to support the Schema programming language:
        • Scheme records representing the grammar.
        • A Scheme tree building visitor.
        Default value is false.
      • printer

        private java.lang.Boolean printer
        If true, JTB will generate a syntax tree dumping visitor. Default value is false.
      • sourceDirectory

        private java.io.File sourceDirectory
        The directory where the JavaCC grammar files (*.jtb) are located. It will be recursively scanned for input files to pass to JTB. The parameters includes and excludes can be used to select a subset of files.
      • interimDirectory

        private java.io.File interimDirectory
        The directory where the visitor and AST node files generated by JTB will be stored. The directory will be registered as a compile source root of the project such that the generated files will participate in later build phases like compiling and packaging.
      • outputDirectory

        private java.io.File outputDirectory
        The directory where the parser files generated by JavaCC will be stored. The directory will be registered as a compile source root of the project such that the generated files will participate in later build phases like compiling and packaging.
      • includes

        private java.lang.String[] includes
        A set of Ant-like inclusion patterns used to select files from the source directory for processing. By default, the patterns **/*.jj, **/*.JJ, **/*.jtb and **/*.JTB are used to select grammar files.
      • excludes

        private java.lang.String[] excludes
        A set of Ant-like exclusion patterns used to prevent certain files from being processing. By default, this set is empty such that no files are excluded.
      • staleMillis

        private int staleMillis
        The granularity in milliseconds of the last modification date for testing whether a grammar file needs recompilation.
    • Constructor Detail

      • JTBJavaCCMojo

        public JTBJavaCCMojo()
    • Method Detail

      • getSourceDirectory

        protected java.io.File getSourceDirectory()
        Gets the absolute path to the directory where the grammar files are located.
        Specified by:
        getSourceDirectory in class AbstractJavaCCMojo
        Returns:
        The absolute path to the directory where the grammar files are located, never null.
      • getIncludes

        protected java.lang.String[] getIncludes()
        Gets a set of Ant-like inclusion patterns used to select files from the source directory for processing.
        Specified by:
        getIncludes in class AbstractJavaCCMojo
        Returns:
        A set of Ant-like inclusion patterns used to select files from the source directory for processing, can be null if all files should be included.
      • getExcludes

        protected java.lang.String[] getExcludes()
        Gets a set of Ant-like exclusion patterns used to unselect files from the source directory for processing.
        Specified by:
        getExcludes in class AbstractJavaCCMojo
        Returns:
        A set of Ant-like inclusion patterns used to unselect files from the source directory for processing, can be null if no files should be excluded.
      • getOutputDirectory

        protected java.io.File getOutputDirectory()
        Gets the absolute path to the directory where the generated Java files for the parser will be stored.
        Specified by:
        getOutputDirectory in class AbstractJavaCCMojo
        Returns:
        The absolute path to the directory where the generated Java files for the parser will be stored, never null.
      • getStaleMillis

        protected int getStaleMillis()
        Gets the granularity in milliseconds of the last modification date for testing whether a source needs recompilation.
        Specified by:
        getStaleMillis in class AbstractJavaCCMojo
        Returns:
        The granularity in milliseconds of the last modification date for testing whether a source needs recompilation.
      • getInterimDirectory

        private java.io.File getInterimDirectory()
        Gets the absolute path to the directory where the interim output from JTB will be stored.
        Returns:
        The absolute path to the directory where the interim output from JTB will be stored.
      • getCompileSourceRoots

        protected java.io.File[] getCompileSourceRoots()
        Gets all the output directories to register with the project for compilation.
        Specified by:
        getCompileSourceRoots in class AbstractJavaCCMojo
        Returns:
        The compile source roots to register with the project, never null.
      • processGrammar

        protected void processGrammar​(GrammarInfo grammarInfo)
                               throws org.apache.maven.plugin.MojoExecutionException,
                                      org.apache.maven.plugin.MojoFailureException
        Passes the specified grammar file through the tool.
        Specified by:
        processGrammar in class AbstractJavaCCMojo
        Parameters:
        grammarInfo - The grammar info describing the grammar file to process, must not be null.
        Throws:
        org.apache.maven.plugin.MojoExecutionException - If the invocation of the tool failed.
        org.apache.maven.plugin.MojoFailureException - If the tool reported a non-zero exit code.
      • getNodePackageName

        private java.lang.String getNodePackageName()
        Gets the effective package name for the AST node files.
        Returns:
        The effective package name for the AST node files, never null.
      • getVisitorPackageName

        private java.lang.String getVisitorPackageName()
        Gets the effective package name for the visitor files.
        Returns:
        The effective package name for the visitor files, never null.
      • newJTB

        private JTB newJTB()
        Creates a new facade to invoke JTB. Most options for the invocation are derived from the current values of the corresponding mojo parameters. The caller is responsible to set the input file, output directories and packages on the returned facade.
        Returns:
        The facade for the tool invocation, never null.