/**
 */
package de.ugoe.cs.swe.bnftools.ebnf;

import org.eclipse.emf.ecore.EFactory;

/**
 * <!-- begin-user-doc -->
 * The <b>Factory</b> for the model.
 * It provides a create method for each non-abstract class of the model.
 * <!-- end-user-doc -->
 * @see de.ugoe.cs.swe.bnftools.ebnf.EbnfPackage
 * @generated
 */
public interface EbnfFactory extends EFactory
{
  /**
   * The singleton instance of the factory.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @generated
   */
  EbnfFactory eINSTANCE = de.ugoe.cs.swe.bnftools.ebnf.impl.EbnfFactoryImpl.init();

  /**
   * Returns a new object of class '<em>Etsi Bnf</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Etsi Bnf</em>'.
   * @generated
   */
  EtsiBnf createEtsiBnf();

  /**
   * Returns a new object of class '<em>Import Section</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Import Section</em>'.
   * @generated
   */
  ImportSection createImportSection();

  /**
   * Returns a new object of class '<em>Bnf Entry</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Bnf Entry</em>'.
   * @generated
   */
  BnfEntry createBnfEntry();

  /**
   * Returns a new object of class '<em>Delta Entry</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Delta Entry</em>'.
   * @generated
   */
  DeltaEntry createDeltaEntry();

  /**
   * Returns a new object of class '<em>Merge Entry</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Merge Entry</em>'.
   * @generated
   */
  MergeEntry createMergeEntry();

  /**
   * Returns a new object of class '<em>Section Heading</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Section Heading</em>'.
   * @generated
   */
  SectionHeading createSectionHeading();

  /**
   * Returns a new object of class '<em>Import</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Import</em>'.
   * @generated
   */
  Import createImport();

  /**
   * Returns a new object of class '<em>Rule</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Rule</em>'.
   * @generated
   */
  Rule createRule();

  /**
   * Returns a new object of class '<em>Ext Rule</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Ext Rule</em>'.
   * @generated
   */
  ExtRule createExtRule();

  /**
   * Returns a new object of class '<em>Merge Rule</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Merge Rule</em>'.
   * @generated
   */
  MergeRule createMergeRule();

  /**
   * Returns a new object of class '<em>Global Combinator</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Global Combinator</em>'.
   * @generated
   */
  GlobalCombinator createGlobalCombinator();

  /**
   * Returns a new object of class '<em>Rule Combinator</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Rule Combinator</em>'.
   * @generated
   */
  RuleCombinator createRuleCombinator();

  /**
   * Returns a new object of class '<em>Hook Combinator</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Hook Combinator</em>'.
   * @generated
   */
  HookCombinator createHookCombinator();

  /**
   * Returns a new object of class '<em>Definition List</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Definition List</em>'.
   * @generated
   */
  DefinitionList createDefinitionList();

  /**
   * Returns a new object of class '<em>Single Definition</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Single Definition</em>'.
   * @generated
   */
  SingleDefinition createSingleDefinition();

  /**
   * Returns a new object of class '<em>Term</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Term</em>'.
   * @generated
   */
  Term createTerm();

  /**
   * Returns a new object of class '<em>Atom</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Atom</em>'.
   * @generated
   */
  Atom createAtom();

  /**
   * Returns a new object of class '<em>Rule Reference</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Rule Reference</em>'.
   * @generated
   */
  RuleReference createRuleReference();

  /**
   * Returns a new object of class '<em>String Rule</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>String Rule</em>'.
   * @generated
   */
  StringRule createStringRule();

  /**
   * Returns a new object of class '<em>Grouped Sequence</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Grouped Sequence</em>'.
   * @generated
   */
  GroupedSequence createGroupedSequence();

  /**
   * Returns a new object of class '<em>Optional Sequence</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Optional Sequence</em>'.
   * @generated
   */
  OptionalSequence createOptionalSequence();

  /**
   * Returns a new object of class '<em>Repeated Sequence</em>'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return a new object of class '<em>Repeated Sequence</em>'.
   * @generated
   */
  RepeatedSequence createRepeatedSequence();

  /**
   * Returns the package supported by this factory.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @return the package supported by this factory.
   * @generated
   */
  EbnfPackage getEbnfPackage();

} //EbnfFactory
