Codebase list apertium-nno-nob / HEAD apertium-nno-nob.nno-nob.t2x
HEAD

Tree @HEAD (Download .tar.gz)

apertium-nno-nob.nno-nob.t2x @HEADraw · history · blame

<?xml version="1.0" encoding="UTF-8"?>
<!-- -*- nxml -*- -->
<!-- TODO:
     * stop using GD, just check whether the determiner (or whatever) has some gender already
-->
<interchunk>

  <section-def-cats>
    <def-cat n="unknown">
      <cat-item tags="unknown"/>
    </def-cat>
    <def-cat n="nom">
      <cat-item tags="n.*"/>
      <cat-item tags="n.*.gen"/>
      <cat-item tags="np.*"/>
    </def-cat>
    <def-cat n="nind">
      <cat-item tags="n.*.ind"/>
    </def-cat>
    <def-cat n="ndef">
      <cat-item tags="n.*.def"/>
    </def-cat>
    <def-cat n="prep_gen">
      <cat-item lemma="gen-prep" tags="pr"/>
    </def-cat>
    <def-cat n="ngen">
      <cat-item tags="n.*.gen"/>
    </def-cat>
    <def-cat n="detgen">
      <cat-item tags="det.*.gen"/>
    </def-cat>
    <def-cat n="det">
      <cat-item tags="det.*"/>
    </def-cat>
    <def-cat n="prn">
      <cat-item tags="prn.*"/>
    </def-cat>
    <def-cat n="sin">
      <cat-item lemma="detsin" tags="det.pos.*"/>
    </def-cat>
    <def-cat n="detpos">
      <cat-item tags="det.pos.*"/>
    </def-cat>
    <def-cat n="detnonpos">
      <cat-item tags="det.def.*"/>
      <cat-item tags="det.dem.*"/>
      <cat-item tags="det.emph.*"/>
      <cat-item tags="det.itg.*"/>
      <cat-item tags="det.qnt.*"/>
    </def-cat>
    
    <def-cat n="vblex">
      <cat-item tags="vblex"/>
      <cat-item tags="vblex.*"/>
    </def-cat>
    <def-cat n="aux">
      <cat-item lemma="aux" tags="vblex"/>
      <cat-item lemma="aux" tags="vblex.*"/>
    </def-cat>
    <def-cat n="auxpass" c="Auxiliary generated in t1x">
      <cat-item lemma="aux" tags="vblex.*.pasv"/>
    </def-cat>
    <def-cat n="infaux">
      <cat-item lemma="aux" tags="vblex.inf"/>
      <cat-item lemma="aux" tags="vblex.inf.*"/>
    </def-cat>
    <def-cat n="adv">
      <cat-item tags="adv"/>
      <cat-item tags="adv.*"/>
    </def-cat>
    <def-cat n="infm">
      <cat-item lemma="infm" tags="cnjsub"/>
      <cat-item lemma="infm" tags="cnjsub.*"/>
    </def-cat>
    <def-cat n="lemq">
      <cat-item tags="vblex.lemq"/>
      <cat-item tags="vblex.lemq.*"/>
    </def-cat>
    <def-cat n="adjpart">
      <cat-item tags="vblex.pp"/>
      <cat-item tags="adj.pp"/>
      <cat-item tags="adj.pp.*"/>
    </def-cat>
    <def-cat n="single-adjpart"> <!-- chunk lemma ensures it's a single-word chunk -->
      <cat-item lemma="vblex" tags="vblex.pp"/>
      <cat-item lemma="adj" tags="adj.pp"/>
      <cat-item lemma="adj" tags="adj.pp.*"/>
    </def-cat>
  </section-def-cats>
  
  <section-def-attrs>
    <def-attr n="a_nom">
      <attr-item tags="n"/>
      <attr-item tags="n.acr"/>
      <attr-item tags="np"/>
      <attr-item tags="np.top"/>
    </def-attr>
    <def-attr n="persona">
      <attr-item tags="p1"/>
      <attr-item tags="p2"/>
      <attr-item tags="p3"/>
    </def-attr>
    <def-attr n="a_verb">
      <attr-item tags="vblex"/>
      <attr-item tags="vblex.pstv"/>
    </def-attr>
    <def-attr n="temps">
      <attr-item tags="inf"/>
      <attr-item tags="imp"/>
      <attr-item tags="pres"/>
      <attr-item tags="pret"/>
      <attr-item tags="pp"/>
    </def-attr>
    <def-attr n="voice">
      <attr-item tags="pasv"/>
    </def-attr>
    <def-attr n="a_det">
      <attr-item tags="det"/> 
      <attr-item tags="det.emph"/>
      <attr-item tags="det.dem"/>
      <attr-item tags="det.itg"/>
      <attr-item tags="det.qnt"/>
      <attr-item tags="det.qnt.neg"/>
      <attr-item tags="det.pos"/>
    </def-attr>
    <def-attr n="gen">
      <attr-item tags="m"/>
      <attr-item tags="mf"/>
      <attr-item tags="nt"/>
      <attr-item tags="f"/>
      <attr-item tags="GD"/>
    </def-attr>
    <def-attr n="nbr">
      <attr-item tags="sg"/>
      <attr-item tags="pl"/>
      <attr-item tags="sp"/>
      <attr-item tags="ND"/>
    </def-attr>
    <def-attr n="cas">
      <attr-item tags="nom"/>
      <attr-item tags="gen"/>
      <attr-item tags="acc"/>
      <attr-item tags="CD"/>
    </def-attr>
    <def-attr n="art">
      <attr-item tags="def"/>
      <attr-item tags="ind"/>
    </def-attr>
  </section-def-attrs>


  <section-def-vars>
    <def-var n="caseFirstWord"/>
    <def-var n="det_gender"/>
    <def-var n="number_no_sp"/>  
    <def-var n="adj_number"/>  
    <def-var n="adj_gender"/>  
    <def-var n="adj_defness"/>  
    <def-var n="n_number"/>
    <def-var n="case"/>
    <def-var n="n_defness"/>
    <def-var n="lemh"/>
    <def-var n="ana_gen"/>
    <def-var n="ana_nbr"/>
  </section-def-vars>
 
  <section-def-macros>

    <!-- Macros which set concordance variables etc.: -->
    <def-macro n="modify_case_detpos" npar="2">
      <!-- arg.1: possessed noun. arg.2: det.pos, gives typographic case
           Workaround for Polite forms.
      -->
      <choose>
        <when>
          <test><not>
            <and>
              <equal><clip pos="2" part="lemh"/><lit v="De"/></equal>
              <equal><clip pos="2" part="a_det"/><lit-tag v="det.pos"/></equal>
              <equal><clip pos="2" part="persona"/><lit-tag v="p2"/></equal>
            </and>
          </not></test>
          <modify-case><clip pos="2" part="lemh"/><clip pos="1" part="lemh"/></modify-case>
        </when>
      </choose>      
    </def-macro>

    <def-macro n="modify_det_gender2.n.det" npar="2"
               c="arg.1: noun, arg.2: determiner">      
      <choose>
        <when>
          <test><and>
            <not><equal><clip pos="1" part="gen"/><lit v=""/></equal></not>
            <not><equal><clip pos="1" part="nbr"/><lit-tag v="pl"/></equal></not>
            <not><equal><clip pos="2" part="nbr"/><lit-tag v="pl"/></equal></not>
          </and></test>
          <let><clip pos="2" part="gen"/><clip pos="1" part="gen"/></let>
        </when>
      </choose>
    </def-macro>

  </section-def-macros>


  <section-rules>
    <rule comment="VBLEX LEMQ ADV => VBLEX ADV LEMQ
                   Push blanks one place up since lemq space is inside the chunk.">
      <pattern>
        <pattern-item n="vblex"/>
        <pattern-item n="lemq"/>
        <pattern-item n="adv"/>
      </pattern>
      <action>
        <out>
          <chunk>
            <clip pos="1" part="whole"/>
          </chunk>
          <b pos="1"/>
          <b pos="2"/>
          <chunk>
            <clip pos="3" part="whole"/>
          </chunk>
          <chunk>
            <clip pos="2" part="whole"/>
          </chunk> 
        </out>
      </action>
    </rule>
    <rule comment="VBLEX LEMQ ADV ADV => VBLEX ADV ADV LEMQ
                   Push blanks one place up since lemq space is inside the chunk.">
      <pattern>
        <pattern-item n="vblex"/>
        <pattern-item n="lemq"/>
        <pattern-item n="adv"/>
        <pattern-item n="adv"/>
      </pattern>
      <action>
        <out>
          <chunk>
            <clip pos="1" part="whole"/>
          </chunk>
          <b pos="1"/>
          <b pos="2"/>
          <chunk>
            <clip pos="3" part="whole"/>
          </chunk>
          <b pos="3"/>
          <chunk>
            <clip pos="4" part="whole"/>
          </chunk>
          <chunk>
            <clip pos="2" part="whole"/>
          </chunk> 
        </out>
      </action>
    </rule>
    
    
    
    <!-- Possessive noun phrases -->
    

    <!-- The regular possessive noun phrases, with more complex
         transfer operations.-->
    <rule comment="NDEF: (lille) mennesket => (vesle) mennesket
                   Used to output a determiner with out_det_when_adj, but this lead to
                   some odd problems.">
      <pattern>
        <pattern-item n="ndef"/>
      </pattern>
      <action>
        <call-macro n="modify_case_detpos"><with-param pos="1"/><with-param pos="1"/></call-macro>
        <out>
          <chunk>
            <clip pos="1" part="whole"/>
          </chunk>
        </out>
      </action>
    </rule>

    <rule comment="NDEF DETPOS: jenten min => jenta mi">
      <pattern>
        <pattern-item n="ndef"/>
        <pattern-item n="detpos"/>
      </pattern>
      <action>
        <call-macro n="modify_det_gender2.n.det"><with-param pos="1"/><with-param pos="2"/></call-macro>
        <out>
          <chunk><clip pos="1" part="whole"/></chunk>
          <b pos="1"/>
          <chunk><clip pos="2" part="whole"/></chunk>          
        </out>
      </action>
    </rule>

    <rule comment="DET NOM">
      <pattern>
        <pattern-item n="det"/>
        <pattern-item n="nom"/>
      </pattern>
      <action>
        <call-macro n="modify_det_gender2.n.det"><with-param pos="2"/><with-param pos="1"/></call-macro>
        <out>
          <chunk><clip pos="1" part="whole"/></chunk>
          <b pos="1"/>
          <chunk><clip pos="2" part="whole"/></chunk>
        </out>
      </action>
    </rule>
    
  </section-rules>  
</interchunk>