Ejemplo n.º 1
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);
  }
}
Ejemplo n.º 2
0
ATerm get_module_id(int cid, ATerm atModule)
{
  SDF_Start start = SDF_StartFromTerm(ATBunpack(atModule));
  SDF_Module module = SDF_getStartTopModule(start);
  SDF_ModuleId id = SDF_getModuleName(module);

  return ATmake("snd-value(module-id(<str>))", PT_yieldTree((PT_Tree) id));
}
Ejemplo n.º 3
0
ATerm get_imported_module_names(int cid, ATerm atModule)
{
  SDF_Start start = SDF_StartFromTerm(ATBunpack(atModule));
  SDF_Module module = SDF_getStartTopModule(start);
  ATermList imports = SI_getImports(module);
 
  return ATmake("snd-value(imported-module-names(<term>))", imports);
}
Ejemplo n.º 4
0
ATerm get_all_needed_imports(int cid, ATerm atModules, const char* name) 
{
  ATermList list = (ATermList) ATBunpack(atModules);
  SDF_ModuleId id = SDF_makeModuleId(name);
  SDF_ImportList imports;
 
  imports = SI_getTransitiveImports(list, id);

  return ATmake("snd-value(all-needed-imports(<term>))", imports);
}
Ejemplo n.º 5
0
ATerm rename_module(int cid, ATerm atImports, char *moduleName, ATerm term)
{
  SDF_ImportList imports = SDF_ImportListFromTerm(atImports);
  SDF_ImportList relevant = getRelevantImports(moduleName, imports);

  ATermList newModules = applyImports(relevant, 
				      PT_ParseTreeFromTerm(ATBunpack(term)));
  
  return ATmake("snd-value(renamed-module(<term>))", newModules);
}
Ejemplo n.º 6
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));
}
Ejemplo n.º 7
0
ATerm tree2graph(int cid, ATerm tree, ATerm layout_on, ATerm leaves_on,
		 ATerm sharing_on)
{
  ATbool layoutFlag = ATmatch(layout_on, "true");
  ATbool leavesFlag = ATmatch(leaves_on, "true");
  ATbool sharingFlag = ATmatch(sharing_on, "true");

  Graph graph = PT_printAnyToGraph(ATBunpack(tree), leavesFlag, ATtrue, layoutFlag, 
				   leavesFlag, sharingFlag);

  return ATmake("snd-value(graph(<term>))", GraphToTerm(graph));
}
Ejemplo n.º 8
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));
}
Ejemplo n.º 9
0
ATerm lower_rstore(int cid, ATerm in)
{
  ATerm input = ATBunpack(in);
  RS_RStore result = RS_makeRStoreRstore(RS_makeRTupleRtuplesEmpty());

  if (PRS_isValidStart(PRS_StartFromTerm(input))) {
    PRS_RStore tmp = PRS_getStartTopRStore(PRS_StartFromTerm(input));
    result = RS_lowerRStore(tmp);
  }
  else if (PRS_isValidRStore(PRS_RStoreFromTerm(input))) {
    result = RS_lowerRStore(PRS_RStoreFromTerm(input));
  }

  return ATmake("snd-value(lowered-rstore(<term>))", result);
}
Ejemplo n.º 10
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)");
  }
}
Ejemplo n.º 11
0
ATerm open_language_from_term(int conn, ATerm L, ATerm tbl)
{
  return SGopenLanguageFromTerm(program_name, L, ATBunpack(tbl));
}
Ejemplo n.º 12
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));
}