summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--grammar.rb16
-rw-r--r--hg.rb17
2 files changed, 17 insertions, 16 deletions
diff --git a/grammar.rb b/grammar.rb
index 7bc6c9b..70e8fda 100644
--- a/grammar.rb
+++ b/grammar.rb
@@ -17,9 +17,9 @@ class NT
def initialize symbol=nil, index=nil, left=nil, right=nil
@symbol = symbol
- @index = index
- @left = left
- @right = right
+ @index = index
+ @left = left
+ @right = right
end
def from_s s
@@ -47,19 +47,19 @@ class Rule
attr_accessor :lhs, :rhs, :target, :map
def initialize lhs=nil, rhs=[], target=[]
- @lhs = lhs
- @rhs = rhs
+ @lhs = lhs
+ @rhs = rhs
@target = target
@arity_ = nil
end
def to_s
- "#{@lhs} -> #{@rhs.map{ |i| i.to_s }.join ' '} ||| #{@target.map{ |i| i.to_s }.join ' '} [arity=#{arity}]" #FIXME
+ "#{@lhs} -> #{@rhs.map{ |i| i.to_s }.join ' '} ||| #{@target.map{ |i| i.to_s }.join ' '} [arity=#{arity}]"
end
def arity
- return @arity_ if @arity_
- rhs.select { |i| i.class == NT }.size
+ @arity_ = rhs.select { |i| i.class == NT }.size if !@arity_
+ return @arity_
end
def read_right_ s
diff --git a/hg.rb b/hg.rb
index a7d1d99..f6af75d 100644
--- a/hg.rb
+++ b/hg.rb
@@ -1,7 +1,6 @@
#!/usr/bin/env ruby
require 'nlp_ruby'
-require 'json'
require_relative 'grammar'
@@ -9,7 +8,7 @@ module HG
class HG::Node
- attr_accessor :id, :cat, :outgoing, :incoming, :score
+ attr_accessor :id, :outgoing, :incoming, :score
def initialize id=nil, cat=nil, outgoing=[], incoming=[], score=nil
@id = id
@@ -19,7 +18,7 @@ class HG::Node
end
def to_s
- "Node<id:#{@id}, cat:\"#{@cat}\", outgoing:#{@outgoing.size}, incoming:#{@incoming.size}>"
+ "Node<id:#{@id}, outgoing:#{@outgoing.size}, incoming:#{@incoming.size}>"
end
end
@@ -27,12 +26,14 @@ class HG::Hypergraph
attr_accessor :nodes, :edges
def initialize nodes=[], edges=[]
- @nodes = nodes
- @edges = edges
+ @nodes = nodes
+ @edges = edges
+ @arity_ = nil
end
def arity
- @edges.map { |e| e.arity }.max
+ @arity_ = @edges.map { |e| e.arity }.max if !@arity_
+ return @arity_
end
def reset
@@ -40,7 +41,7 @@ class HG::Hypergraph
end
def to_s
- "Hypergraph<nodes:[#{@nodes.to_s}], edges:[#{@edges.to_s}], arity:#{arity}>"
+ "Hypergraph<nodes:#{@nodes.size}, edges:#{@edges.size}, arity:#{arity}>"
end
end
@@ -53,7 +54,7 @@ class HG::Hyperedge
@score = score
@f = f
@mark = 0
- @rule = Grammar::Rule.from_s rule if rule
+ @rule = (rule ? Grammar::Rule.from_s(rule) : nil)
end
def arity