summaryrefslogtreecommitdiff
path: root/prototype
diff options
context:
space:
mode:
Diffstat (limited to 'prototype')
-rw-r--r--prototype/grammar.rb6
-rwxr-xr-xprototype/test_parse.rb10
-rwxr-xr-xprototype/weaver.rb6
3 files changed, 11 insertions, 11 deletions
diff --git a/prototype/grammar.rb b/prototype/grammar.rb
index 05224f4..abccb15 100644
--- a/prototype/grammar.rb
+++ b/prototype/grammar.rb
@@ -42,7 +42,7 @@ class NT
end
class Rule
- attr_accessor :lhs, :rhs, :target, :map, :f
+ attr_accessor :lhs, :rhs, :target, :map, :f, :arity
def initialize lhs=NT.new, rhs=[], target=[], map=[], f=SparseVector.new, arity=0
@lhs = lhs
@@ -116,7 +116,7 @@ class Grammar
@rules.map { |r| r.to_s }.join "\n"
end
- def add_glue
+ def add_glue_rules
@rules.map { |r| r.lhs.symbol }.select { |s| s != 'S' }.uniq.each { |symbol|
@rules << Rule.new(NT.new('S'), [NT.new(symbol, 0)], [NT.new(symbol, 0)], [0])
@start_nt << @rules.last
@@ -125,7 +125,7 @@ class Grammar
}
end
- def add_pass_through a
+ def add_pass_through_rules a
return if !a
a.each { |word|
@rules << Rule.new(NT.new('X'), [T.new(word)], [T.new(word)])
diff --git a/prototype/test_parse.rb b/prototype/test_parse.rb
index 0d8e625..cae6168 100755
--- a/prototype/test_parse.rb
+++ b/prototype/test_parse.rb
@@ -10,13 +10,13 @@ def main
n = input.size
STDERR.write "> reading grammar\n"
- grammar = Grammar::Grammar.new '../example/toy/grammar'
- #grammar = Grammar::Grammar.new '../example/toy/grammar-test'
+ #grammar = Grammar::Grammar.new '../example/toy/grammar'
+ grammar = Grammar::Grammar.new '../example/toy/grammar-test'
#grammar = Grammar::Grammar.new '../example/glue/grammar'
- #grammar = Grammar::Grammar.new '../example/3/grammar.3.gz'
+ #grammar = Grammar::Grammar.new '../example/3/grammar'
STDERR.write ">> adding glue grammar\n"
- #grammar.add_glue_rules
+ grammar.add_glue_rules
STDERR.write ">> adding pass-through grammar\n"
#grammar.add_pass_through_rules input
@@ -30,7 +30,7 @@ def main
Parse::parse input, n, active_chart, passive_chart, grammar
puts "\n---\npassive chart"
- Parse::visit(1, 0, 5) { |i,j| puts "#{i},#{j}"; passive_chart.at(i,j).each { |item| puts " #{j} #{item.to_s}" }; puts }
+ Parse::visit(1, 0, n) { |i,j| k=0; puts "#{i},#{j}"; passive_chart.at(i,j).each { |item| puts " #{k} #{item.to_s}"; k+=1 }; puts }
weights_file = '../example/toy/weights'
#weights_file = '../example/glue/weights'
diff --git a/prototype/weaver.rb b/prototype/weaver.rb
index 5afdb93..5cda844 100755
--- a/prototype/weaver.rb
+++ b/prototype/weaver.rb
@@ -9,11 +9,11 @@ def read_grammar fn, add_glue, add_pass_through, input=nil
grammar = Grammar::Grammar.new fn
if add_glue
STDERR.write ">> adding glue rules\n"
- grammar.add_glue
+ grammar.add_glue_rules
end
if add_pass_through
STDERR.write ">> adding pass-through rules\n"
- grammar.add_pass_through input
+ grammar.add_pass_through_rules input
end
return grammar
end
@@ -51,7 +51,7 @@ def main
if sgm_input && x['grammar']
grammar = read_grammar x['grammar'], cfg[:add_glue], cfg[:add_pass_through], input
elsif cfg[:add_pass_through]
- grammar.add_pass_through input
+ grammar.add_pass_through_rules input
end