コード例 #1
0
SDF_ProductionList 
SDF_getModuleContextFreeProductions(SDF_Module module)
{
  SDF_ProductionList cfProds = SDF_makeProductionListEmpty();

  SDFforeachGrammarInModule(module,
			    (SDFGrammarFunc)collect_cf_prods,
			    (void *)&cfProds);

  return cfProds;
}
コード例 #2
0
SDF_ProductionList 
SDF_getModuleVariableProductions(SDF_Module module)
{
  SDF_ProductionList varProds = SDF_makeProductionListEmpty();

  SDFforeachGrammarInModule(module,
			    (SDFGrammarFunc)collect_var_prods,
			    (void *)&varProds);

  return varProds;
}
コード例 #3
0
SDF_ProductionList 
SDF_getModuleLexicalProductions(SDF_Module module)
{
  SDF_ProductionList lexProds = SDF_makeProductionListEmpty();

  SDFforeachGrammarInModule(module,
			    (SDFGrammarFunc)collect_lex_prods,
			    (void *)&lexProds);

  return lexProds;
}
コード例 #4
0
SDF_ProductionList
SDF_getGrammarKernelProductions(SDF_Grammar grammar)
{
  SDF_ProductionList prods = SDF_makeProductionListEmpty();

  SDFforeachGrammar(grammar,
		    (SDFGrammarFunc)collect_kernel_prods,
		    (void *)&prods);

  return prods;
}
コード例 #5
0
SDF_ProductionList 
SDF_getModuleProductions(SDF_Module module)
{
  SDF_ProductionList prods = SDF_makeProductionListEmpty();

  SDFforeachGrammarInModule(module,
			    (SDFGrammarFunc)collect_all_prods,
			    (void *)&prods);

  return prods;
}
コード例 #6
0
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;
}