Difference between revisions of "Paths to rule blocked"

From Apertium
Jump to navigation Jump to search
(Created page with "If you get <pre>Warning (753): Paths to rule 5 blocked by rule 3.</pre> from apertium-preprocess-transfer (or make), then you can check out the relevant rules by doing e.g. ...")
 
 
(One intermediate revision by the same user not shown)
Line 9: Line 9:
 
</pre>
 
</pre>
 
(exchanging apertium-dan-nor.nor-dan.t1x for your transfer file)
 
(exchanging apertium-dan-nor.nor-dan.t1x for your transfer file)
  +
  +
==How to avoid==
  +
If you have e.g. a rule for nom.prop.gen followed by one for nom.gen:
  +
<pre>
  +
<def-cat n="nom.gen">
  +
<cat-item tags="n.*.gen.*"/>
  +
<cat-item tags="np.*.gen.*"/>
  +
</def-cat>
  +
<def-cat n="nom.prop.gen">
  +
<cat-item tags="np.*.gen.*"/>
  +
</def-cat>
  +
  +
<rule><pattern><pattern-item n="nom.gen"/>…</rule>
  +
  +
<rule><pattern><pattern-item n="nom.prop.gen"/>…</rule>
  +
</pre>
  +
  +
then the first rule block the second rule ''for the proper nouns'' (though non-proper nouns will still be handled by the first rule).
  +
  +
To avoid the warning, simply define a
  +
<pre>
  +
<def-cat n="nom.unprop.gen">
  +
<cat-item tags="n.*.gen.*"/>
  +
</def-cat>
  +
</pre>
  +
and use that in the second rule. The behaviour will be the same.
  +
  +
==When it's OK==
  +
For "catch-all" rules, it's fine if there is some overlap.
  +
   
 
[[Category:Transfer]]
 
[[Category:Transfer]]

Latest revision as of 19:29, 13 December 2016

If you get

Warning (753): Paths to rule 5 blocked by rule 3.

from apertium-preprocess-transfer (or make), then you can check out the relevant rules by doing e.g.

$ xmllint --xpath '//rule[3]' apertium-dan-nor.nor-dan.t1x
$ xmllint --xpath '//rule[5]' apertium-dan-nor.nor-dan.t1x

(exchanging apertium-dan-nor.nor-dan.t1x for your transfer file)

How to avoid[edit]

If you have e.g. a rule for nom.prop.gen followed by one for nom.gen:

    <def-cat n="nom.gen">
      <cat-item tags="n.*.gen.*"/>
      <cat-item tags="np.*.gen.*"/>
    </def-cat>
    <def-cat n="nom.prop.gen">
      <cat-item tags="np.*.gen.*"/>
    </def-cat>
…
    <rule><pattern><pattern-item n="nom.gen"/>…</rule>
…
    <rule><pattern><pattern-item n="nom.prop.gen"/>…</rule>

then the first rule block the second rule for the proper nouns (though non-proper nouns will still be handled by the first rule).

To avoid the warning, simply define a

    <def-cat n="nom.unprop.gen">
      <cat-item tags="n.*.gen.*"/>
    </def-cat>

and use that in the second rule. The behaviour will be the same.

When it's OK[edit]

For "catch-all" rules, it's fine if there is some overlap.