Exemplo n.º 1
0
void
SDFforeachGrammar(SDF_Grammar grammar, SDFGrammarFunc func, void *user_data)
{
  if (SDF_isGrammarConcGrammars(grammar)) {
    SDFforeachGrammar(SDF_getGrammarLeft(grammar), func, user_data);
    SDFforeachGrammar(SDF_getGrammarRight(grammar), func, user_data);
  }
  else {
    func(grammar, user_data);
  }
}
Exemplo n.º 2
0
SDF_ProductionList
SDF_getGrammarKernelProductions(SDF_Grammar grammar)
{
  SDF_ProductionList prods = SDF_makeProductionListEmpty();

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

  return prods;
}
Exemplo n.º 3
0
void
SDFforeachGrammarInSections(SDF_Sections    sections,
			    SDFGrammarFunc  func,
			    void           *user_data)
{
  SDF_SectionList sectionList = SDF_getSectionsList(sections);

  while (!SDF_isSectionListEmpty(sectionList)) {
    SDF_Section section = SDF_getSectionListHead(sectionList);
    SDF_Grammar grammar = SDF_getSectionGrammar(section);

    SDFforeachGrammar(grammar, func, user_data);

    if (SDF_isSectionListSingle(sectionList)) {
      break;
    }
    sectionList = SDF_getSectionListTail(sectionList);
  }
}