Exemplo n.º 1
0
static SDF_Attribute PTAttrToSDFAttribute(PT_Attr ptAttr)
{
  SDF_Attribute result;

  if (PT_isAttrAssoc(ptAttr)) {
    PT_Associativity ptAssoc = PT_getAttrAssoc(ptAttr);
    SDF_Associativity sdfAssoc;

    if (PT_isAssociativityLeft(ptAssoc)) {
      sdfAssoc = SDF_makeAssociativityLeft();
    }
    else if (PT_isAssociativityRight(ptAssoc)) {
      sdfAssoc = SDF_makeAssociativityRight();
    }
    else if (PT_isAssociativityAssoc(ptAssoc)) {
      sdfAssoc = SDF_makeAssociativityAssoc();
    }
    else {
      sdfAssoc = SDF_makeAssociativityNonAssoc();
    }
    result = SDF_makeAttributeAssoc(sdfAssoc);
  }
  else if (PT_isAttrTerm(ptAttr)) {
    ATerm term = PT_getAttrTerm(ptAttr);
    ATabort("Conversion of plain ATerm not yet implemented: %t\n", term);
    result = NULL;
  }
  else if (PT_isAttrId(ptAttr)) {
    char *str = PT_getAttrModuleName(ptAttr);
    SDF_ModuleId sdfModuleId;
    SDF_ModuleName sdfModuleName;

    sdfModuleId = SDF_makeModuleIdWord(SDF_makeCHARLISTString(str));
    sdfModuleName = SDF_makeModuleNameUnparameterized(sdfModuleId);

    result = SDF_makeAttributeId(SDF_makeLayoutEmpty(),
				 SDF_makeLayoutEmpty(),
				 sdfModuleName,
				 SDF_makeLayoutEmpty());
  }
  else if (PT_isAttrBracket(ptAttr)) {
    result = SDF_makeAttributeBracket();
  }
  else if (PT_isAttrReject(ptAttr)) {
    result = SDF_makeAttributeReject();
  }
  else if (PT_isAttrPrefer(ptAttr)) {
    result = SDF_makeAttributePrefer();
  }
  else if (PT_isAttrAvoid(ptAttr)) {
    result = SDF_makeAttributeAvoid();
  }
  else {
    ATabort("Unsupported attribute: %t\n", ptAttr);
    result = NULL;
  }
  return result;
}
Exemplo n.º 2
0
static int lengthOfAttr(PT_Attr attr)
{
  ATerm attribute;

  if (PT_isAttrAssoc(attr)) {
    attribute = PT_AssociativityToTerm(PT_getAttrAssoc(attr));
  }
  else if (PT_isAttrTerm(attr)) {
    attribute = PT_getAttrValue(attr);
  }
  else {
    attribute = PT_AttrToTerm(attr);
  }

  return strlen(ATwriteToString(attribute));
}
Exemplo n.º 3
0
static int 
yieldAttr(PT_Attr attr, int idx, char *buf, int bufSize)
{
  char *str; 
  ATerm attribute;

  if (PT_isAttrAssoc(attr)) {
    attribute = PT_AssociativityToTerm(PT_getAttrAssoc(attr));
  }
  else if (PT_isAttrTerm(attr)) {
    attribute = PT_getAttrValue(attr);
  }
  else {
    attribute = PT_AttrToTerm(attr);
  }

  str = ATwriteToString(attribute);
  strcpy(buf+idx,str);

  return idx + strlen(str);
}