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); } }
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)); }
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); }
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); }
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); }
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)); }
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)); }
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)); }
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); }
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)"); } }
ATerm open_language_from_term(int conn, ATerm L, ATerm tbl) { return SGopenLanguageFromTerm(program_name, L, ATBunpack(tbl)); }
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)); }