Difference between revisions of "Paths to rule blocked"
		
		
		
		
		
		
		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.

