Class RegexAST

java.lang.Object
com.oracle.truffle.regex.tregex.parser.ast.RegexAST
All Implemented Interfaces:
StateIndex<RegexASTNode>, JsonConvertible

public final class RegexAST extends Object implements StateIndex<RegexASTNode>, JsonConvertible
  • Constructor Details

  • Method Details

    • getLanguage

      public RegexLanguage getLanguage()
    • getSource

      public RegexSource getSource()
    • getFlags

      public RegexFlags getFlags()
    • setFlags

      public void setFlags(RegexFlags flags)
    • getFlavorSpecificFlags

      public AbstractRegexObject getFlavorSpecificFlags()
    • setFlavorSpecificFlags

      public void setFlavorSpecificFlags(AbstractRegexObject flavorSpecificFlags)
    • getOptions

      public RegexOptions getOptions()
    • getEncoding

      public Encodings.Encoding getEncoding()
    • getRoot

      public Group getRoot()
    • setRoot

      public void setRoot(Group root)
    • getWrappedRoot

      public Group getWrappedRoot()
    • rootIsWrapped

      public boolean rootIsWrapped()
    • getNodeCount

      public Counter.ThresholdCounter getNodeCount()
    • getNumberOfNodes

      public int getNumberOfNodes()
    • getGroupCount

      public Counter.ThresholdCounter getGroupCount()
    • getNumberOfCaptureGroups

      public int getNumberOfCaptureGroups()
      Returns:
      the number of capturing groups in the AST, including group 0.
    • getQuantifierCount

      public int getQuantifierCount()
    • registerQuantifier

      public void registerQuantifier(QuantifiableTerm quantifiable)
    • getQuantifierArray

      public Token.Quantifier[] getQuantifierArray()
    • registerZeroWidthQuantifiable

      public void registerZeroWidthQuantifiable(QuantifiableTerm zeroWidthQuantifiable)
    • getZeroWidthQuantifiables

      public List<QuantifiableTerm> getZeroWidthQuantifiables()
    • getGroup

      public Group getGroup(int index)
    • getGroupByBoundaryIndex

      public Group getGroupByBoundaryIndex(int index)
    • getProperties

      public RegexProperties getProperties()
    • isLiteralString

      public boolean isLiteralString()
    • getNumberOfStates

      public int getNumberOfStates()
      Specified by:
      getNumberOfStates in interface StateIndex<RegexASTNode>
    • getId

      public int getId(RegexASTNode state)
      Specified by:
      getId in interface StateIndex<RegexASTNode>
    • getState

      public RegexASTNode getState(int id)
      Specified by:
      getState in interface StateIndex<RegexASTNode>
    • setIndex

      public void setIndex(RegexASTNode[] index)
    • getWrappedPrefixLength

      public int getWrappedPrefixLength()
      Returns:
      length of prefix possibly generated by createPrefix().
    • getEntryAfterPrefix

      public RegexASTNode getEntryAfterPrefix()
      Returns:
      first element of sequence of optional any-char matchers possibly generated by createPrefix().
    • getSubtrees

      public GlobalSubTreeIndex getSubtrees()
    • registerGroupWithGuards

      public void registerGroupWithGuards(Group group)
    • getGroupsWithGuards

      public GroupsWithGuardsIndex getGroupsWithGuards()
    • getReachableCarets

      public List<PositionAssertion> getReachableCarets()
    • getReachableDollars

      public List<PositionAssertion> getReachableDollars()
    • getNfaAnchoredInitialStates

      public StateSet<RegexAST,PositionAssertion> getNfaAnchoredInitialStates()
    • getHardPrefixNodes

      public StateSet<RegexAST,RegexASTNode> getHardPrefixNodes()
    • createRootNode

      public RegexASTRootNode createRootNode()
    • createBackReference

      public BackReference createBackReference(int[] groupNumbers)
    • getReferencedGroups

      public TBitSet getReferencedGroups()
    • isGroupReferenced

      public boolean isGroupReferenced(int groupNumber)
    • setGroupRecursivelyReferenced

      public void setGroupRecursivelyReferenced(int groupNumber)
    • isGroupRecursivelyReferenced

      public boolean isGroupRecursivelyReferenced(int groupNumber)
    • createCharacterClass

      public CharacterClass createCharacterClass(CodePointSet matcherBuilder)
    • createGroup

      public Group createGroup()
    • createCaptureGroup

      public Group createCaptureGroup(int groupNumber)
    • createConditionalBackReferenceGroup

      public Group createConditionalBackReferenceGroup(int referencedGroupNumber)
    • getConditionGroups

      public TBitSet getConditionGroups()
    • createLookAheadAssertion

      public LookAheadAssertion createLookAheadAssertion(boolean negated)
    • createLookBehindAssertion

      public LookBehindAssertion createLookBehindAssertion(boolean negated)
    • createAtomicGroup

      public AtomicGroup createAtomicGroup()
    • createNFAHelperNodes

      public void createNFAHelperNodes(RegexASTSubtreeRootNode rootNode)
    • createPositionAssertion

      public PositionAssertion createPositionAssertion(PositionAssertion.Type type)
    • createSequence

      public Sequence createSequence()
    • createSubexpressionCall

      public SubexpressionCall createSubexpressionCall(int groupNumber)
    • register

      public BackReference register(BackReference backReference)
    • register

      public CharacterClass register(CharacterClass characterClass)
    • register

      public Group register(Group group)
    • register

    • register

      public LookAheadAssertion register(LookAheadAssertion lookAheadAssertion)
    • register

      public LookBehindAssertion register(LookBehindAssertion lookBehindAssertion)
    • register

      public AtomicGroup register(AtomicGroup atomicGroup)
    • register

      public PositionAssertion register(PositionAssertion positionAssertion)
    • register

      public Sequence register(Sequence sequence)
    • register

      public SubexpressionCall register(SubexpressionCall subexpressionCall)
    • isNFAInitialState

      public boolean isNFAInitialState(RegexASTNode node)
    • getNFAUnAnchoredInitialState

      public MatchFound getNFAUnAnchoredInitialState(int prefixOffset)
    • getNFAAnchoredInitialState

      public PositionAssertion getNFAAnchoredInitialState(int prefixOffset)
    • createPrefix

      public void createPrefix()
      Inserts a prefix of matchers that match any characters at the beginning of the AST. The length of the prefix is determined by the look-behind assertions present in the regex. Any necessary context that could be matched by the look-behind assertions but not by the original regex can be captured by the prefix. Exemplary prefix: regex: /(?<=ab)/ -> prefix length: 2 -> result: /(?:[_any_][_any_](?:|[_any_](?:|[_any_])))(?<=ab)/ -> the non-optional [_any_] - matchers will be used if fromIndex > 0, the optional matchers will always be used
    • hidePrefix

      public void hidePrefix()
    • unhidePrefix

      public void unhidePrefix()
    • createGroupBoundaries

      public GroupBoundaries createGroupBoundaries(TBitSet updateIndices, TBitSet clearIndices, int lastGroup)
    • getSourceSections

      public List<com.oracle.truffle.api.source.SourceSection> getSourceSections(RegexASTNode node)
      Get a list of all source sections associated with the given RegexASTNode. The parser will map nodes to source sections in the following way:
    • addSourceSection

      public void addSourceSection(RegexASTNode node, com.oracle.truffle.api.source.SourceSection sourceSection)
    • addSourceSections

      public void addSourceSections(RegexASTNode node, Collection<com.oracle.truffle.api.source.SourceSection> src)
    • extractInnerLiteral

      public InnerLiteral extractInnerLiteral()
    • canTransformToDFA

      public boolean canTransformToDFA()
    • canTransformToDFAFailureReason

      public String canTransformToDFAFailureReason()
    • toJson

      public JsonValue toJson()
      Specified by:
      toJson in interface JsonConvertible
    • sourceSectionsToJson

      public static JsonArray sourceSectionsToJson(List<com.oracle.truffle.api.source.SourceSection> sourceSections)
    • sourceSectionsToJson

      public static JsonArray sourceSectionsToJson(Stream<com.oracle.truffle.api.source.SourceSection> sourceSections)