static SDF_ImportList getRelevantImports(char *moduleName, SDF_ImportList imports) { SDF_ModuleId id = SDF_makeModuleIdWord(SDF_makeCHARLISTString(moduleName)); SDF_ImportList relevantImports = SDF_makeImportListEmpty(); while (!SDF_isImportListEmpty(imports)) { SDF_Import import = SDF_getImportListHead(imports); SDF_ModuleName name = SDF_getImportModuleName(import); SDF_ModuleId importId = SDF_getModuleNameModuleId(name); assert(!SDF_hasModuleNameParams(name) && "parameters are supposed to be resolved before using this tool." " See get-import.c in sdf-support/lib"); if (SDF_isEqualModuleId(id, importId)) { relevantImports = SDF_concatImportList(relevantImports, SDF_makeImportListSingle(import)); } if (SDF_hasImportListTail(imports)) { imports = SDF_getImportListTail(imports); } else { break; } } return relevantImports; }
static PT_Attr SDFAttributeToPtAttr(SDF_Attribute sdfAttribute) { PT_Attr ptAttr = NULL; if (SDF_isAttributeBracket(sdfAttribute)) { ptAttr = PT_makeAttrBracket(); } else if (SDF_isAttributeReject(sdfAttribute)) { ptAttr = PT_makeAttrReject(); } else if (SDF_isAttributePrefer(sdfAttribute)) { ptAttr = PT_makeAttrPrefer(); } else if (SDF_isAttributeAvoid(sdfAttribute)) { ptAttr = PT_makeAttrAvoid(); } else if (SDF_isAttributeId(sdfAttribute)) { SDF_ModuleName sdfModuleName = SDF_getAttributeModuleName(sdfAttribute); SDF_ModuleId sdfModuleId = SDF_getModuleNameModuleId(sdfModuleName); char *str = PT_yieldTree((PT_Tree) sdfModuleId); ptAttr = PT_makeAttrId(str); } else if (SDF_isAttributeAssoc(sdfAttribute)) { SDF_Associativity sdfAssoc = SDF_getAttributeAssociativity(sdfAttribute); PT_Associativity ptAssoc = NULL; if (SDF_isAssociativityLeft(sdfAssoc)) { ptAssoc = PT_makeAssociativityLeft(); } else if (SDF_isAssociativityRight(sdfAssoc)) { ptAssoc = PT_makeAssociativityRight(); } else if (SDF_isAssociativityNonAssoc(sdfAssoc)) { ptAssoc = PT_makeAssociativityNonAssoc(); } else if (SDF_isAssociativityAssoc(sdfAssoc)) { ptAssoc = PT_makeAssociativityAssoc(); } ptAttr = PT_makeAttrAssoc(ptAssoc); } else if (SDF_isAttributeId(sdfAttribute)) { char *moduleName = PT_yieldTreeToString((PT_Tree) sdfAttribute, ATfalse); ptAttr = PT_makeAttrId(moduleName); } else if (SDF_isAttributeTerm(sdfAttribute)) { ATerm term = ATmake(PT_yieldTreeToString((PT_Tree) sdfAttribute, ATfalse)); if (term == NULL) { ATerror("SDFAttributeToPtAttr (term): unable to convert %s\n", PT_yieldTreeToString((PT_Tree) sdfAttribute, ATfalse)); ptAttr = NULL; } else { ptAttr = PT_makeAttrTerm(term); } } else { ATerror("SDFAttributeToPtAttr: unable to convert %s\n", PT_yieldTreeToString((PT_Tree) sdfAttribute, ATfalse)); ptAttr = NULL; } return ptAttr; }
ATerm SDF_getModuleNamePlain(SDF_ModuleName moduleName) { SDF_ModuleId modid = SDF_getModuleNameModuleId(moduleName); char *lex = SDF_getCHARLISTString(SDF_getModuleIdChars(modid)); return ATmake("<str>", lex); }