<?xml version='1.0' encoding='ISO-8859-1' standalone='no'?>
<!DOCTYPE interface-description SYSTEM 'file:///usr/pkgsrc/lang/oo2c/work.macaroon/oo2c_32-2.0.11/rsrc/OOC/xml/interface-description.dtd'>
<interface-description name='StringSearch:RegexpParser' id=''>
  <import-decl name='Object' id='Object' export='no' module='Object'/>
  <import-decl name='StringSearch' id='StringSearch' export='no' module='StringSearch'/>
  <const-decl name='backslash' id='backslash' export='yes' value='unknown'/>
  <const-decl name='sizeCHAR' id='sizeCHAR' export='yes' value='unknown'/>
  <const-decl name='sizeSET' id='sizeSET' export='yes' value='unknown'/>
  <type-decl name='FactorType' id='FactorType' export='yes'>
    <type>
      <type-name module='#predef' name='SHORTINT'/>
    </type>
  </type-decl>
  <const-decl name='matchGroup' id='matchGroup' export='yes' value='unknown'/>
  <const-decl name='matchChar' id='matchChar' export='yes' value='unknown'/>
  <const-decl name='matchCharIgnoreCase' id='matchCharIgnoreCase' export='yes' value='unknown'/>
  <const-decl name='matchAnyButNewline' id='matchAnyButNewline' export='yes' value='unknown'/>
  <const-decl name='matchAtFirstChar' id='matchAtFirstChar' export='yes' value='unknown'/>
  <const-decl name='matchAfterLastChar' id='matchAfterLastChar' export='yes' value='unknown'/>
  <const-decl name='matchSet' id='matchSet' export='yes' value='unknown'/>
  <const-decl name='matchSetInverted' id='matchSetInverted' export='yes' value='unknown'/>
  <type-decl name='CharSet' id='CharSet' export='yes'>
    <type>
      <pointer>
        <pointer-base>
          <array>
            <length/>
            <element-type>
              <type-name module='#predef' name='SET'/>
            </element-type>
          </array>
        </pointer-base>
      </pointer>
    </type>
  </type-decl>
  <type-decl name='QuantifierType' id='QuantifierType' export='yes'>
    <oberon-doc>
      <summary>One of <oberon-const href='#exactlyOnce'>exactlyOnce</oberon-const>, <oberon-const href='#zeroOrOnceGreedy'>zeroOrOnceGreedy</oberon-const>, <oberon-const href='#zeroOrMoreGreedy'>zeroOrMoreGreedy</oberon-const>, or <oberon-const href='#onceOrMoreGreedy'>onceOrMoreGreedy</oberon-const>.</summary>
      <p pad-after='yes' no-indent='yes'>One of <oberon-const href='#exactlyOnce'>exactlyOnce</oberon-const>, <oberon-const href='#zeroOrOnceGreedy'>zeroOrOnceGreedy</oberon-const>, <oberon-const href='#zeroOrMoreGreedy'>zeroOrMoreGreedy</oberon-const>, or <oberon-const href='#onceOrMoreGreedy'>onceOrMoreGreedy</oberon-const>.</p>
    </oberon-doc>
    <type>
      <type-name module='#predef' name='SHORTINT'/>
    </type>
  </type-decl>
  <const-decl name='exactlyOnce' id='exactlyOnce' export='yes' value='unknown'>
    <oberon-doc>
      <summary>The expression must match exactly once.</summary>
      <p pad-after='yes' no-indent='yes'>The expression must match exactly once.  Example: <samp>a</samp>.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='zeroOrOnceGreedy' id='zeroOrOnceGreedy' export='yes' value='unknown'>
    <oberon-doc>
      <summary>The expression can match at most once, and the longest match wins.</summary>
      <p pad-after='yes' no-indent='yes'>The expression can match at most once, and the longest match wins.  Example: <samp>a?</samp>.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='zeroOrMoreGreedy' id='zeroOrMoreGreedy' export='yes' value='unknown'>
    <oberon-doc>
      <summary>The expression must match zero or more times.</summary>
      <p pad-after='yes' no-indent='yes'>The expression must match zero or more times.  The longest match wins.  Example: <samp>a*</samp>.</p>
    </oberon-doc>
  </const-decl>
  <const-decl name='onceOrMoreGreedy' id='onceOrMoreGreedy' export='yes' value='unknown'>
    <oberon-doc>
      <summary>The expression must match one or more times.</summary>
      <p pad-after='yes' no-indent='yes'>The expression must match one or more times.  The longest match wins.  Example: <samp>a+</samp>.</p>
    </oberon-doc>
  </const-decl>
  <type-decl name='GroupId' id='GroupId' export='yes'>
    <type>
      <type-name module='#predef' name='SHORTINT'/>
    </type>
  </type-decl>
  <procedure name='UpperLower' id='UpperLower' export='yes'>
    <formal-parameters>
      <parameter-decl name='ch' id='UpperLower.ch' export='no' variable-parameter='no'>
        <type>
          <type-name module='#predef' name='CHAR'/>
        </type>
      </parameter-decl>
      <parameter-decl name='upper' id='UpperLower.upper' export='no' variable-parameter='yes'>
        <type>
          <type-name module='#predef' name='CHAR'/>
        </type>
      </parameter-decl>
      <parameter-decl name='lower' id='UpperLower.lower' export='no' variable-parameter='yes'>
        <type>
          <type-name module='#predef' name='CHAR'/>
        </type>
      </parameter-decl>
    </formal-parameters>
  </procedure>
  <import-decl name='-RT0' id='-RT0' export='no' module='RT0'/>
  <import-decl name='-Object' id='-Object' export='no' module='Object'/>
  <import-decl name='-Exception' id='-Exception' export='no' module='Exception'/>
  <class name='Factor'>
    <type-decl name='Factor' id='Factor' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='FactorDesc' href='#FactorDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='FactorDesc' id='FactorDesc' export='yes'>
      <type>
        <record>
          <field-decl name='type' id='FactorDesc.type' export='read-only'>
            <oberon-doc>
              <summary>Determines how the factor is matched against input.</summary>
              <p pad-after='yes' no-indent='yes'>Determines how the factor is matched against input.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='FactorType'/>
            </type>
          </field-decl>
          <field-decl name='char' id='FactorDesc.char' export='read-only'>
            <oberon-doc>
              <summary>For a character match, this field holds the expected character.</summary>
              <p pad-after='yes' no-indent='yes'>For a character match, this field holds the expected character.  Otherwise, it is <code>0X</code>.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='CHAR'/>
            </type>
          </field-decl>
          <field-decl name='charSet' id='FactorDesc.charSet' export='read-only'>
            <oberon-doc>
              <summary>For a character set match, this field refers to a set of characters.</summary>
              <p pad-after='yes' no-indent='yes'>For a character set match, this field refers to a set of characters.  Otherwise, it is <code>NIL</code>.</p>
            </oberon-doc>
            <type>
              <type-name name='CharSet' href='#CharSet'/>
            </type>
          </field-decl>
          <field-decl name='group' id='FactorDesc.group' export='read-only'>
            <oberon-doc>
              <summary>For a parenthised group, this field refers to the nested group.</summary>
              <p pad-after='yes' no-indent='yes'>For a parenthised group, this field refers to the nested group.  Otherwise, it is <code>NIL</code>.</p>
            </oberon-doc>
            <type>
              <type-name name='Group' href='#Group'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitFactor' id='InitFactor' export='yes'>
      <formal-parameters>
        <parameter-decl name='factor' id='InitFactor.factor' export='no' variable-parameter='no'>
          <type>
            <type-name name='Factor' href='#Factor'/>
          </type>
        </parameter-decl>
        <parameter-decl name='type' id='InitFactor.type' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='FactorType'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
  </class>
  <class name='Term'>
    <type-decl name='Term' id='Term' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='TermDesc' href='#TermDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='TermDesc' id='TermDesc' export='yes'>
      <oberon-doc>
        <summary>An atomic factor, optionally followed by a quantifier.</summary>
        <p pad-after='yes' no-indent='yes'>An atomic factor, optionally followed by a quantifier.</p>
      </oberon-doc>
      <type>
        <record>
          <field-decl name='next' id='TermDesc.next' export='read-only'>
            <oberon-doc>
              <summary>Links elements of <oberon-field href='#ExprDesc.termList'>Expr.termList</oberon-field>.</summary>
              <p pad-after='yes' no-indent='yes'>Links elements of <oberon-field href='#ExprDesc.termList'>Expr.termList</oberon-field>.</p>
            </oberon-doc>
            <type>
              <type-name name='Term' href='#Term'/>
            </type>
          </field-decl>
          <field-decl name='factor' id='TermDesc.factor' export='read-only'>
            <oberon-doc>
              <summary>The base expression of the term.</summary>
              <p pad-after='yes' no-indent='yes'>The base expression of the term.</p>
            </oberon-doc>
            <type>
              <type-name name='Factor' href='#Factor'/>
            </type>
          </field-decl>
          <field-decl name='quantifier' id='TermDesc.quantifier' export='read-only'>
            <oberon-doc>
              <summary>Specifies how often <oberon-field href='#TermDesc.factor'>factor</oberon-field> must match for the term to be considered a successful match.</summary>
              <p pad-after='yes' no-indent='yes'>Specifies how often <oberon-field href='#TermDesc.factor'>factor</oberon-field> must match for the term to be considered a successful match.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='QuantifierType'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitTerm' id='InitTerm' export='yes'>
      <formal-parameters>
        <parameter-decl name='term' id='InitTerm.term' export='no' variable-parameter='no'>
          <type>
            <type-name name='Term' href='#Term'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
  </class>
  <class name='Expr'>
    <type-decl name='Expr' id='Expr' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='ExprDesc' href='#ExprDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='ExprDesc' id='ExprDesc' export='yes'>
      <oberon-doc>
        <summary>Represents a sequence of terms like <samp>a</samp>, <samp>[a]</samp>, or <samp>a*</samp>.</summary>
        <p pad-after='yes' no-indent='yes'>Represents a sequence of terms like <samp>a</samp>, <samp>[a]</samp>, or <samp>a*</samp>.</p>
      </oberon-doc>
      <type>
        <record>
          <field-decl name='next' id='ExprDesc.next' export='read-only'>
            <oberon-doc>
              <summary>Links elements of <oberon-field href='#GroupDesc.exprList'>Group.exprList</oberon-field>.</summary>
              <p pad-after='yes' no-indent='yes'>Links elements of <oberon-field href='#GroupDesc.exprList'>Group.exprList</oberon-field>.</p>
            </oberon-doc>
            <type>
              <type-name name='Expr' href='#Expr'/>
            </type>
          </field-decl>
          <field-decl name='termList' id='ExprDesc.termList' export='read-only'>
            <oberon-doc>
              <summary>Sequence of terms within the expression.</summary>
              <p pad-after='yes' no-indent='yes'>Sequence of terms within the expression.  List is linked by <oberon-field href='#TermDesc.next'>Term.next</oberon-field>.  Note: This list may be empty, which happens for expressions like <samp/>, <samp>()</samp>, <samp>(a|)</samp>, and so on.</p>
            </oberon-doc>
            <type>
              <type-name name='Term' href='#Term'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitExpr' id='InitExpr' export='yes'>
      <formal-parameters>
        <parameter-decl name='expr' id='InitExpr.expr' export='no' variable-parameter='no'>
          <type>
            <type-name name='Expr' href='#Expr'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
  </class>
  <class name='Group'>
    <type-decl name='Group' id='Group' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='GroupDesc' href='#GroupDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='GroupDesc' id='GroupDesc' export='yes'>
      <oberon-doc>
        <summary>Represents list of alternatives, separated by <samp>|</samp>.</summary>
        <p pad-after='yes' no-indent='yes'>Represents list of alternatives, separated by <samp>|</samp>.</p>
      </oberon-doc>
      <type>
        <record>
          <field-decl name='exprList' id='GroupDesc.exprList' export='read-only'>
            <oberon-doc>
              <summary>List of alternatives within this group.</summary>
              <p pad-after='yes' no-indent='yes'>List of alternatives within this group.  List is linked by <oberon-field href='#ExprDesc.next'>Expr.next</oberon-field>.</p>
            </oberon-doc>
            <type>
              <type-name name='Expr' href='#Expr'/>
            </type>
          </field-decl>
          <field-decl name='groupId' id='GroupDesc.groupId' export='read-only'>
            <oberon-doc>
              <summary>Identifier for this group.</summary>
              <p pad-after='yes' no-indent='yes'>Identifier for this group.  The group that represents the whole regular expression has an id of <samp>0</samp>.  The ids of nested groups is derived by counting opening parenthesis before it.  The first <samp>(</samp> in the expression gets the id <samp>1</samp>, the second <samp>2</samp>, and so on.</p>
            </oberon-doc>
            <type>
              <type-name module='#predef' name='GroupId'/>
            </type>
          </field-decl>
        </record>
      </type>
    </type-decl>
    <procedure name='InitGroup' id='InitGroup' export='yes'>
      <formal-parameters>
        <parameter-decl name='group' id='InitGroup.group' export='no' variable-parameter='no'>
          <type>
            <type-name name='Group' href='#Group'/>
          </type>
        </parameter-decl>
        <parameter-decl name='groupId' id='InitGroup.groupId' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='GroupId'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='Parse' id='Parse' export='yes'>
      <oberon-doc>
        <summary>Parses the regular expression in <oberon-param href='#Parse.pattern'>pattern</oberon-param>, modified by the options passed in <oberon-param href='#Parse.flags'>flags</oberon-param>.</summary>
        <p pad-after='yes' no-indent='yes'>Parses the regular expression in <oberon-param href='#Parse.pattern'>pattern</oberon-param>, modified by the options passed in <oberon-param href='#Parse.flags'>flags</oberon-param>.</p>
        <p pad-after='yes' no-indent='no'>Result is an abstract syntax tree of the regular expression on success, and <code>NIL</code> on failure.  The nodes of the AST a constructed from instances created through the builder object <oberon-param href='#Parse.b'>b</oberon-param>.</p>
        <p pad-after='yes' no-indent='no'>For a short description of regular expression syntax, see <oberon-module href='StringSearch:RegexpDFA#'>StringSearch:RegexpDFA</oberon-module>.</p>
      </oberon-doc>
      <formal-parameters>
        <parameter-decl name='b' id='Parse.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </parameter-decl>
        <parameter-decl name='pattern' id='Parse.pattern' export='no' variable-parameter='no'>
          <type>
            <type-name module='Object' name='String8' href='Object#String8'/>
          </type>
        </parameter-decl>
        <parameter-decl name='flags' id='Parse.flags' export='no' variable-parameter='no'>
          <type>
            <type-name module='StringSearch' name='Flags' href='StringSearch#Flags'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='Group' href='#Group'/>
        </result-type>
      </formal-parameters>
    </procedure>
  </class>
  <class name='Builder'>
    <type-decl name='Builder' id='Builder' export='yes'>
      <type>
        <pointer>
          <pointer-base>
            <type-name name='BuilderDesc' href='#BuilderDesc'/>
          </pointer-base>
        </pointer>
      </type>
    </type-decl>
    <type-decl name='BuilderDesc' id='BuilderDesc' export='yes'>
      <oberon-doc>
        <summary>Factory for nodes of the abstract syntax tree.</summary>
        <p pad-after='yes' no-indent='yes'>Factory for nodes of the abstract syntax tree.</p>
      </oberon-doc>
      <type>
        <record/>
      </type>
    </type-decl>
    <procedure name='NewGroup' id='BuilderDesc.NewGroup' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.NewGroup.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <parameter-decl name='groupId' id='BuilderDesc.NewGroup.groupId' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='GroupId'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='Group' href='#Group'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='NewExpr' id='BuilderDesc.NewExpr' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.NewExpr.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name name='Expr' href='#Expr'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='NewTerm' id='BuilderDesc.NewTerm' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.NewTerm.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <result-type>
          <type-name name='Term' href='#Term'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='NewFactor' id='BuilderDesc.NewFactor' export='yes'>
      <formal-parameters>
        <receiver-decl name='b' id='BuilderDesc.NewFactor.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </receiver-decl>
        <parameter-decl name='type' id='BuilderDesc.NewFactor.type' export='no' variable-parameter='no'>
          <type>
            <type-name module='#predef' name='FactorType'/>
          </type>
        </parameter-decl>
        <result-type>
          <type-name name='Factor' href='#Factor'/>
        </result-type>
      </formal-parameters>
    </procedure>
    <procedure name='InitBuilder' id='InitBuilder' export='yes'>
      <formal-parameters>
        <parameter-decl name='b' id='InitBuilder.b' export='no' variable-parameter='no'>
          <type>
            <type-name name='Builder' href='#Builder'/>
          </type>
        </parameter-decl>
      </formal-parameters>
    </procedure>
    <procedure name='NewBuilder' id='NewBuilder' export='yes'>
      <formal-parameters>
        <result-type>
          <type-name name='Builder' href='#Builder'/>
        </result-type>
      </formal-parameters>
    </procedure>
  </class>
  <module-ref name='StringSearch'>
    <ref-target type='html' relative-uri='../StringSearch.html'/>
  </module-ref>
  <module-ref name='Object'>
    <ref-target type='html' relative-uri='../Object.html'/>
  </module-ref>
  <module-ref name='StringSearch:RegexpDFA'>
    <ref-target type='html' relative-uri='RegexpDFA.html'/>
  </module-ref>
</interface-description>
