EmbASP-Python
asp_mapper.py
1 from languages.mapper import Mapper
2 from languages.asp.symbolic_constant import SymbolicConstant
3 from parsers.asp.asp_parser import ASPParser
4 
5 
7  """Contains methods used to transform Objects into InputProgram."""
8 
9  __instance = None
10 
11  def __init__(self):
12  if ASPMapper.__instance:
13  raise("Instance already exists")
14  super(ASPMapper, self).__init__()
15 
16  @classmethod
17  def get_instance(cls):
18  """Return the instance of ASPMapper."""
19  if not cls.__instance:
20  cls.__instance = ASPMapper()
21  return cls.__instance
22 
23  def _get_actual_string(self, predicate, parameters_map):
24  """Return a string representing atom, from given predicate name,
25  and set of parameters."""
26  atom = predicate + "("
27  for i in range(0, len(parameters_map)):
28  if i != 0:
29  atom += ","
30  object_term = parameters_map[i]
31  if object_term is None:
32  raise("Wrong term number of predicate " + predicate)
33  if isinstance(object_term, int):
34  atom += str(object_term)
35  elif isinstance(object_term, SymbolicConstant):
36  atom += str(SymbolicConstant(object_term))
37  else:
38  atom += "\"" + str(object_term) + "\""
39  atom += ")"
40  return atom
41 
42  def _get_id(self, atom):
43  """Return a string representing a predicate."""
44  if '(' not in atom:
45  return atom
46 
47  return atom[:atom.index('(')]
48 
49  def _get_param(self, atom):
50  """Return a set of parameter string name."""
51  return ASPParser.parse(atom).get_parameters()
parsers.asp.asp_parser
Definition: asp_parser.py:1
languages.asp.symbolic_constant.SymbolicConstant
Definition: symbolic_constant.py:1
languages.mapper
Definition: mapper.py:1
languages.asp.asp_mapper.ASPMapper
Definition: asp_mapper.py:6
languages.asp.asp_mapper.ASPMapper.get_instance
def get_instance(cls)
Definition: asp_mapper.py:17
languages.mapper.Mapper
Definition: mapper.py:6
languages.asp.asp_mapper.ASPMapper.__instance
__instance
Definition: asp_mapper.py:9
languages.asp.symbolic_constant
Definition: symbolic_constant.py:1