Class: Sfp::Axiom

Inherits:
Hash
  • Object
show all
Defined in:
lib/sfp/sas_translator.rb

Overview

A class for Grounded Axiom

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeAxiom

Returns a new instance of Axiom.



2127
2128
2129
# File 'lib/sfp/sas_translator.rb', line 2127

def initialize
  @id = Sfp::SasTranslator.next_axiom_id
end

Instance Attribute Details

#idObject

Returns the value of attribute id.



2125
2126
2127
# File 'lib/sfp/sas_translator.rb', line 2125

def id
  @id
end

#targetObject

Returns the value of attribute target.



2125
2126
2127
# File 'lib/sfp/sas_translator.rb', line 2125

def target
  @target
end

Instance Method Details

#to_sObject



2131
2132
2133
# File 'lib/sfp/sas_translator.rb', line 2131

def to_s
  return 'axiom#' + @id.to_s
end

#to_sas(root, variables) ⇒ Object

Raises:

  • (Exception)


2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
# File 'lib/sfp/sas_translator.rb', line 2135

def to_sas(root, variables)
  prevails = select { |var,param| param.post.nil? }
  preposts = select { |var,param| !param.post.nil? }
  raise Exception, "Invalid axiom: total preposts > 1" if preposts.length > 1
  raise Exception, "Invalid axiom: total preposts <= 0" if preposts.length <= 0

  sas = "begin_rule"
  sas << "\n#{prevails.length}"
  prevails.each { |var,param| sas << "\n#{param.to_sas(root, variables)}" }
  preposts.each { |var,param| sas << "\n#{param.to_sas(root, variables)}" }
  sas << "\nend_rule"
  return sas
end