summaryrefslogtreecommitdiff
path: root/prototype/hypergraph.rb
diff options
context:
space:
mode:
authorPatrick Simianer <patrick@lilt.com>2026-02-24 17:07:57 +0100
committerPatrick Simianer <patrick@lilt.com>2026-02-24 17:07:57 +0100
commit77666a09c0f82b231605da463a946a5a5fcd09b6 (patch)
tree44d0e96bac774b491290b548358b65176f5dec94 /prototype/hypergraph.rb
parentc13b5650ac4bee7e674d263fcb778599bb449bff (diff)
Fix reordering bug in derive and add test example
derive used a sequential counter to index into the source-side NT map, which only worked for monotone rules. Now looks up tails by the target NT's own index via map.index(i.index). Adds toy-reorder example (German verb-final -> English SVO) to exercise the fix. Also updates trollop -> optimist and guards xmlsimple require. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'prototype/hypergraph.rb')
-rw-r--r--prototype/hypergraph.rb4
1 files changed, 1 insertions, 3 deletions
diff --git a/prototype/hypergraph.rb b/prototype/hypergraph.rb
index fd72393..fdaba5a 100644
--- a/prototype/hypergraph.rb
+++ b/prototype/hypergraph.rb
@@ -196,11 +196,9 @@ def HG::derive path, cur, carry
edge = path.select { |e| e.head.symbol==cur.symbol \
&& e.head.left==cur.left \
&& e.head.right==cur.right }.first
- j = 0
edge.rule.target.each { |i|
if i.class == Grammar::NT
- derive path, edge.tails[edge.rule.map[j]], carry
- j += 1
+ derive path, edge.tails[edge.rule.map.index(i.index)], carry
else
carry << i
end