Class BaseAntlrNode<A extends BaseAntlrNode.AntlrToPmdParseTreeAdapter<N>,N extends AntlrNode<N>>

java.lang.Object
net.sourceforge.pmd.lang.ast.impl.antlr4.BaseAntlrNode<A,N>
Type Parameters:
A - Type of the underlying antlr node
N - Public interface (eg SwiftNode)
All Implemented Interfaces:
AntlrNode<N>, GenericNode<N>, Node, Reportable
Direct Known Subclasses:
BaseAntlrInnerNode, BaseAntlrTerminalNode

public abstract class BaseAntlrNode<A extends BaseAntlrNode.AntlrToPmdParseTreeAdapter<N>,N extends AntlrNode<N>> extends Object implements AntlrNode<N>
Base class for an antlr node. This implements the PMD interfaces only, not the antlr ones. It wraps an antlr node (they are linked both ways). Antlr primarily distinguishes ParserRuleContext for inner nodes, TerminalNode for nodes that wrap tokens (and can have no children), and ErrorNode, a subtype of TerminalNode. These each have a base class here, which refines the type of the underlying antlr node: BaseAntlrInnerNode, BaseAntlrTerminalNode and BaseAntlrErrorNode. These must be implemented in each language module with a class that also implements <N>.

During tree construction, the antlr runtime does its thing with the underlying antlr nodes. The PMD nodes are just wrappers around those, that respect the contract of GenericNode.

  • Constructor Details

    • BaseAntlrNode

      protected BaseAntlrNode()
  • Method Details

    • getFirstAntlrToken

      public abstract org.antlr.v4.runtime.Token getFirstAntlrToken()
    • getLastAntlrToken

      public abstract org.antlr.v4.runtime.Token getLastAntlrToken()
    • getTextRegion

      public TextRegion getTextRegion()
      Description copied from interface: Node
      Returns a region of text delimiting the node in the underlying text document. This does not necessarily match the report location.
      Specified by:
      getTextRegion in interface Node
    • getParent

      public N getParent()
      Description copied from interface: Node
      Returns the parent of this node, or null if this is the root of the tree.
      Specified by:
      getParent in interface GenericNode<A extends BaseAntlrNode.AntlrToPmdParseTreeAdapter<N>>
      Specified by:
      getParent in interface Node
      Returns:
      The parent of this node
    • getBeginLine

      public int getBeginLine()
      Specified by:
      getBeginLine in interface Node
    • getEndLine

      public int getEndLine()
      Specified by:
      getEndLine in interface Node
    • getBeginColumn

      public int getBeginColumn()
      Specified by:
      getBeginColumn in interface Node
    • getEndColumn

      public int getEndColumn()
      Specified by:
      getEndColumn in interface Node
    • getIndexInParent

      public int getIndexInParent()
      Description copied from interface: Node
      Returns the index of this node in its parent's children. If this node is a root node, returns -1.
      Specified by:
      getIndexInParent in interface Node
      Returns:
      The index of this node in its parent's children
    • getUserMap

      public DataMap<DataMap.DataKey<?,?>> getUserMap()
      Description copied from interface: Node
      Returns a data map used to store additional information on this node.
      Specified by:
      getUserMap in interface Node
      Returns:
      The user data map of this node
    • asAntlrNode

      protected abstract A asAntlrNode()