SDF_ProductionList SDF_getModuleContextFreeProductions(SDF_Module module) { SDF_ProductionList cfProds = SDF_makeProductionListEmpty(); SDFforeachGrammarInModule(module, (SDFGrammarFunc)collect_cf_prods, (void *)&cfProds); return cfProds; }
SDF_ProductionList SDF_getModuleVariableProductions(SDF_Module module) { SDF_ProductionList varProds = SDF_makeProductionListEmpty(); SDFforeachGrammarInModule(module, (SDFGrammarFunc)collect_var_prods, (void *)&varProds); return varProds; }
SDF_ProductionList SDF_getModuleLexicalProductions(SDF_Module module) { SDF_ProductionList lexProds = SDF_makeProductionListEmpty(); SDFforeachGrammarInModule(module, (SDFGrammarFunc)collect_lex_prods, (void *)&lexProds); return lexProds; }
SDF_ProductionList SDF_getGrammarKernelProductions(SDF_Grammar grammar) { SDF_ProductionList prods = SDF_makeProductionListEmpty(); SDFforeachGrammar(grammar, (SDFGrammarFunc)collect_kernel_prods, (void *)&prods); return prods; }
SDF_ProductionList SDF_getModuleProductions(SDF_Module module) { SDF_ProductionList prods = SDF_makeProductionListEmpty(); SDFforeachGrammarInModule(module, (SDFGrammarFunc)collect_all_prods, (void *)&prods); return prods; }
static SDF_ProductionList collectProductions(SDF_SDF syntax) { SDF_Definition def = SDF_getSDFDefinition(syntax); SDF_ModuleList modules = SDF_getDefinitionList(def); SDF_ProductionList productions = SDF_makeProductionListEmpty(); while (SDF_hasModuleListHead(modules) ) { SDF_Module module = SDF_getModuleListHead(modules); productions = SDF_concatProductionList(productions, SDF_getModuleContextFreeProductions(module)); if (!SDF_hasModuleListTail(modules)) { break; } else { modules = SDF_getModuleListTail(modules); } } return productions; }