Exemplo n.º 1
0
SDF_ProductionList SDF_concatProductionList(SDF_ProductionList l1,
                                            SDF_ProductionList l2)
{
  if (!SDF_isProductionListEmpty(l2)) {
    if (SDF_hasProductionListHead(l1)) {
      SDF_Production head = SDF_getProductionListHead(l1);
      if (SDF_hasProductionListTail(l1)) {
        SDF_ProductionList tail = SDF_getProductionListTail(l1);

        return SDF_makeProductionListMany(head, 
                 SDF_makeLayoutEmpty(),
                 SDF_concatProductionList(tail, l2));
      }
      else {
        return SDF_makeProductionListMany(head, 
                 SDF_makeLayoutEmpty(), l2);
      }
    }
    else {
      return l2;
    }
  }          

  return l1;
}
Exemplo n.º 2
0
static void
collect_cf_prods(SDF_Grammar grammar, SDF_ProductionList *cfProds)
{
  if (SDF_isGrammarContextFreeSyntax(grammar)) {
    SDF_Productions grammarProds = SDF_getGrammarProductions(grammar);
    SDF_ProductionList prods = SDF_getProductionsList(grammarProds);

    *cfProds = SDF_concatProductionList(*cfProds,
					SDF_makeLayoutSpace(),
					prods);
  }
}
Exemplo n.º 3
0
static void
collect_lex_prods(SDF_Grammar grammar, SDF_ProductionList *lexProds)
{
  if (SDF_isGrammarLexicalSyntax(grammar)) {
    SDF_Productions grammarProds = SDF_getGrammarProductions(grammar);
    SDF_ProductionList prods = SDF_getProductionsList(grammarProds);

    *lexProds = SDF_concatProductionList(*lexProds,
					 SDF_makeLayoutSpace(),
					 prods);
  }
}
Exemplo n.º 4
0
static void
collect_var_prods(SDF_Grammar grammar, SDF_ProductionList *varProds)
{
  if (SDF_isGrammarVariables(grammar)) {
    SDF_Productions grammarProds = SDF_getGrammarProductions(grammar);
    SDF_ProductionList prods = SDF_getProductionsList(grammarProds);

    *varProds = SDF_concatProductionList(*varProds,
					 SDF_makeLayoutSpace(),
					 prods);
  }
}
Exemplo n.º 5
0
static void
collect_kernel_prods(SDF_Grammar grammar, SDF_ProductionList *prods)
{
  if (SDF_isGrammarSyntax(grammar)) {
    SDF_Productions grammarProds = SDF_getGrammarProductions(grammar);
    SDF_ProductionList lexProds = SDF_getProductionsList(grammarProds);

    *prods = SDF_concatProductionList(*prods,
				      SDF_makeLayoutSpace(),
				      lexProds);
  }
}
Exemplo n.º 6
0
static void
collect_all_prods(SDF_Grammar grammar, SDF_ProductionList *allProds)
{
  if (SDF_hasGrammarProductions(grammar)) {
    SDF_Productions grammarProds = SDF_getGrammarProductions(grammar);
    SDF_ProductionList prods = SDF_getProductionsList(grammarProds);

    *allProds = SDF_concatProductionList(*allProds,
					 SDF_makeLayoutSpace(),
					 prods);
  }
}
Exemplo n.º 7
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;
}