Class GenerateAdditionalNames

java.lang.Object
de.bottlecaps.markup.blitz.transform.Visitor
de.bottlecaps.markup.blitz.transform.GenerateAdditionalNames

public class GenerateAdditionalNames extends Visitor
Generate additional names, e.g. for extra rules introduced by BNF transformation.
  • Field Details

    • nameCharPattern

      private static final Pattern nameCharPattern
      IXML name character pattern.
    • grammar

      private final Grammar grammar
      The grammar.
    • names

      private final Set<String> names
      The set of rule names.
    • nameByRhs

      private final Map<Alts,String> nameByRhs
      Names by rule right hand side expression.
    • additionalNamePrefix

      private final String additionalNamePrefix
      Prefix for making newly generated names distinct from user-defined ones.
    • smallestContext

      private final Map<RangeSet,String> smallestContext
      The smallest context for each range set.
  • Constructor Details

    • GenerateAdditionalNames

      public GenerateAdditionalNames(Grammar grammar)
      Constructor.
      Parameters:
      grammar - the grammar
  • Method Details

    • visit

      public void visit(Alts a)
      Overrides:
      visit in class Visitor
    • addAdditionalNames

      private void addAdditionalNames(Term t, String... names)
    • visit

      public void visit(Charset c)
      Overrides:
      visit in class Visitor
    • visit

      public void visit(Insertion i)
      Overrides:
      visit in class Visitor
    • visit

      public void visit(Control c)
      Overrides:
      visit in class Visitor
    • getAdditionalName

      public String getAdditionalName(String proposal, Term term, String suffix)
      Get the additional name for a given term.
      Parameters:
      proposal - name proposal
      term - the term
      suffix - suffix to be appended
      Returns:
      the additional name
    • getAdditionalName

      public String getAdditionalName(String proposal, String suffix)
      Get the additional name for a given proposal.
      Parameters:
      proposal - name proposal
      suffix - suffix to be appended
      Returns:
      the additional name
    • needsProposalForName

      private boolean needsProposalForName(Charset c)
      Check if a charset needs a name proposal.
      Parameters:
      c - the charset
      Returns:
      true if a name proposal is needed