Class Reducer

java.lang.Object
eu.bandm.tools.tdom.runtime.BaseVisitor
eu.bandm.tools.d2d2.absy.Visitor
eu.bandm.tools.d2d2.base.Reducer
All Implemented Interfaces:
PCDataVisitor

public final class Reducer extends eu.bandm.tools.d2d2.absy.Visitor
Reduces a d2d definition text file ("ddf") given as a tdom Document_module into an umod Module and its sub-structures (= contained sub-modules and definitions). Only entry point after construction is reduce(MessageReceiver,int,Document_module). Global statements in the source (w.r.t. trimming, namespaces, local name mangling ruies, etc) are distributed to definitions, and applied there, or stored for later context-free inquiry.
Documentation texts are distributed to their targets. This is the only syntactic relation in the "ddf" format which requires "def before use".
Further checks are not done, esp. Identifier are not resolved but stored as Reference objects.
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    protected class 
    Distributes documentation text to defintions in the current module, descending into local definitions when required.
    protected static enum 
     
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    (package private) int
     
     
    protected String
     
    protected SourceItem
     
    (package private) String
     
    (package private) List<LocString>
     
    (package private) int
     
    (package private) Expression
     
    protected XRegExp
     
    protected Boolean
     
    (package private) Definition
     
    (package private) Enumeration
     
    protected Module
     
    (package private) XRegExp
     
    (package private) ImportItem
     
    protected int
     
    (package private) boolean
     
    (package private) boolean
     
    (package private) Boolean
     
     
    protected String
    Valid namespace default prefix, may be inherited.
    protected boolean
    Whether the default prefix is only for elements:
    protected String
    Locally set namespace default prefix, not inherited.
    All namespace decls, including the inherited.
    protected Set<String>
    The locally defined ones, which must be free of double prefix use.
    (package private) boolean
     
    (package private) boolean
     
    (package private) final Set<String>
     
    protected static final String
    <!ELEMENT nodetypedecl (cPUBLIC?, (cTAGS | cCHARS), identlist, (hGENERIC | hDISTRIBUTED | hEMPTY | grammarexpr), modifiers?)>
    protected String
     
    protected Module
     
    protected int
     
     

    Fields inherited from class eu.bandm.tools.tdom.runtime.BaseVisitor

    validating
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    _addToModule(Module host, SourceItem item, String kind)
     
    protected void
    Add Definition (Enum or Tags or Chars Parser) to currentscope (either to Module or (as a local definition) to a definition).
    static void
    Store a definition to the given module.
    protected boolean
     
    protected void
     
    protected void
    Is called for any definition: Local definitions first apply name mangling.
    protected void
    D2d only knows the combination "non-empty prefix and non-empty uri", or "empty prefix and empty uri".
    protected void
     
    protected boolean
     
    protected boolean
     
    protected void
     
    protected void
    Docu text and key have been stored in GLO variables by visit(El.._documentation).
    protected String
    recompose(eu.bandm.tools.d2d2.absy.Element_reference element)
    <!ELEMENT reference (ident+) >
    reduce(MessageReceiver<SimpleMessage<XMLDocumentIdentifier>> msg, int tracelevel, eu.bandm.tools.d2d2.absy.Document_module input)
    Translate the XML encoded parsing result into a d2d model structure.
    protected void
     
    (package private) void
     
    void
    visit(eu.bandm.tools.d2d2.absy.Element_atom.Choice_1_Alt_1 alt)
    <!ELEMENT atom ((hIMPLICIT?, reference) | insertion // IST RAUS | (hORDERED?, grammarexpr) | (hGT?, grammarexpr) | gwrapper | stringconst | deznum | hexnum | charset | (hCHARS, trimming?)) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_atom.Choice_1_Alt_9 alt)
    <!ELEMENT hCHARS EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_cAS element)
    <!ELEMENT cAS EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_cDATA element)
    <!ELEMENT cDATA EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_cEMPTY element)
    <!ELEMENT cEMPTY EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_cFIRST element)
    <!ELEMENT cFIRST EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_charset element)
    <!ELEMENT charset (#PCDATA) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_cNONE element)
    <!ELEMENT cNONE EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_cNUMERIC element)
    <!ELEMENT cNUMERIC EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_cPUBLIC element)
    <!ELEMENT cPUBLIC EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_cTRIMMED element)
    <!ELEMENT cTRIMMED EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_cUNTRIMMED element)
    <!ELEMENT cUNTRIMMED EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_cVERBATIM element)
    <!ELEMENT cVERBATIM EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_defaultGroup element)
    <!ELEMENT defaultGroup ((%defaultDef;)*, (module | modline | defaultGroup)* ) >
    Default Groups allow to distribute modifiers (mangling mode, text trimming) to sub-ranges of definitions of a module.
    void
    visit(eu.bandm.tools.d2d2.absy.Element_deznum element)
    <!ELEMENT deznum (#PCDATA) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_doctext element)
     
    void
    visit(eu.bandm.tools.d2d2.absy.Element_documentation element)
    <!ELEMENT documentation (ident, localreflist?, (doctext|longdoctext) ) >
    The identifier is the "key" for the documentation, like "user_en" or "to_xhtml_1_0".
    void
    visit(eu.bandm.tools.d2d2.absy.Element_editspec element)
    <!ELEMENT editspec (id_or_string) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_enum_modif el)
    private enum_modif: "with" "xmlrep" (cEMPTY)? (xmlrep_att|xmlrep_el) (EQUALS! stringconst)? (cNUMERIC | cFIRST "name" |cAS "is" ) ?; <!ELEMENT enum_modif (cEMPTY?, (xmlrep_att | xmlrep_el), stringconst?, (cNUMERIC | cFIRST | cAS)?) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_enumdecl element)
    <!ELEMENT enumdecl (ident, (hGENERIC | enumlist), enum_modif?) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_enumitem element)
    <!ELEMENT enumitem ((ident | stringconst), deznum?) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_exklam el)
    <!ELEMENT exklam EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_galt el)
    <!ELEMENT galt (gseq, galt?) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_gc_cut el)
    <!ELEMENT gc_cut (gc_minus, gc_cut?) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_gc_minus el)
    <!ELEMENT gc_minus (gc_range, gc_minus?) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_gc_or el)
    <!ELEMENT gc_or (gc_cut, gc_or?) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_gc_range el)
    <!ELEMENT gc_range (gprim, gprim?) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_globaltrimming element)
    <!ELEMENT globaltrimming (trimming) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_gperm el)
    <!ELEMENT gperm (gtight, gperm?) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_gprim el)
    <!ELEMENT gprim (substituted, (star | plus | tstar | tplus | quest)?, exklam?)>
    void
    visit(eu.bandm.tools.d2d2.absy.Element_greedyAtom sa)
    <!ELEMENT greedyAtom (greedy, atom) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_gseq el)
    <!ELEMENT gseq (gperm, gseq?) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_gtight el)
    <!ELEMENT gtight (gc_or, gtight?) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_gwrapper element)
    <!ELEMENT gwrapper (ident, grammarexpr) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_hDISTRIBUTED element)
    <!ELEMENT hDISTRIBUTED EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_hEMPTY element)
    <!ELEMENT hEMPTY EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_hexnum element)
    <!ELEMENT hexnum (#PCDATA) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_hGENERIC element)
    <!ELEMENT hGENERIC EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_hIMPLICIT element)
    <!ELEMENT hIMPLICIT EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_hNONE element)
    <!ELEMENT hNONE EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_ident element)
    <!ELEMENT ident (#PCDATA) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_identlist element)
    <!ELEMENT identlist (ident+) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_importcmd element)
    <!ELEMENT importcmd (ident, (hGENERIC | modadress), modsubsts) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_insertion element)
    <!ELEMENT insertion (atom) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_joinstring element)
    <!ELEMENT joinstring (stringconst) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_localnodes element)
    <!ELEMENT localnodes (nodetypedecl*) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_longdoctext element)
     
    void
    visit(eu.bandm.tools.d2d2.absy.Element_modsubst element)
    <!ELEMENT modsubst (reference?, substitution) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_module element)
    Save and reset global registers; create and store new growingModule; descend into definitions in the source text; finally restore global registers.
    void
    visit(eu.bandm.tools.d2d2.absy.Element_namespacedecl element)
    <!ELEMENT namespacedecl (ident, stringconst, (namespacedefault | namespaceelementonlydefault )?) > namespaces contains also the inherited namespace maplets.
    void
    visit(eu.bandm.tools.d2d2.absy.Element_nodetypedecl element)
    Descend into source text for the grammar expression, setting registers (isgeneric, expr, ...).
    On return build one new XRegExp accordingly, store it to growingDef and visit further modifiers, which store directly into this ("xmlSpec", "inputMode", "postProcessor").
    Clone it for all identifiers in the and calculate its XML tag.
    Finally parse local definitions recursively.
    void
    visit(eu.bandm.tools.d2d2.absy.Element_nomangling element)
    <!ELEMENT nomangling EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_plus element)
    <!ELEMENT plus EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_postprocessor element)
    <!ELEMENT postprocessor (stringconst) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_quest element)
    <!ELEMENT quest EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_reference element)
    <!ELEMENT reference (ident+) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_star el)
    <!ELEMENT star EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_stringconst element)
    <!ELEMENT stringconst (#PCDATA) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_substituted el)
    <!ELEMENT substituted (atom, substitution*) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_substitution el)
    <!ELEMENT substitution ((grammarexpr | hNONE), ident) >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_tplus element)
    <!ELEMENT tplus EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_tstar element)
    <!ELEMENT tstar EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_upcase element)
    <!ELEMENT upcase EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_xmlrep_att element)
    <!ELEMENT xmlrep_att EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_xmlrep_el element)
    <!ELEMENT xmlrep_el EMPTY >
    void
    visit(eu.bandm.tools.d2d2.absy.Element_xmlspec element)
     
    void
    visit(eu.bandm.tools.d2d2.absy.Element_xmlspec.Seq_1 seq)
     
    protected void
    warning(int level, Location<XMLDocumentIdentifier> loc, String s, Object... args)
     

    Methods inherited from class eu.bandm.tools.d2d2.absy.Visitor

    visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit, visit

    Methods inherited from class eu.bandm.tools.tdom.runtime.BaseVisitor

    visit

    Methods inherited from class java.lang.Object

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

    • tracelevel

      protected int tracelevel
    • msg

    • toplevelmodule

      protected Module toplevelmodule
    • growingModule

      protected Module growingModule
    • namespaces

      protected CheckedMap_RD<String,String> namespaces
      All namespace decls, including the inherited.
    • namespaces_local

      protected Set<String> namespaces_local
      The locally defined ones, which must be free of double prefix use.
    • namespaceDefault_elOnly

      protected boolean namespaceDefault_elOnly
      Whether the default prefix is only for elements:
    • namespaceDefault

      protected String namespaceDefault
      Valid namespace default prefix, may be inherited.
    • namespaceDefault_local

      protected String namespaceDefault_local
      Locally set namespace default prefix, not inherited.
    • globaltrim

      protected Boolean globaltrim
    • currentScope

      protected SourceItem currentScope
    • currentManglingMode

      protected Reducer.manglingMode currentManglingMode
    • currentManglingString

      protected String currentManglingString
    • importItem2modify

      ImportItem importItem2modify
    • countlocals

      int countlocals
    • isgeneric

      boolean isgeneric
    • isdistributed

      boolean isdistributed
    • expr

    • growingDef

      Definition growingDef
    • growingXRegExp

      XRegExp growingXRegExp
    • prototypeName

      protected static final String prototypeName
      <!ELEMENT nodetypedecl (cPUBLIC?, (cTAGS | cCHARS), identlist, (hGENERIC | hDISTRIBUTED | hEMPTY | grammarexpr), modifiers?)>
      See Also:
    • firstDef

      protected XRegExp firstDef
    • xmlspec_loc

      protected Location<XMLDocumentIdentifier> xmlspec_loc
    • postProcTested

      final Set<String> postProcTested
    • growingEnum

      Enumeration growingEnum
    • numImpl

      boolean numImpl
    • numExpl

      boolean numExpl
    • enumAutoNum

      int enumAutoNum
    • stringValue

      protected String stringValue
    • intValue

      protected int intValue
    • localtrim

      Boolean localtrim
    • dockey

      String dockey
    • docs

  • Constructor Details

    • Reducer

      public Reducer()
  • Method Details

    • reduce

      @Opt public @Opt Module reduce(MessageReceiver<SimpleMessage<XMLDocumentIdentifier>> msg, int tracelevel, eu.bandm.tools.d2d2.absy.Document_module input)
      Translate the XML encoded parsing result into a d2d model structure.
      Returns:
      null only if input document is empty.
    • error

      protected void error(Location<XMLDocumentIdentifier> loc, String s, Object... args)
    • warning

      protected void warning(int level, Location<XMLDocumentIdentifier> loc, String s, Object... args)
    • addToModule

      public static void addToModule(MessageReceiver<SimpleMessage<XMLDocumentIdentifier>> msg, Module host, SourceItem item, String kind)
      Store a definition to the given module. ImportItems, (Sub-)Modules and Definitions (=Enums, Chars and Tags Parser) can be added. They are stored to different maps, but must have unique names over all.
      (Made public and with explicit message channel for later re-construction of synthetic definitions, e.g. from Parser sub-particles.)
    • _addToModule

      protected void _addToModule(Module host, SourceItem item, String kind)
    • addToContext

      protected void addToContext(Definition newdef, String kind)
      Add Definition (Enum or Tags or Chars Parser) to currentscope (either to Module or (as a local definition) to a definition).
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_module element)
      Save and reset global registers; create and store new growingModule; descend into definitions in the source text; finally restore global registers.
      Esp.: Namespace declarations are inherited, but NOT the default name space.
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_importcmd element)
      <!ELEMENT importcmd (ident, (hGENERIC | modadress), modsubsts) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_modsubst element)
      <!ELEMENT modsubst (reference?, substitution) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_namespacedecl element)
      <!ELEMENT namespacedecl (ident, stringconst, (namespacedefault | namespaceelementonlydefault )?) > namespaces contains also the inherited namespace maplets. namespaces_local only those explicitly defined on this module level, which must not have double defs.
      ATTENTION: for valid xslt generation, the ns mappings must CURRENTLY be non-conflicting. ATTENTION: since ns are now (20150319) stored in the model, the visitor registers can be simplified !
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • defineXmlNamespaceTag

      protected void defineXmlNamespaceTag(Location<XMLDocumentIdentifier> loc, Definition def, String qname)
      D2d only knows the combination "non-empty prefix and non-empty uri", or "empty prefix and empty uri". The former is achieved either by an explicit "a:b" in the declaration of the element, or by a "is default" appended to a namespace prefix+uri declaration with the module.
      (This default can be restricted to elements, not attributes, therefore ASSUME that .xml_kind is already set !
      Only when both are missing, a non-namespace-name is constructed here.
    • constructMangledXmlTag

      protected void constructMangledXmlTag(Location<XMLDocumentIdentifier> loc, Definition def)
      Is called for any definition: Local definitions first apply name mangling. Afterwards namespace defs are applied.
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_nodetypedecl element)
      Descend into source text for the grammar expression, setting registers (isgeneric, expr, ...).
      On return build one new XRegExp accordingly, store it to growingDef and visit further modifiers, which store directly into this ("xmlSpec", "inputMode", "postProcessor").
      Clone it for all identifiers in the and calculate its XML tag.
      Finally parse local definitions recursively.
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_hGENERIC element)
      <!ELEMENT hGENERIC EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_hDISTRIBUTED element)
      <!ELEMENT hDISTRIBUTED EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_cPUBLIC element)
      <!ELEMENT cPUBLIC EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_hEMPTY element)
      <!ELEMENT hEMPTY EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_identlist element)
      <!ELEMENT identlist (ident+) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_xmlrep_att element)
      <!ELEMENT xmlrep_att EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_xmlrep_el element)
      <!ELEMENT xmlrep_el EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_cNONE element)
      <!ELEMENT cNONE EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_cDATA element)
      <!ELEMENT cDATA EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_xmlspec element)
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_xmlspec.Seq_1 seq)
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_editspec element)
      <!ELEMENT editspec (id_or_string) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_cVERBATIM element)
      <!ELEMENT cVERBATIM EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • testPostProcClass

      void testPostProcClass(Location<XMLDocumentIdentifier> loc, String s)
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_postprocessor element)
      <!ELEMENT postprocessor (stringconst) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_localnodes element)
      <!ELEMENT localnodes (nodetypedecl*) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • checkNumberMode

      protected void checkNumberMode(boolean hasNumber, Location<XMLDocumentIdentifier> loc)
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_enumdecl element)
      <!ELEMENT enumdecl (ident, (hGENERIC | enumlist), enum_modif?) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • checkEnumItemValid

      protected boolean checkEnumItemValid(String s)
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_enumitem element)
      <!ELEMENT enumitem ((ident | stringconst), deznum?) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_enum_modif el)
      private enum_modif: "with" "xmlrep" (cEMPTY)? (xmlrep_att|xmlrep_el) (EQUALS! stringconst)? (cNUMERIC | cFIRST "name" |cAS "is" ) ?; <!ELEMENT enum_modif (cEMPTY?, (xmlrep_att | xmlrep_el), stringconst?, (cNUMERIC | cFIRST | cAS)?) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_cNUMERIC element)
      <!ELEMENT cNUMERIC EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_cFIRST element)
      <!ELEMENT cFIRST EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_cAS element)
      <!ELEMENT cAS EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_cEMPTY element)
      <!ELEMENT cEMPTY EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_galt el)
      <!ELEMENT galt (gseq, galt?) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • isNonTightSeq

      protected boolean isNonTightSeq(Expression expr)
    • isTightSeq

      protected boolean isTightSeq(Expression expr)
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_gseq el)
      <!ELEMENT gseq (gperm, gseq?) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_gperm el)
      <!ELEMENT gperm (gtight, gperm?) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_gtight el)
      <!ELEMENT gtight (gc_or, gtight?) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_gc_or el)
      <!ELEMENT gc_or (gc_cut, gc_or?) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_gc_cut el)
      <!ELEMENT gc_cut (gc_minus, gc_cut?) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_gc_minus el)
      <!ELEMENT gc_minus (gc_range, gc_minus?) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_gc_range el)
      <!ELEMENT gc_range (gprim, gprim?) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_gprim el)
      <!ELEMENT gprim (substituted, (star | plus | tstar | tplus | quest)?, exklam?)>
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_exklam el)
      <!ELEMENT exklam EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_star el)
      <!ELEMENT star EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_plus element)
      <!ELEMENT plus EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_tstar element)
      <!ELEMENT tstar EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_tplus element)
      <!ELEMENT tplus EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_quest element)
      <!ELEMENT quest EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_substituted el)
      <!ELEMENT substituted (atom, substitution*) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_substitution el)
      <!ELEMENT substitution ((grammarexpr | hNONE), ident) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_hNONE element)
      <!ELEMENT hNONE EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_atom.Choice_1_Alt_1 alt)
      <!ELEMENT atom ((hIMPLICIT?, reference) | insertion // IST RAUS | (hORDERED?, grammarexpr) | (hGT?, grammarexpr) | gwrapper | stringconst | deznum | hexnum | charset | (hCHARS, trimming?)) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_greedyAtom sa)
      <!ELEMENT greedyAtom (greedy, atom) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_hIMPLICIT element)
      <!ELEMENT hIMPLICIT EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_insertion element)
      <!ELEMENT insertion (atom) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_gwrapper element)
      <!ELEMENT gwrapper (ident, grammarexpr) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_stringconst element)
      <!ELEMENT stringconst (#PCDATA) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_deznum element)
      <!ELEMENT deznum (#PCDATA) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_hexnum element)
      <!ELEMENT hexnum (#PCDATA) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_charset element)
      <!ELEMENT charset (#PCDATA) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_atom.Choice_1_Alt_9 alt)
      <!ELEMENT hCHARS EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_ident element)
      <!ELEMENT ident (#PCDATA) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • recompose

      protected String recompose(eu.bandm.tools.d2d2.absy.Element_reference element)
      <!ELEMENT reference (ident+) >
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_reference element)
      <!ELEMENT reference (ident+) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_defaultGroup element)
      <!ELEMENT defaultGroup ((%defaultDef;)*, (module | modline | defaultGroup)* ) >
      Default Groups allow to distribute modifiers (mangling mode, text trimming) to sub-ranges of definitions of a module.
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_joinstring element)
      <!ELEMENT joinstring (stringconst) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_upcase element)
      <!ELEMENT upcase EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_nomangling element)
      <!ELEMENT nomangling EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_globaltrimming element)
      <!ELEMENT globaltrimming (trimming) >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_cTRIMMED element)
      <!ELEMENT cTRIMMED EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_cUNTRIMMED element)
      <!ELEMENT cUNTRIMMED EMPTY >
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • putDocu

      protected void putDocu(SourceItem item)
      Docu text and key have been stored in GLO variables by visit(El.._documentation).
    • putDocu

      protected void putDocu(Enumeration e, String item)
    • splitdoctext

      protected void splitdoctext(String text, Location<XMLDocumentIdentifier> startloc)
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_doctext element)
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_longdoctext element)
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor
    • visit

      public void visit(eu.bandm.tools.d2d2.absy.Element_documentation element)
      <!ELEMENT documentation (ident, localreflist?, (doctext|longdoctext) ) >
      The identifier is the "key" for the documentation, like "user_en" or "to_xhtml_1_0".
      Iff the localreflist is empty, then the doc goes to the module itself, otherwise to the definitions listed.
      They must already have been parsed, ie. here rules "def before ref"!
      Overrides:
      visit in class eu.bandm.tools.d2d2.absy.Visitor