Beispiel #1
0
static ATermList applyImports(SDF_ImportList imports, PT_ParseTree pt)
{
  ATermList result = ATempty;

  while (!SDF_isImportListEmpty(imports)) {
    SDF_Import import = SDF_getImportListHead(imports);

    if (SDF_hasImportRenamings(import)) {
      SDF_Renamings renamings = SDF_getImportRenamings(import);

      result = ATinsert(result, 
			ATBpack(
			  PT_ParseTreeToTerm(applyRenamings(renamings, pt))));
    }
    else {
      result = ATinsert(result, ATBpack(PT_ParseTreeToTerm(pt)));
    }

    if (SDF_hasImportListTail(imports)) {
      imports = SDF_getImportListTail(imports);
    }
    else {
      break;
    }
  }

  return result;
}
Beispiel #2
0
ATerm pretty_print(int cid, ATerm input) 
{
  PT_ParseTree parsetree = NULL;
  BOX_Start box = NULL;
  PT_Tree result = NULL;

  ERR_resetErrorManager();

  parsetree = PT_ParseTreeFromTerm(ATBunpack(input));

  if (parsetree != NULL) {
    box = pandora(parsetree);
  }

  if (box != NULL) {
    result = toText(PT_ParseTreeFromTerm(BOX_StartToTerm(box)));
  }

  if (result != NULL) {
    PT_ParseTree presult = PT_makeValidParseTreeFromTree(result);
    ATerm value = ATBpack(PT_ParseTreeToTerm(presult));
    return ATmake("snd-value(pretty-printed(<term>))", value);
  }
  else {
    ERR_Summary summary = ERR_getManagerSummary();
    return ATmake("snd-value(pretty-print-error(<term>))", summary);
  }
}
Beispiel #3
0
ATerm rename_modulename_in_module(int cid, ATerm atModule, const char* name)
{
  SDF_Start start = SDF_StartFromTerm(ATBunpack(atModule));
  SDF_Module oldModule = SDF_getStartTopModule(start);
  SDF_Module newModule = SDF_setModuleName(oldModule, (char*) name);

  start = SDF_setStartTopModule(start, newModule);
  atModule = SDF_StartToTerm(start);

  return ATmake("snd-value(module(<term>))", ATBpack(atModule));
}
Beispiel #4
0
ATerm remove_import_from_module(int cid, ATerm atModule, const char* name)
{
  SDF_Import sdfImport = SDF_makeImport((char*) name);
  SDF_Start start = SDF_StartFromTerm(ATBunpack(atModule));
  SDF_Module oldModule = SDF_getStartTopModule(start);
  SDF_Module newModule = SDF_removeModuleImport(oldModule, sdfImport);

  start = SDF_setStartTopModule(start, newModule);
  atModule = SDF_StartToTerm(start);

  return ATmake("snd-value(module(<term>))", ATBpack(atModule));
}
Beispiel #5
0
ATerm make_sdf_definition(int cid, ATerm atModules)
{
  ATermList list;
  SDF_ModuleList modules;
  SDF_OptLayout newline;
  SDF_SDF sdf;
  SDF_Start start;
  ATerm result;

  list = (ATermList) ATBunpack(atModules);

  modules = SDF_makeModuleListEmpty();
  newline = SDF_makeLayoutNewline();

  for( ;!ATisEmpty(list); list = ATgetNext(list)) {
    SDF_Start start = SDF_StartFromTerm(ATgetFirst(list));
    SDF_Module module = SDF_getStartTopModule(start);

    if (SDF_isModuleListEmpty(modules)) {
      modules = SDF_makeModuleListSingle(module);
    }
    else {
      modules = SDF_makeModuleListMany(module, newline, modules);
    }
  }

  if (!SDF_isModuleListEmpty(modules)) {
    sdf = SDF_makeSDFDefinition(newline, SDF_makeDefinitionDefault(modules));
    start = SDF_makeStartSDF(newline, sdf, newline, 0);
    result = ATBpack(SDF_StartToTerm(start));

    return ATmake("snd-value(sdf-definition(<term>))", result);
  }
  else {
    return ATmake("snd-value(no-sdf-definition)");
  }
}
Beispiel #6
0
ATerm add_eqs_syntax(int cid, const char *name, ATerm term)
{
  ATerm  output = addEqsSyntax(name, ATBunpack(term));

  return ATmake("snd-value(extended-syntax(<term>))", ATBpack(output));
}