Changeset 95 in default


Ignore:
Timestamp:
10/12/16 14:34:24 (8 years ago)
Author:
phdmakk
Message:

+ generated resources

Location:
v2/trunk/de.ugoe.cs.swe.bnftools.ebnf
Files:
2 added
1 deleted
18 edited

Legend:

Unmodified
Added
Removed
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/model/generated/Ebnf.ecore

    r88 r95  
    117117        eType="#//DefinitionList" containment="true"/> 
    118118    <eStructuralFeatures xsi:type="ecore:EAttribute" name="morethanonce" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> 
     119    <eStructuralFeatures xsi:type="ecore:EReference" name="range" eType="#//RepeatRange" 
     120        containment="true"/> 
     121  </eClassifiers> 
     122  <eClassifiers xsi:type="ecore:EClass" name="RepeatRange"> 
     123    <eStructuralFeatures xsi:type="ecore:EAttribute" name="from" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/> 
     124    <eStructuralFeatures xsi:type="ecore:EAttribute" name="to" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/> 
    119125  </eClassifiers> 
    120126</ecore:EPackage> 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/model/generated/Ebnf.genmodel

    r88 r95  
    9898      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Ebnf.ecore#//RepeatedSequence/definitions"/> 
    9999      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Ebnf.ecore#//RepeatedSequence/morethanonce"/> 
     100      <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference Ebnf.ecore#//RepeatedSequence/range"/> 
     101    </genClasses> 
     102    <genClasses ecoreClass="Ebnf.ecore#//RepeatRange"> 
     103      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Ebnf.ecore#//RepeatRange/from"/> 
     104      <genFeatures createChild="false" ecoreFeature="ecore:EAttribute Ebnf.ecore#//RepeatRange/to"/> 
    100105    </genClasses> 
    101106  </genPackages> 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/ebnf/EbnfFactory.java

    r88 r95  
    222222 
    223223  /** 
     224   * Returns a new object of class '<em>Repeat Range</em>'. 
     225   * <!-- begin-user-doc --> 
     226   * <!-- end-user-doc --> 
     227   * @return a new object of class '<em>Repeat Range</em>'. 
     228   * @generated 
     229   */ 
     230  RepeatRange createRepeatRange(); 
     231 
     232  /** 
    224233   * Returns the package supported by this factory. 
    225234   * <!-- begin-user-doc --> 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/ebnf/EbnfPackage.java

    r88 r95  
    926926 
    927927  /** 
     928   * The feature id for the '<em><b>Range</b></em>' containment reference. 
     929   * <!-- begin-user-doc --> 
     930   * <!-- end-user-doc --> 
     931   * @generated 
     932   * @ordered 
     933   */ 
     934  int REPEATED_SEQUENCE__RANGE = 2; 
     935 
     936  /** 
    928937   * The number of structural features of the '<em>Repeated Sequence</em>' class. 
    929938   * <!-- begin-user-doc --> 
     
    932941   * @ordered 
    933942   */ 
    934   int REPEATED_SEQUENCE_FEATURE_COUNT = 2; 
     943  int REPEATED_SEQUENCE_FEATURE_COUNT = 3; 
     944 
     945  /** 
     946   * The meta object id for the '{@link de.ugoe.cs.swe.bnftools.ebnf.impl.RepeatRangeImpl <em>Repeat Range</em>}' class. 
     947   * <!-- begin-user-doc --> 
     948   * <!-- end-user-doc --> 
     949   * @see de.ugoe.cs.swe.bnftools.ebnf.impl.RepeatRangeImpl 
     950   * @see de.ugoe.cs.swe.bnftools.ebnf.impl.EbnfPackageImpl#getRepeatRange() 
     951   * @generated 
     952   */ 
     953  int REPEAT_RANGE = 22; 
     954 
     955  /** 
     956   * The feature id for the '<em><b>From</b></em>' attribute. 
     957   * <!-- begin-user-doc --> 
     958   * <!-- end-user-doc --> 
     959   * @generated 
     960   * @ordered 
     961   */ 
     962  int REPEAT_RANGE__FROM = 0; 
     963 
     964  /** 
     965   * The feature id for the '<em><b>To</b></em>' attribute. 
     966   * <!-- begin-user-doc --> 
     967   * <!-- end-user-doc --> 
     968   * @generated 
     969   * @ordered 
     970   */ 
     971  int REPEAT_RANGE__TO = 1; 
     972 
     973  /** 
     974   * The number of structural features of the '<em>Repeat Range</em>' class. 
     975   * <!-- begin-user-doc --> 
     976   * <!-- end-user-doc --> 
     977   * @generated 
     978   * @ordered 
     979   */ 
     980  int REPEAT_RANGE_FEATURE_COUNT = 2; 
    935981 
    936982 
     
    16821728   */ 
    16831729  EAttribute getRepeatedSequence_Morethanonce(); 
     1730 
     1731  /** 
     1732   * Returns the meta object for the containment reference '{@link de.ugoe.cs.swe.bnftools.ebnf.RepeatedSequence#getRange <em>Range</em>}'. 
     1733   * <!-- begin-user-doc --> 
     1734   * <!-- end-user-doc --> 
     1735   * @return the meta object for the containment reference '<em>Range</em>'. 
     1736   * @see de.ugoe.cs.swe.bnftools.ebnf.RepeatedSequence#getRange() 
     1737   * @see #getRepeatedSequence() 
     1738   * @generated 
     1739   */ 
     1740  EReference getRepeatedSequence_Range(); 
     1741 
     1742  /** 
     1743   * Returns the meta object for class '{@link de.ugoe.cs.swe.bnftools.ebnf.RepeatRange <em>Repeat Range</em>}'. 
     1744   * <!-- begin-user-doc --> 
     1745   * <!-- end-user-doc --> 
     1746   * @return the meta object for class '<em>Repeat Range</em>'. 
     1747   * @see de.ugoe.cs.swe.bnftools.ebnf.RepeatRange 
     1748   * @generated 
     1749   */ 
     1750  EClass getRepeatRange(); 
     1751 
     1752  /** 
     1753   * Returns the meta object for the attribute '{@link de.ugoe.cs.swe.bnftools.ebnf.RepeatRange#getFrom <em>From</em>}'. 
     1754   * <!-- begin-user-doc --> 
     1755   * <!-- end-user-doc --> 
     1756   * @return the meta object for the attribute '<em>From</em>'. 
     1757   * @see de.ugoe.cs.swe.bnftools.ebnf.RepeatRange#getFrom() 
     1758   * @see #getRepeatRange() 
     1759   * @generated 
     1760   */ 
     1761  EAttribute getRepeatRange_From(); 
     1762 
     1763  /** 
     1764   * Returns the meta object for the attribute '{@link de.ugoe.cs.swe.bnftools.ebnf.RepeatRange#getTo <em>To</em>}'. 
     1765   * <!-- begin-user-doc --> 
     1766   * <!-- end-user-doc --> 
     1767   * @return the meta object for the attribute '<em>To</em>'. 
     1768   * @see de.ugoe.cs.swe.bnftools.ebnf.RepeatRange#getTo() 
     1769   * @see #getRepeatRange() 
     1770   * @generated 
     1771   */ 
     1772  EAttribute getRepeatRange_To(); 
    16841773 
    16851774  /** 
     
    23102399    EAttribute REPEATED_SEQUENCE__MORETHANONCE = eINSTANCE.getRepeatedSequence_Morethanonce(); 
    23112400 
     2401    /** 
     2402     * The meta object literal for the '<em><b>Range</b></em>' containment reference feature. 
     2403     * <!-- begin-user-doc --> 
     2404     * <!-- end-user-doc --> 
     2405     * @generated 
     2406     */ 
     2407    EReference REPEATED_SEQUENCE__RANGE = eINSTANCE.getRepeatedSequence_Range(); 
     2408 
     2409    /** 
     2410     * The meta object literal for the '{@link de.ugoe.cs.swe.bnftools.ebnf.impl.RepeatRangeImpl <em>Repeat Range</em>}' class. 
     2411     * <!-- begin-user-doc --> 
     2412     * <!-- end-user-doc --> 
     2413     * @see de.ugoe.cs.swe.bnftools.ebnf.impl.RepeatRangeImpl 
     2414     * @see de.ugoe.cs.swe.bnftools.ebnf.impl.EbnfPackageImpl#getRepeatRange() 
     2415     * @generated 
     2416     */ 
     2417    EClass REPEAT_RANGE = eINSTANCE.getRepeatRange(); 
     2418 
     2419    /** 
     2420     * The meta object literal for the '<em><b>From</b></em>' attribute feature. 
     2421     * <!-- begin-user-doc --> 
     2422     * <!-- end-user-doc --> 
     2423     * @generated 
     2424     */ 
     2425    EAttribute REPEAT_RANGE__FROM = eINSTANCE.getRepeatRange_From(); 
     2426 
     2427    /** 
     2428     * The meta object literal for the '<em><b>To</b></em>' attribute feature. 
     2429     * <!-- begin-user-doc --> 
     2430     * <!-- end-user-doc --> 
     2431     * @generated 
     2432     */ 
     2433    EAttribute REPEAT_RANGE__TO = eINSTANCE.getRepeatRange_To(); 
     2434 
    23122435  } 
    23132436 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/ebnf/RepeatedSequence.java

    r88 r95  
    1717 *   <li>{@link de.ugoe.cs.swe.bnftools.ebnf.RepeatedSequence#getDefinitions <em>Definitions</em>}</li> 
    1818 *   <li>{@link de.ugoe.cs.swe.bnftools.ebnf.RepeatedSequence#isMorethanonce <em>Morethanonce</em>}</li> 
     19 *   <li>{@link de.ugoe.cs.swe.bnftools.ebnf.RepeatedSequence#getRange <em>Range</em>}</li> 
    1920 * </ul> 
    2021 * </p> 
     
    6869  void setMorethanonce(boolean value); 
    6970 
     71  /** 
     72   * Returns the value of the '<em><b>Range</b></em>' containment reference. 
     73   * <!-- begin-user-doc --> 
     74   * <p> 
     75   * If the meaning of the '<em>Range</em>' containment reference isn't clear, 
     76   * there really should be more of a description here... 
     77   * </p> 
     78   * <!-- end-user-doc --> 
     79   * @return the value of the '<em>Range</em>' containment reference. 
     80   * @see #setRange(RepeatRange) 
     81   * @see de.ugoe.cs.swe.bnftools.ebnf.EbnfPackage#getRepeatedSequence_Range() 
     82   * @model containment="true" 
     83   * @generated 
     84   */ 
     85  RepeatRange getRange(); 
     86 
     87  /** 
     88   * Sets the value of the '{@link de.ugoe.cs.swe.bnftools.ebnf.RepeatedSequence#getRange <em>Range</em>}' containment reference. 
     89   * <!-- begin-user-doc --> 
     90   * <!-- end-user-doc --> 
     91   * @param value the new value of the '<em>Range</em>' containment reference. 
     92   * @see #getRange() 
     93   * @generated 
     94   */ 
     95  void setRange(RepeatRange value); 
     96 
    7097} // RepeatedSequence 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/ebnf/impl/EbnfFactoryImpl.java

    r88 r95  
    8787      case EbnfPackage.OPTIONAL_SEQUENCE: return createOptionalSequence(); 
    8888      case EbnfPackage.REPEATED_SEQUENCE: return createRepeatedSequence(); 
     89      case EbnfPackage.REPEAT_RANGE: return createRepeatRange(); 
    8990      default: 
    9091        throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); 
     
    339340   * @generated 
    340341   */ 
     342  public RepeatRange createRepeatRange() 
     343  { 
     344    RepeatRangeImpl repeatRange = new RepeatRangeImpl(); 
     345    return repeatRange; 
     346  } 
     347 
     348  /** 
     349   * <!-- begin-user-doc --> 
     350   * <!-- end-user-doc --> 
     351   * @generated 
     352   */ 
    341353  public EbnfPackage getEbnfPackage() 
    342354  { 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/ebnf/impl/EbnfPackageImpl.java

    r88 r95  
    1919import de.ugoe.cs.swe.bnftools.ebnf.MergeRule; 
    2020import de.ugoe.cs.swe.bnftools.ebnf.OptionalSequence; 
     21import de.ugoe.cs.swe.bnftools.ebnf.RepeatRange; 
    2122import de.ugoe.cs.swe.bnftools.ebnf.RepeatedSequence; 
    2223import de.ugoe.cs.swe.bnftools.ebnf.Rule; 
     
    198199 
    199200  /** 
     201   * <!-- begin-user-doc --> 
     202   * <!-- end-user-doc --> 
     203   * @generated 
     204   */ 
     205  private EClass repeatRangeEClass = null; 
     206 
     207  /** 
    200208   * Creates an instance of the model <b>Package</b>, registered with 
    201209   * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package 
     
    958966  { 
    959967    return (EAttribute)repeatedSequenceEClass.getEStructuralFeatures().get(1); 
     968  } 
     969 
     970  /** 
     971   * <!-- begin-user-doc --> 
     972   * <!-- end-user-doc --> 
     973   * @generated 
     974   */ 
     975  public EReference getRepeatedSequence_Range() 
     976  { 
     977    return (EReference)repeatedSequenceEClass.getEStructuralFeatures().get(2); 
     978  } 
     979 
     980  /** 
     981   * <!-- begin-user-doc --> 
     982   * <!-- end-user-doc --> 
     983   * @generated 
     984   */ 
     985  public EClass getRepeatRange() 
     986  { 
     987    return repeatRangeEClass; 
     988  } 
     989 
     990  /** 
     991   * <!-- begin-user-doc --> 
     992   * <!-- end-user-doc --> 
     993   * @generated 
     994   */ 
     995  public EAttribute getRepeatRange_From() 
     996  { 
     997    return (EAttribute)repeatRangeEClass.getEStructuralFeatures().get(0); 
     998  } 
     999 
     1000  /** 
     1001   * <!-- begin-user-doc --> 
     1002   * <!-- end-user-doc --> 
     1003   * @generated 
     1004   */ 
     1005  public EAttribute getRepeatRange_To() 
     1006  { 
     1007    return (EAttribute)repeatRangeEClass.getEStructuralFeatures().get(1); 
    9601008  } 
    9611009 
     
    10811129    createEReference(repeatedSequenceEClass, REPEATED_SEQUENCE__DEFINITIONS); 
    10821130    createEAttribute(repeatedSequenceEClass, REPEATED_SEQUENCE__MORETHANONCE); 
     1131    createEReference(repeatedSequenceEClass, REPEATED_SEQUENCE__RANGE); 
     1132 
     1133    repeatRangeEClass = createEClass(REPEAT_RANGE); 
     1134    createEAttribute(repeatRangeEClass, REPEAT_RANGE__FROM); 
     1135    createEAttribute(repeatRangeEClass, REPEAT_RANGE__TO); 
    10831136  } 
    10841137 
     
    12081261    initEReference(getRepeatedSequence_Definitions(), this.getDefinitionList(), null, "definitions", null, 0, -1, RepeatedSequence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); 
    12091262    initEAttribute(getRepeatedSequence_Morethanonce(), ecorePackage.getEBoolean(), "morethanonce", null, 0, 1, RepeatedSequence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); 
     1263    initEReference(getRepeatedSequence_Range(), this.getRepeatRange(), null, "range", null, 0, 1, RepeatedSequence.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); 
     1264 
     1265    initEClass(repeatRangeEClass, RepeatRange.class, "RepeatRange", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); 
     1266    initEAttribute(getRepeatRange_From(), ecorePackage.getEInt(), "from", null, 0, 1, RepeatRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); 
     1267    initEAttribute(getRepeatRange_To(), ecorePackage.getEInt(), "to", null, 0, 1, RepeatRange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); 
    12101268 
    12111269    // Create resource 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/ebnf/impl/RepeatedSequenceImpl.java

    r88 r95  
    55import de.ugoe.cs.swe.bnftools.ebnf.DefinitionList; 
    66import de.ugoe.cs.swe.bnftools.ebnf.EbnfPackage; 
     7import de.ugoe.cs.swe.bnftools.ebnf.RepeatRange; 
    78import de.ugoe.cs.swe.bnftools.ebnf.RepeatedSequence; 
    89 
     
    3233 *   <li>{@link de.ugoe.cs.swe.bnftools.ebnf.impl.RepeatedSequenceImpl#getDefinitions <em>Definitions</em>}</li> 
    3334 *   <li>{@link de.ugoe.cs.swe.bnftools.ebnf.impl.RepeatedSequenceImpl#isMorethanonce <em>Morethanonce</em>}</li> 
     35 *   <li>{@link de.ugoe.cs.swe.bnftools.ebnf.impl.RepeatedSequenceImpl#getRange <em>Range</em>}</li> 
    3436 * </ul> 
    3537 * </p> 
     
    7072 
    7173  /** 
     74   * The cached value of the '{@link #getRange() <em>Range</em>}' containment reference. 
     75   * <!-- begin-user-doc --> 
     76   * <!-- end-user-doc --> 
     77   * @see #getRange() 
     78   * @generated 
     79   * @ordered 
     80   */ 
     81  protected RepeatRange range; 
     82 
     83  /** 
    7284   * <!-- begin-user-doc --> 
    7385   * <!-- end-user-doc --> 
     
    132144   * @generated 
    133145   */ 
     146  public RepeatRange getRange() 
     147  { 
     148    return range; 
     149  } 
     150 
     151  /** 
     152   * <!-- begin-user-doc --> 
     153   * <!-- end-user-doc --> 
     154   * @generated 
     155   */ 
     156  public NotificationChain basicSetRange(RepeatRange newRange, NotificationChain msgs) 
     157  { 
     158    RepeatRange oldRange = range; 
     159    range = newRange; 
     160    if (eNotificationRequired()) 
     161    { 
     162      ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, EbnfPackage.REPEATED_SEQUENCE__RANGE, oldRange, newRange); 
     163      if (msgs == null) msgs = notification; else msgs.add(notification); 
     164    } 
     165    return msgs; 
     166  } 
     167 
     168  /** 
     169   * <!-- begin-user-doc --> 
     170   * <!-- end-user-doc --> 
     171   * @generated 
     172   */ 
     173  public void setRange(RepeatRange newRange) 
     174  { 
     175    if (newRange != range) 
     176    { 
     177      NotificationChain msgs = null; 
     178      if (range != null) 
     179        msgs = ((InternalEObject)range).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - EbnfPackage.REPEATED_SEQUENCE__RANGE, null, msgs); 
     180      if (newRange != null) 
     181        msgs = ((InternalEObject)newRange).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - EbnfPackage.REPEATED_SEQUENCE__RANGE, null, msgs); 
     182      msgs = basicSetRange(newRange, msgs); 
     183      if (msgs != null) msgs.dispatch(); 
     184    } 
     185    else if (eNotificationRequired()) 
     186      eNotify(new ENotificationImpl(this, Notification.SET, EbnfPackage.REPEATED_SEQUENCE__RANGE, newRange, newRange)); 
     187  } 
     188 
     189  /** 
     190   * <!-- begin-user-doc --> 
     191   * <!-- end-user-doc --> 
     192   * @generated 
     193   */ 
    134194  @Override 
    135195  public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) 
     
    139199      case EbnfPackage.REPEATED_SEQUENCE__DEFINITIONS: 
    140200        return ((InternalEList<?>)getDefinitions()).basicRemove(otherEnd, msgs); 
     201      case EbnfPackage.REPEATED_SEQUENCE__RANGE: 
     202        return basicSetRange(null, msgs); 
    141203    } 
    142204    return super.eInverseRemove(otherEnd, featureID, msgs); 
     
    157219      case EbnfPackage.REPEATED_SEQUENCE__MORETHANONCE: 
    158220        return isMorethanonce(); 
     221      case EbnfPackage.REPEATED_SEQUENCE__RANGE: 
     222        return getRange(); 
    159223    } 
    160224    return super.eGet(featureID, resolve, coreType); 
     
    179243        setMorethanonce((Boolean)newValue); 
    180244        return; 
     245      case EbnfPackage.REPEATED_SEQUENCE__RANGE: 
     246        setRange((RepeatRange)newValue); 
     247        return; 
    181248    } 
    182249    super.eSet(featureID, newValue); 
     
    198265      case EbnfPackage.REPEATED_SEQUENCE__MORETHANONCE: 
    199266        setMorethanonce(MORETHANONCE_EDEFAULT); 
     267        return; 
     268      case EbnfPackage.REPEATED_SEQUENCE__RANGE: 
     269        setRange((RepeatRange)null); 
    200270        return; 
    201271    } 
     
    217287      case EbnfPackage.REPEATED_SEQUENCE__MORETHANONCE: 
    218288        return morethanonce != MORETHANONCE_EDEFAULT; 
     289      case EbnfPackage.REPEATED_SEQUENCE__RANGE: 
     290        return range != null; 
    219291    } 
    220292    return super.eIsSet(featureID); 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/ebnf/util/EbnfAdapterFactory.java

    r88 r95  
    186186      } 
    187187      @Override 
     188      public Adapter caseRepeatRange(RepeatRange object) 
     189      { 
     190        return createRepeatRangeAdapter(); 
     191      } 
     192      @Override 
    188193      public Adapter defaultCase(EObject object) 
    189194      { 
     
    538543 
    539544  /** 
     545   * Creates a new adapter for an object of class '{@link de.ugoe.cs.swe.bnftools.ebnf.RepeatRange <em>Repeat Range</em>}'. 
     546   * <!-- begin-user-doc --> 
     547   * This default implementation returns null so that we can easily ignore cases; 
     548   * it's useful to ignore a case when inheritance will catch all the cases anyway. 
     549   * <!-- end-user-doc --> 
     550   * @return the new adapter. 
     551   * @see de.ugoe.cs.swe.bnftools.ebnf.RepeatRange 
     552   * @generated 
     553   */ 
     554  public Adapter createRepeatRangeAdapter() 
     555  { 
     556    return null; 
     557  } 
     558 
     559  /** 
    540560   * Creates a new adapter for the default case. 
    541561   * <!-- begin-user-doc --> 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/ebnf/util/EbnfSwitch.java

    r88 r95  
    230230        return result; 
    231231      } 
     232      case EbnfPackage.REPEAT_RANGE: 
     233      { 
     234        RepeatRange repeatRange = (RepeatRange)theEObject; 
     235        T result = caseRepeatRange(repeatRange); 
     236        if (result == null) result = defaultCase(theEObject); 
     237        return result; 
     238      } 
    232239      default: return defaultCase(theEObject); 
    233240    } 
     
    587594 
    588595  /** 
     596   * Returns the result of interpreting the object as an instance of '<em>Repeat Range</em>'. 
     597   * <!-- begin-user-doc --> 
     598   * This implementation returns null; 
     599   * returning a non-null result will terminate the switch. 
     600   * <!-- end-user-doc --> 
     601   * @param object the target of the switch. 
     602   * @return the result of interpreting the object as an instance of '<em>Repeat Range</em>'. 
     603   * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) 
     604   * @generated 
     605   */ 
     606  public T caseRepeatRange(RepeatRange object) 
     607  { 
     608    return null; 
     609  } 
     610 
     611  /** 
    589612   * Returns the result of interpreting the object as an instance of '<em>EObject</em>'. 
    590613   * <!-- begin-user-doc --> 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g

    r61 r95  
    66options { 
    77        superClass=AbstractInternalAntlrParser; 
     8        backtrack=true; 
     9         memoize=true; 
    810         
    911} 
     
    3537@parser::members { 
    3638 
     39/* 
     40  This grammar contains a lot of empty actions to work around a bug in ANTLR. 
     41  Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases. 
     42*/ 
     43  
    3744        private EbnfGrammarAccess grammarAccess; 
    3845         
     
    521528    @after { leaveRule(); }: 
    522529(( 
     530        {  
     531          /* */  
     532        } 
    523533    { 
    524534        $current = forceCreateModelElement( 
     
    967977    @after { leaveRule(); }: 
    968978( 
     979        {  
     980          /* */  
     981        } 
    969982    {  
    970983        newCompositeNode(grammarAccess.getMergeRuleAccess().getGlobalCombinatorParserRuleCall_0());  
     
    977990 
    978991    | 
     992        {  
     993          /* */  
     994        } 
    979995    {  
    980996        newCompositeNode(grammarAccess.getMergeRuleAccess().getRuleCombinatorParserRuleCall_1());  
     
    9871003 
    9881004    | 
     1005        {  
     1006          /* */  
     1007        } 
    9891008    {  
    9901009        newCompositeNode(grammarAccess.getMergeRuleAccess().getHookCombinatorParserRuleCall_2());  
     
    15391558( 
    15401559( 
     1560                {  
     1561                  /* */  
     1562                } 
    15411563                { 
    15421564                        if ($current==null) { 
     
    17491771        newLeafNode(otherlv_2, grammarAccess.getRepeatedSequenceAccess().getRightCurlyBracketKeyword_2()); 
    17501772    } 
    1751 ( 
     1773(( 
    17521774( 
    17531775                lv_morethanonce_3_0=    '+'  
    17541776    { 
    1755         newLeafNode(lv_morethanonce_3_0, grammarAccess.getRepeatedSequenceAccess().getMorethanoncePlusSignKeyword_3_0()); 
     1777        newLeafNode(lv_morethanonce_3_0, grammarAccess.getRepeatedSequenceAccess().getMorethanoncePlusSignKeyword_3_0_0()); 
    17561778    } 
    17571779  
     
    17641786 
    17651787) 
    1766 )?) 
     1788)? 
     1789    |( 
     1790( 
     1791                {  
     1792                newCompositeNode(grammarAccess.getRepeatedSequenceAccess().getRangeRepeatRangeParserRuleCall_3_1_0());  
     1793            } 
     1794                lv_range_4_0=ruleRepeatRange            { 
     1795                if ($current==null) { 
     1796                    $current = createModelElementForParent(grammarAccess.getRepeatedSequenceRule()); 
     1797                } 
     1798                set( 
     1799                        $current,  
     1800                        "range", 
     1801                        lv_range_4_0,  
     1802                        "RepeatRange"); 
     1803                afterParserOrEnumRuleCall(); 
     1804            } 
     1805 
     1806) 
     1807)?)) 
     1808; 
     1809 
     1810 
     1811 
     1812 
     1813 
     1814// Entry rule entryRuleRepeatRange 
     1815entryRuleRepeatRange returns [EObject current=null]  
     1816        : 
     1817        { newCompositeNode(grammarAccess.getRepeatRangeRule()); } 
     1818         iv_ruleRepeatRange=ruleRepeatRange  
     1819         { $current=$iv_ruleRepeatRange.current; }  
     1820         EOF  
     1821; 
     1822 
     1823// Rule RepeatRange 
     1824ruleRepeatRange returns [EObject current=null]  
     1825    @init { enterRule();  
     1826    } 
     1827    @after { leaveRule(); }: 
     1828(       otherlv_0='#'  
     1829    { 
     1830        newLeafNode(otherlv_0, grammarAccess.getRepeatRangeAccess().getNumberSignKeyword_0()); 
     1831    } 
     1832        otherlv_1='('  
     1833    { 
     1834        newLeafNode(otherlv_1, grammarAccess.getRepeatRangeAccess().getLeftParenthesisKeyword_1()); 
     1835    } 
     1836( 
     1837( 
     1838                lv_from_2_0=RULE_INT 
     1839                { 
     1840                        newLeafNode(lv_from_2_0, grammarAccess.getRepeatRangeAccess().getFromINTTerminalRuleCall_2_0());  
     1841                } 
     1842                { 
     1843                if ($current==null) { 
     1844                    $current = createModelElement(grammarAccess.getRepeatRangeRule()); 
     1845                } 
     1846                setWithLastConsumed( 
     1847                        $current,  
     1848                        "from", 
     1849                        lv_from_2_0,  
     1850                        "INT"); 
     1851            } 
     1852 
     1853) 
     1854)       otherlv_3=','  
     1855    { 
     1856        newLeafNode(otherlv_3, grammarAccess.getRepeatRangeAccess().getCommaKeyword_3()); 
     1857    } 
     1858( 
     1859( 
     1860                lv_to_4_0=RULE_INT 
     1861                { 
     1862                        newLeafNode(lv_to_4_0, grammarAccess.getRepeatRangeAccess().getToINTTerminalRuleCall_4_0());  
     1863                } 
     1864                { 
     1865                if ($current==null) { 
     1866                    $current = createModelElement(grammarAccess.getRepeatRangeRule()); 
     1867                } 
     1868                setWithLastConsumed( 
     1869                        $current,  
     1870                        "to", 
     1871                        lv_to_4_0,  
     1872                        "INT"); 
     1873            } 
     1874 
     1875) 
     1876)       otherlv_5=')'  
     1877    { 
     1878        newLeafNode(otherlv_5, grammarAccess.getRepeatRangeAccess().getRightParenthesisKeyword_5()); 
     1879    } 
     1880) 
    17671881; 
    17681882 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.tokens

    r88 r95  
     1RULE_ID=4 
     2T__40=40 
     3RULE_SECTIONHEADER=5 
     4T__41=41 
     5T__29=29 
     6T__28=28 
     7T__27=27 
     8T__26=26 
     9T__25=25 
     10T__24=24 
     11T__23=23 
     12T__22=22 
     13T__21=21 
     14T__20=20 
     15RULE_SL_COMMENT=11 
     16RULE_ML_COMMENT=12 
     17T__30=30 
     18T__19=19 
     19RULE_COLON=9 
     20T__31=31 
    121RULE_STRING=6 
    2 RULE_SL_COMMENT=11 
    3 T__19=19 
    4 RULE_SECTIONHEADER=5 
     22T__32=32 
     23T__33=33 
     24T__16=16 
     25T__34=34 
    526T__15=15 
     27T__35=35 
     28T__18=18 
     29T__36=36 
     30T__17=17 
     31RULE_LOGIC=8 
    632T__37=37 
    7 T__16=16 
    833T__38=38 
    9 T__17=17 
    1034T__39=39 
    11 T__18=18 
    12 T__33=33 
    13 T__34=34 
     35T__14=14 
    1436T__13=13 
    15 T__35=35 
    16 T__14=14 
    17 T__36=36 
    18 T__30=30 
    19 T__31=31 
    20 T__32=32 
    21 RULE_ID=4 
     37RULE_INT=7 
    2238RULE_WS=10 
    23 RULE_COLON=9 
    24 RULE_LOGIC=8 
    25 T__26=26 
    26 T__27=27 
    27 T__28=28 
    28 RULE_INT=7 
    29 T__29=29 
    30 T__22=22 
    31 RULE_ML_COMMENT=12 
    32 T__23=23 
    33 T__24=24 
    34 T__25=25 
    35 T__20=20 
    36 T__21=21 
     39'update'=22 
     40'|'=31 
     41'#'=40 
     42'::='=25 
     43'/'=19 
     44';'=15 
     45'grammar'=13 
     46'global'=36 
     47'core'=20 
     48'+'=35 
     49'.'=24 
     50')'=27 
     51'import'=18 
     52'hook'=39 
     53'<-'=28 
     54'}'=30 
     55'rule'=38 
     56'/delta'=16 
    3757'/merge'=17 
    38 'import'=18 
    39 'grammar'=13 
    40 '+'=35 
    41 ')'=27 
     58'/bnf'=14 
     59'{'=33 
     60'package'=21 
     61'label:'=23 
     62'combinator:'=37 
     63'('=26 
     64'['=32 
     65'*'=34 
     66','=41 
    4267']'=29 
    43 '|'=31 
    44 'label:'=23 
    45 '['=32 
    46 'core'=20 
    47 'global'=36 
    48 '<-'=28 
    49 '.'=24 
    50 'update'=22 
    51 '/bnf'=14 
    52 '*'=34 
    53 'package'=21 
    54 '('=26 
    55 'hook'=39 
    56 '/delta'=16 
    57 'rule'=38 
    58 '::='=25 
    59 '}'=30 
    60 ';'=15 
    61 '{'=33 
    62 '/'=19 
    63 'combinator:'=37 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnfLexer.java

    r88 r95  
    1313@SuppressWarnings("all") 
    1414public class InternalEbnfLexer extends Lexer { 
    15     public static final int RULE_STRING=6; 
     15    public static final int T__40=40; 
     16    public static final int RULE_ID=4; 
     17    public static final int RULE_SECTIONHEADER=5; 
     18    public static final int T__41=41; 
     19    public static final int T__29=29; 
     20    public static final int T__28=28; 
     21    public static final int T__27=27; 
     22    public static final int T__26=26; 
     23    public static final int T__25=25; 
     24    public static final int T__24=24; 
     25    public static final int T__23=23; 
     26    public static final int T__22=22; 
     27    public static final int T__21=21; 
     28    public static final int T__20=20; 
     29    public static final int EOF=-1; 
    1630    public static final int RULE_SL_COMMENT=11; 
     31    public static final int RULE_ML_COMMENT=12; 
    1732    public static final int T__19=19; 
    18     public static final int RULE_SECTIONHEADER=5; 
    19     public static final int T__15=15; 
    20     public static final int T__37=37; 
    21     public static final int T__16=16; 
    22     public static final int T__38=38; 
    23     public static final int T__17=17; 
    24     public static final int T__39=39; 
    25     public static final int T__18=18; 
    26     public static final int T__33=33; 
    27     public static final int T__34=34; 
    28     public static final int T__13=13; 
    29     public static final int T__35=35; 
    30     public static final int T__14=14; 
    31     public static final int T__36=36; 
    32     public static final int EOF=-1; 
    3333    public static final int T__30=30; 
    3434    public static final int T__31=31; 
     35    public static final int RULE_COLON=9; 
    3536    public static final int T__32=32; 
    36     public static final int RULE_ID=4; 
     37    public static final int RULE_STRING=6; 
     38    public static final int T__16=16; 
     39    public static final int T__33=33; 
     40    public static final int T__15=15; 
     41    public static final int T__34=34; 
     42    public static final int T__18=18; 
     43    public static final int T__35=35; 
     44    public static final int T__17=17; 
     45    public static final int T__36=36; 
     46    public static final int T__37=37; 
     47    public static final int RULE_LOGIC=8; 
     48    public static final int T__38=38; 
     49    public static final int T__14=14; 
     50    public static final int T__39=39; 
     51    public static final int T__13=13; 
     52    public static final int RULE_INT=7; 
    3753    public static final int RULE_WS=10; 
    38     public static final int RULE_COLON=9; 
    39     public static final int RULE_LOGIC=8; 
    40     public static final int T__26=26; 
    41     public static final int T__27=27; 
    42     public static final int T__28=28; 
    43     public static final int RULE_INT=7; 
    44     public static final int T__29=29; 
    45     public static final int T__22=22; 
    46     public static final int RULE_ML_COMMENT=12; 
    47     public static final int T__23=23; 
    48     public static final int T__24=24; 
    49     public static final int T__25=25; 
    50     public static final int T__20=20; 
    51     public static final int T__21=21; 
    5254 
    5355    // delegates 
     
    619621    // $ANTLR end "T__39" 
    620622 
     623    // $ANTLR start "T__40" 
     624    public final void mT__40() throws RecognitionException { 
     625        try { 
     626            int _type = T__40; 
     627            int _channel = DEFAULT_TOKEN_CHANNEL; 
     628            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:38:7: ( '#' ) 
     629            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:38:9: '#' 
     630            { 
     631            match('#');  
     632 
     633            } 
     634 
     635            state.type = _type; 
     636            state.channel = _channel; 
     637        } 
     638        finally { 
     639        } 
     640    } 
     641    // $ANTLR end "T__40" 
     642 
     643    // $ANTLR start "T__41" 
     644    public final void mT__41() throws RecognitionException { 
     645        try { 
     646            int _type = T__41; 
     647            int _channel = DEFAULT_TOKEN_CHANNEL; 
     648            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:39:7: ( ',' ) 
     649            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:39:9: ',' 
     650            { 
     651            match(',');  
     652 
     653            } 
     654 
     655            state.type = _type; 
     656            state.channel = _channel; 
     657        } 
     658        finally { 
     659        } 
     660    } 
     661    // $ANTLR end "T__41" 
     662 
    621663    // $ANTLR start "RULE_ID" 
    622664    public final void mRULE_ID() throws RecognitionException { 
     
    624666            int _type = RULE_ID; 
    625667            int _channel = DEFAULT_TOKEN_CHANNEL; 
    626             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1773:9: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* ) 
    627             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1773:11: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* 
     668            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1887:9: ( ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* ) 
     669            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1887:11: ( 'a' .. 'z' | 'A' .. 'Z' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* 
    628670            { 
    629671            if ( (input.LA(1)>='A' && input.LA(1)<='Z')||input.LA(1)=='_'||(input.LA(1)>='a' && input.LA(1)<='z') ) { 
     
    636678                throw mse;} 
    637679 
    638             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1773:35: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* 
     680            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1887:35: ( 'a' .. 'z' | 'A' .. 'Z' | '0' .. '9' | '_' )* 
    639681            loop1: 
    640682            do { 
     
    685727            int _type = RULE_INT; 
    686728            int _channel = DEFAULT_TOKEN_CHANNEL; 
    687             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1775:10: ( ( '0' .. '9' )+ ) 
    688             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1775:12: ( '0' .. '9' )+ 
    689             { 
    690             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1775:12: ( '0' .. '9' )+ 
     729            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1889:10: ( ( '0' .. '9' )+ ) 
     730            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1889:12: ( '0' .. '9' )+ 
     731            { 
     732            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1889:12: ( '0' .. '9' )+ 
    691733            int cnt2=0; 
    692734            loop2: 
     
    702744                switch (alt2) { 
    703745                case 1 : 
    704                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1775:13: '0' .. '9' 
     746                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1889:13: '0' .. '9' 
    705747                    { 
    706748                    matchRange('0','9');  
     
    734776            int _type = RULE_WS; 
    735777            int _channel = DEFAULT_TOKEN_CHANNEL; 
    736             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1777:9: ( ( ' ' | '\\t' | ( '\\r' )? '\\n' )+ ) 
    737             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1777:11: ( ' ' | '\\t' | ( '\\r' )? '\\n' )+ 
    738             { 
    739             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1777:11: ( ' ' | '\\t' | ( '\\r' )? '\\n' )+ 
     778            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1891:9: ( ( ' ' | '\\t' | ( '\\r' )? '\\n' )+ ) 
     779            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1891:11: ( ' ' | '\\t' | ( '\\r' )? '\\n' )+ 
     780            { 
     781            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1891:11: ( ' ' | '\\t' | ( '\\r' )? '\\n' )+ 
    740782            int cnt4=0; 
    741783            loop4: 
     
    764806                switch (alt4) { 
    765807                case 1 : 
    766                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1777:12: ' ' 
     808                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1891:12: ' ' 
    767809                    { 
    768810                    match(' ');  
     
    771813                    break; 
    772814                case 2 : 
    773                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1777:16: '\\t' 
     815                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1891:16: '\\t' 
    774816                    { 
    775817                    match('\t');  
     
    778820                    break; 
    779821                case 3 : 
    780                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1777:21: ( '\\r' )? '\\n' 
     822                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1891:21: ( '\\r' )? '\\n' 
    781823                    { 
    782                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1777:21: ( '\\r' )? 
     824                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1891:21: ( '\\r' )? 
    783825                    int alt3=2; 
    784826                    int LA3_0 = input.LA(1); 
     
    789831                    switch (alt3) { 
    790832                        case 1 : 
    791                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1777:21: '\\r' 
     833                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1891:21: '\\r' 
    792834                            { 
    793835                            match('\r');  
     
    828870            int _type = RULE_COLON; 
    829871            int _channel = DEFAULT_TOKEN_CHANNEL; 
    830             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1779:12: ( '\"' '\"' '\"' ) 
    831             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1779:14: '\"' '\"' '\"' 
     872            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1893:12: ( '\"' '\"' '\"' ) 
     873            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1893:14: '\"' '\"' '\"' 
    832874            { 
    833875            match('\"');  
     
    850892            int _type = RULE_STRING; 
    851893            int _channel = DEFAULT_TOKEN_CHANNEL; 
    852             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1781:13: ( ( '\"' (~ ( '\"' ) )* '\"' | '\\'' (~ ( '\\'' ) )* '\\'' ) ) 
    853             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1781:15: ( '\"' (~ ( '\"' ) )* '\"' | '\\'' (~ ( '\\'' ) )* '\\'' ) 
    854             { 
    855             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1781:15: ( '\"' (~ ( '\"' ) )* '\"' | '\\'' (~ ( '\\'' ) )* '\\'' ) 
     894            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1895:13: ( ( '\"' (~ ( '\"' ) )* '\"' | '\\'' (~ ( '\\'' ) )* '\\'' ) ) 
     895            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1895:15: ( '\"' (~ ( '\"' ) )* '\"' | '\\'' (~ ( '\\'' ) )* '\\'' ) 
     896            { 
     897            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1895:15: ( '\"' (~ ( '\"' ) )* '\"' | '\\'' (~ ( '\\'' ) )* '\\'' ) 
    856898            int alt7=2; 
    857899            int LA7_0 = input.LA(1); 
     
    871913            switch (alt7) { 
    872914                case 1 : 
    873                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1781:16: '\"' (~ ( '\"' ) )* '\"' 
     915                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1895:16: '\"' (~ ( '\"' ) )* '\"' 
    874916                    { 
    875917                    match('\"');  
    876                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1781:20: (~ ( '\"' ) )* 
     918                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1895:20: (~ ( '\"' ) )* 
    877919                    loop5: 
    878920                    do { 
     
    887929                        switch (alt5) { 
    888930                        case 1 : 
    889                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1781:20: ~ ( '\"' ) 
     931                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1895:20: ~ ( '\"' ) 
    890932                            { 
    891933                            if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='\uFFFF') ) { 
     
    912954                    break; 
    913955                case 2 : 
    914                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1781:32: '\\'' (~ ( '\\'' ) )* '\\'' 
     956                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1895:32: '\\'' (~ ( '\\'' ) )* '\\'' 
    915957                    { 
    916958                    match('\'');  
    917                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1781:37: (~ ( '\\'' ) )* 
     959                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1895:37: (~ ( '\\'' ) )* 
    918960                    loop6: 
    919961                    do { 
     
    928970                        switch (alt6) { 
    929971                        case 1 : 
    930                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1781:37: ~ ( '\\'' ) 
     972                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1895:37: ~ ( '\\'' ) 
    931973                            { 
    932974                            if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='\uFFFF') ) { 
     
    9711013            int _type = RULE_SECTIONHEADER; 
    9721014            int _channel = DEFAULT_TOKEN_CHANNEL; 
    973             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1783:20: ( ( 'a' .. 'z' | 'A' .. 'Z' ) ( '.' | '0' .. '9' )+ ( ' ' | '\\t' ) (~ ( ( '\\n' | '\\r' ) ) )* ( '\\r' )? '\\n' ) 
    974             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1783:22: ( 'a' .. 'z' | 'A' .. 'Z' ) ( '.' | '0' .. '9' )+ ( ' ' | '\\t' ) (~ ( ( '\\n' | '\\r' ) ) )* ( '\\r' )? '\\n' 
     1015            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1897:20: ( ( 'a' .. 'z' | 'A' .. 'Z' ) ( '.' | '0' .. '9' )+ ( ' ' | '\\t' ) (~ ( ( '\\n' | '\\r' ) ) )* ( '\\r' )? '\\n' ) 
     1016            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1897:22: ( 'a' .. 'z' | 'A' .. 'Z' ) ( '.' | '0' .. '9' )+ ( ' ' | '\\t' ) (~ ( ( '\\n' | '\\r' ) ) )* ( '\\r' )? '\\n' 
    9751017            { 
    9761018            if ( (input.LA(1)>='A' && input.LA(1)<='Z')||(input.LA(1)>='a' && input.LA(1)<='z') ) { 
     
    9831025                throw mse;} 
    9841026 
    985             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1783:42: ( '.' | '0' .. '9' )+ 
     1027            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1897:42: ( '.' | '0' .. '9' )+ 
    9861028            int cnt8=0; 
    9871029            loop8: 
     
    10301072                throw mse;} 
    10311073 
    1032             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1783:69: (~ ( ( '\\n' | '\\r' ) ) )* 
     1074            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1897:69: (~ ( ( '\\n' | '\\r' ) ) )* 
    10331075            loop9: 
    10341076            do { 
     
    10431085                switch (alt9) { 
    10441086                case 1 : 
    1045                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1783:69: ~ ( ( '\\n' | '\\r' ) ) 
     1087                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1897:69: ~ ( ( '\\n' | '\\r' ) ) 
    10461088                    { 
    10471089                    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) { 
     
    10631105            } while (true); 
    10641106 
    1065             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1783:85: ( '\\r' )? 
     1107            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1897:85: ( '\\r' )? 
    10661108            int alt10=2; 
    10671109            int LA10_0 = input.LA(1); 
     
    10721114            switch (alt10) { 
    10731115                case 1 : 
    1074                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1783:85: '\\r' 
     1116                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1897:85: '\\r' 
    10751117                    { 
    10761118                    match('\r');  
     
    10981140            int _type = RULE_SL_COMMENT; 
    10991141            int _channel = DEFAULT_TOKEN_CHANNEL; 
    1100             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1785:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) 
    1101             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1785:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? 
     1142            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1899:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? ) 
     1143            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1899:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? 
    11021144            { 
    11031145            match("//");  
    11041146 
    1105             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1785:24: (~ ( ( '\\n' | '\\r' ) ) )* 
     1147            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1899:24: (~ ( ( '\\n' | '\\r' ) ) )* 
    11061148            loop11: 
    11071149            do { 
     
    11161158                switch (alt11) { 
    11171159                case 1 : 
    1118                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1785:24: ~ ( ( '\\n' | '\\r' ) ) 
     1160                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1899:24: ~ ( ( '\\n' | '\\r' ) ) 
    11191161                    { 
    11201162                    if ( (input.LA(1)>='\u0000' && input.LA(1)<='\t')||(input.LA(1)>='\u000B' && input.LA(1)<='\f')||(input.LA(1)>='\u000E' && input.LA(1)<='\uFFFF') ) { 
     
    11361178            } while (true); 
    11371179 
    1138             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1785:40: ( ( '\\r' )? '\\n' )? 
     1180            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1899:40: ( ( '\\r' )? '\\n' )? 
    11391181            int alt13=2; 
    11401182            int LA13_0 = input.LA(1); 
     
    11451187            switch (alt13) { 
    11461188                case 1 : 
    1147                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1785:41: ( '\\r' )? '\\n' 
     1189                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1899:41: ( '\\r' )? '\\n' 
    11481190                    { 
    1149                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1785:41: ( '\\r' )? 
     1191                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1899:41: ( '\\r' )? 
    11501192                    int alt12=2; 
    11511193                    int LA12_0 = input.LA(1); 
     
    11561198                    switch (alt12) { 
    11571199                        case 1 : 
    1158                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1785:41: '\\r' 
     1200                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1899:41: '\\r' 
    11591201                            { 
    11601202                            match('\r');  
     
    11881230            int _type = RULE_ML_COMMENT; 
    11891231            int _channel = DEFAULT_TOKEN_CHANNEL; 
    1190             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1787:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) 
    1191             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1787:19: '/*' ( options {greedy=false; } : . )* '*/' 
     1232            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1901:17: ( '/*' ( options {greedy=false; } : . )* '*/' ) 
     1233            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1901:19: '/*' ( options {greedy=false; } : . )* '*/' 
    11921234            { 
    11931235            match("/*");  
    11941236 
    1195             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1787:24: ( options {greedy=false; } : . )* 
     1237            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1901:24: ( options {greedy=false; } : . )* 
    11961238            loop14: 
    11971239            do { 
     
    12181260                switch (alt14) { 
    12191261                case 1 : 
    1220                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1787:52: . 
     1262                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1901:52: . 
    12211263                    { 
    12221264                    matchAny();  
     
    12481290            int _type = RULE_LOGIC; 
    12491291            int _channel = DEFAULT_TOKEN_CHANNEL; 
    1250             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1789:12: ( ( '/and' | '/or' | '/andr' | '/orr' | '/any' | '/together' ) ) 
    1251             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1789:14: ( '/and' | '/or' | '/andr' | '/orr' | '/any' | '/together' ) 
    1252             { 
    1253             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1789:14: ( '/and' | '/or' | '/andr' | '/orr' | '/any' | '/together' ) 
     1292            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1903:12: ( ( '/and' | '/or' | '/andr' | '/orr' | '/any' | '/together' ) ) 
     1293            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1903:14: ( '/and' | '/or' | '/andr' | '/orr' | '/any' | '/together' ) 
     1294            { 
     1295            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1903:14: ( '/and' | '/or' | '/andr' | '/orr' | '/any' | '/together' ) 
    12541296            int alt15=6; 
    12551297            alt15 = dfa15.predict(input); 
    12561298            switch (alt15) { 
    12571299                case 1 : 
    1258                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1789:15: '/and' 
     1300                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1903:15: '/and' 
    12591301                    { 
    12601302                    match("/and");  
     
    12641306                    break; 
    12651307                case 2 : 
    1266                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1789:22: '/or' 
     1308                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1903:22: '/or' 
    12671309                    { 
    12681310                    match("/or");  
     
    12721314                    break; 
    12731315                case 3 : 
    1274                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1789:28: '/andr' 
     1316                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1903:28: '/andr' 
    12751317                    { 
    12761318                    match("/andr");  
     
    12801322                    break; 
    12811323                case 4 : 
    1282                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1789:36: '/orr' 
     1324                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1903:36: '/orr' 
    12831325                    { 
    12841326                    match("/orr");  
     
    12881330                    break; 
    12891331                case 5 : 
    1290                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1789:43: '/any' 
     1332                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1903:43: '/any' 
    12911333                    { 
    12921334                    match("/any");  
     
    12961338                    break; 
    12971339                case 6 : 
    1298                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1789:50: '/together' 
     1340                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1903:50: '/together' 
    12991341                    { 
    13001342                    match("/together");  
     
    13181360 
    13191361    public void mTokens() throws RecognitionException { 
    1320         // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | RULE_ID | RULE_INT | RULE_WS | RULE_COLON | RULE_STRING | RULE_SECTIONHEADER | RULE_SL_COMMENT | RULE_ML_COMMENT | RULE_LOGIC ) 
    1321         int alt16=36; 
     1362        // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | RULE_ID | RULE_INT | RULE_WS | RULE_COLON | RULE_STRING | RULE_SECTIONHEADER | RULE_SL_COMMENT | RULE_ML_COMMENT | RULE_LOGIC ) 
     1363        int alt16=38; 
    13221364        alt16 = dfa16.predict(input); 
    13231365        switch (alt16) { 
     
    15121554                break; 
    15131555            case 28 : 
    1514                 // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:172: RULE_ID 
     1556                // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:172: T__40 
     1557                { 
     1558                mT__40();  
     1559 
     1560                } 
     1561                break; 
     1562            case 29 : 
     1563                // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:178: T__41 
     1564                { 
     1565                mT__41();  
     1566 
     1567                } 
     1568                break; 
     1569            case 30 : 
     1570                // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:184: RULE_ID 
    15151571                { 
    15161572                mRULE_ID();  
     
    15181574                } 
    15191575                break; 
    1520             case 29 : 
    1521                 // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:180: RULE_INT 
     1576            case 31 : 
     1577                // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:192: RULE_INT 
    15221578                { 
    15231579                mRULE_INT();  
     
    15251581                } 
    15261582                break; 
    1527             case 30 : 
    1528                 // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:189: RULE_WS 
     1583            case 32 : 
     1584                // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:201: RULE_WS 
    15291585                { 
    15301586                mRULE_WS();  
     
    15321588                } 
    15331589                break; 
    1534             case 31 : 
    1535                 // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:197: RULE_COLON 
     1590            case 33 : 
     1591                // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:209: RULE_COLON 
    15361592                { 
    15371593                mRULE_COLON();  
     
    15391595                } 
    15401596                break; 
    1541             case 32 : 
    1542                 // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:208: RULE_STRING 
     1597            case 34 : 
     1598                // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:220: RULE_STRING 
    15431599                { 
    15441600                mRULE_STRING();  
     
    15461602                } 
    15471603                break; 
    1548             case 33 : 
    1549                 // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:220: RULE_SECTIONHEADER 
     1604            case 35 : 
     1605                // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:232: RULE_SECTIONHEADER 
    15501606                { 
    15511607                mRULE_SECTIONHEADER();  
     
    15531609                } 
    15541610                break; 
    1555             case 34 : 
    1556                 // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:239: RULE_SL_COMMENT 
     1611            case 36 : 
     1612                // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:251: RULE_SL_COMMENT 
    15571613                { 
    15581614                mRULE_SL_COMMENT();  
     
    15601616                } 
    15611617                break; 
    1562             case 35 : 
    1563                 // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:255: RULE_ML_COMMENT 
     1618            case 37 : 
     1619                // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:267: RULE_ML_COMMENT 
    15641620                { 
    15651621                mRULE_ML_COMMENT();  
     
    15671623                } 
    15681624                break; 
    1569             case 36 : 
    1570                 // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:271: RULE_LOGIC 
     1625            case 38 : 
     1626                // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1:283: RULE_LOGIC 
    15711627                { 
    15721628                mRULE_LOGIC();  
     
    16401696        } 
    16411697        public String getDescription() { 
    1642             return "1789:14: ( '/and' | '/or' | '/andr' | '/orr' | '/any' | '/together' )"; 
     1698            return "1903:14: ( '/and' | '/or' | '/andr' | '/orr' | '/any' | '/together' )"; 
    16431699        } 
    16441700    } 
    16451701    static final String DFA16_eotS = 
    1646         "\1\uffff\1\34\1\47\1\uffff\5\34\14\uffff\3\34\5\uffff\3\34\10\uffff"+ 
    1647         "\7\34\1\33\12\34\1\uffff\3\34\1\110\4\34\1\115\1\116\3\34\1\uffff"+ 
    1648         "\4\34\2\uffff\1\34\1\127\1\130\2\34\1\133\1\uffff\1\134\2\uffff"+ 
    1649         "\1\34\1\136\2\uffff\1\34\1\uffff\2\34\1\uffff"; 
     1702        "\1\uffff\1\36\1\51\1\uffff\5\36\14\uffff\2\36\2\uffff\1\36\5\uffff"+ 
     1703        "\3\36\10\uffff\7\36\1\35\12\36\1\uffff\3\36\1\112\4\36\1\117\1\120"+ 
     1704        "\3\36\1\uffff\4\36\2\uffff\1\36\1\131\1\132\2\36\1\135\1\uffff\1"+ 
     1705        "\136\2\uffff\1\36\1\140\2\uffff\1\36\1\uffff\2\36\1\uffff"; 
    16501706    static final String DFA16_eofS = 
    1651         "\142\uffff"; 
     1707        "\144\uffff"; 
    16521708    static final String DFA16_minS = 
    1653         "\1\11\1\56\1\52\1\uffff\5\56\14\uffff\3\56\2\uffff\1\0\2\uffff\1"+ 
    1654         "\141\1\157\1\11\10\uffff\1\160\1\155\1\143\1\144\1\142\1\154\1\157"+ 
    1655         "\1\42\1\155\1\142\1\157\1\145\1\142\1\153\1\141\2\145\1\153\1\uffff"+ 
    1656         "\1\155\1\141\1\162\1\60\1\151\1\141\1\164\1\154\2\60\1\141\1\154"+ 
    1657         "\1\164\1\uffff\1\156\1\147\1\145\1\72\2\uffff\1\162\2\60\1\141\1"+ 
    1658         "\145\1\60\1\uffff\1\60\2\uffff\1\164\1\60\2\uffff\1\157\1\uffff"+ 
    1659         "\1\162\1\72\1\uffff"; 
     1709        "\1\11\1\56\1\52\1\uffff\5\56\14\uffff\2\56\2\uffff\1\56\2\uffff"+ 
     1710        "\1\0\2\uffff\1\141\1\157\1\11\10\uffff\1\160\1\155\1\143\1\144\1"+ 
     1711        "\142\1\154\1\157\1\42\1\155\1\142\1\157\1\145\1\142\1\153\1\141"+ 
     1712        "\2\145\1\153\1\uffff\1\155\1\141\1\162\1\60\1\151\1\141\1\164\1"+ 
     1713        "\154\2\60\1\141\1\154\1\164\1\uffff\1\156\1\147\1\145\1\72\2\uffff"+ 
     1714        "\1\162\2\60\1\141\1\145\1\60\1\uffff\1\60\2\uffff\1\164\1\60\2\uffff"+ 
     1715        "\1\157\1\uffff\1\162\1\72\1\uffff"; 
    16601716    static final String DFA16_maxS = 
    16611717        "\1\175\1\162\1\164\1\uffff\1\155\1\157\1\141\1\160\1\141\14\uffff"+ 
    1662         "\1\165\1\157\1\71\2\uffff\1\uffff\2\uffff\1\141\1\157\1\71\10\uffff"+ 
    1663         "\1\160\1\162\1\143\1\144\1\142\1\154\1\157\1\42\1\155\1\142\1\157"+ 
    1664         "\1\145\1\142\1\153\1\141\2\145\1\153\1\uffff\1\155\1\141\1\162\1"+ 
    1665         "\172\1\151\1\141\1\164\1\154\2\172\1\141\1\154\1\164\1\uffff\1\156"+ 
    1666         "\1\147\1\145\1\72\2\uffff\1\162\2\172\1\141\1\145\1\172\1\uffff"+ 
    1667         "\1\172\2\uffff\1\164\1\172\2\uffff\1\157\1\uffff\1\162\1\72\1\uffff"; 
     1718        "\1\165\1\157\2\uffff\1\71\2\uffff\1\uffff\2\uffff\1\141\1\157\1"+ 
     1719        "\71\10\uffff\1\160\1\162\1\143\1\144\1\142\1\154\1\157\1\42\1\155"+ 
     1720        "\1\142\1\157\1\145\1\142\1\153\1\141\2\145\1\153\1\uffff\1\155\1"+ 
     1721        "\141\1\162\1\172\1\151\1\141\1\164\1\154\2\172\1\141\1\154\1\164"+ 
     1722        "\1\uffff\1\156\1\147\1\145\1\72\2\uffff\1\162\2\172\1\141\1\145"+ 
     1723        "\1\172\1\uffff\1\172\2\uffff\1\164\1\172\2\uffff\1\157\1\uffff\1"+ 
     1724        "\162\1\72\1\uffff"; 
    16681725    static final String DFA16_acceptS = 
    16691726        "\3\uffff\1\3\5\uffff\1\14\1\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24"+ 
    1670         "\1\25\1\26\1\27\3\uffff\1\35\1\36\1\uffff\1\40\1\34\3\uffff\1\41"+ 
    1671         "\1\2\1\4\1\5\1\42\1\43\1\44\1\7\22\uffff\1\37\15\uffff\1\10\4\uffff"+ 
    1672         "\1\32\1\33\6\uffff\1\13\1\uffff\1\30\1\6\2\uffff\1\12\1\1\1\uffff"+ 
    1673         "\1\11\2\uffff\1\31"; 
     1727        "\1\25\1\26\1\27\2\uffff\1\34\1\35\1\uffff\1\37\1\40\1\uffff\1\42"+ 
     1728        "\1\36\3\uffff\1\43\1\2\1\4\1\5\1\44\1\45\1\46\1\7\22\uffff\1\41"+ 
     1729        "\15\uffff\1\10\4\uffff\1\32\1\33\6\uffff\1\13\1\uffff\1\30\1\6\2"+ 
     1730        "\uffff\1\12\1\1\1\uffff\1\11\2\uffff\1\31"; 
    16741731    static final String DFA16_specialS = 
    1675         "\32\uffff\1\0\107\uffff}>"; 
     1732        "\34\uffff\1\0\107\uffff}>"; 
    16761733    static final String[] DFA16_transitionS = { 
    1677             "\2\31\2\uffff\1\31\22\uffff\1\31\1\uffff\1\32\4\uffff\1\33\1"+ 
    1678             "\13\1\14\1\23\1\24\2\uffff\1\11\1\2\12\30\1\12\1\3\1\15\4\uffff"+ 
    1679             "\32\27\1\21\1\uffff\1\16\1\uffff\1\34\1\uffff\2\27\1\5\3\27"+ 
    1680             "\1\1\1\26\1\4\2\27\1\10\3\27\1\6\1\27\1\25\2\27\1\7\5\27\1\22"+ 
    1681             "\1\20\1\17", 
    1682             "\1\40\1\uffff\12\37\62\uffff\1\36\5\uffff\1\35", 
    1683             "\1\45\4\uffff\1\44\61\uffff\1\46\1\41\1\uffff\1\42\10\uffff"+ 
    1684             "\1\43\1\uffff\1\46\4\uffff\1\46", 
    1685             "", 
    1686             "\1\40\1\uffff\12\37\63\uffff\1\50", 
    1687             "\1\40\1\uffff\12\37\65\uffff\1\51", 
    1688             "\1\40\1\uffff\12\37\47\uffff\1\52", 
    1689             "\1\40\1\uffff\12\37\66\uffff\1\53", 
    1690             "\1\40\1\uffff\12\37\47\uffff\1\54", 
    1691             "", 
    1692             "", 
    1693             "", 
    1694             "", 
    1695             "", 
    1696             "", 
    1697             "", 
    1698             "", 
    1699             "", 
    1700             "", 
    1701             "", 
    1702             "", 
    1703             "\1\40\1\uffff\12\37\73\uffff\1\55", 
    1704             "\1\40\1\uffff\12\37\65\uffff\1\56", 
    1705             "\1\40\1\uffff\12\37", 
    1706             "", 
    1707             "", 
    1708             "\42\33\1\57\uffdd\33", 
    1709             "", 
    1710             "", 
    1711             "\1\60", 
    1712             "\1\61", 
    1713             "\1\40\26\uffff\1\40\15\uffff\1\40\1\uffff\12\37", 
    1714             "", 
    1715             "", 
    1716             "", 
    1717             "", 
    1718             "", 
    1719             "", 
     1734            "\2\33\2\uffff\1\33\22\uffff\1\33\1\uffff\1\34\1\27\3\uffff\1"+ 
     1735            "\35\1\13\1\14\1\23\1\24\1\30\1\uffff\1\11\1\2\12\32\1\12\1\3"+ 
     1736            "\1\15\4\uffff\32\31\1\21\1\uffff\1\16\1\uffff\1\36\1\uffff\2"+ 
     1737            "\31\1\5\3\31\1\1\1\26\1\4\2\31\1\10\3\31\1\6\1\31\1\25\2\31"+ 
     1738            "\1\7\5\31\1\22\1\20\1\17", 
     1739            "\1\42\1\uffff\12\41\62\uffff\1\40\5\uffff\1\37", 
     1740            "\1\47\4\uffff\1\46\61\uffff\1\50\1\43\1\uffff\1\44\10\uffff"+ 
     1741            "\1\45\1\uffff\1\50\4\uffff\1\50", 
     1742            "", 
     1743            "\1\42\1\uffff\12\41\63\uffff\1\52", 
     1744            "\1\42\1\uffff\12\41\65\uffff\1\53", 
     1745            "\1\42\1\uffff\12\41\47\uffff\1\54", 
     1746            "\1\42\1\uffff\12\41\66\uffff\1\55", 
     1747            "\1\42\1\uffff\12\41\47\uffff\1\56", 
     1748            "", 
     1749            "", 
     1750            "", 
     1751            "", 
     1752            "", 
     1753            "", 
     1754            "", 
     1755            "", 
     1756            "", 
     1757            "", 
     1758            "", 
     1759            "", 
     1760            "\1\42\1\uffff\12\41\73\uffff\1\57", 
     1761            "\1\42\1\uffff\12\41\65\uffff\1\60", 
     1762            "", 
     1763            "", 
     1764            "\1\42\1\uffff\12\41", 
     1765            "", 
     1766            "", 
     1767            "\42\35\1\61\uffdd\35", 
    17201768            "", 
    17211769            "", 
    17221770            "\1\62", 
    1723             "\1\64\4\uffff\1\63", 
    1724             "\1\65", 
    1725             "\1\66", 
     1771            "\1\63", 
     1772            "\1\42\26\uffff\1\42\15\uffff\1\42\1\uffff\12\41", 
     1773            "", 
     1774            "", 
     1775            "", 
     1776            "", 
     1777            "", 
     1778            "", 
     1779            "", 
     1780            "", 
     1781            "\1\64", 
     1782            "\1\66\4\uffff\1\65", 
    17261783            "\1\67", 
    17271784            "\1\70", 
     
    17381795            "\1\103", 
    17391796            "\1\104", 
    1740             "", 
    17411797            "\1\105", 
    17421798            "\1\106", 
     1799            "", 
    17431800            "\1\107", 
    1744             "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34", 
     1801            "\1\110", 
    17451802            "\1\111", 
    1746             "\1\112", 
     1803            "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36", 
    17471804            "\1\113", 
    17481805            "\1\114", 
    1749             "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34", 
    1750             "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34", 
    1751             "\1\117", 
    1752             "\1\120", 
     1806            "\1\115", 
     1807            "\1\116", 
     1808            "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36", 
     1809            "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36", 
    17531810            "\1\121", 
    1754             "", 
    17551811            "\1\122", 
    17561812            "\1\123", 
     1813            "", 
    17571814            "\1\124", 
    17581815            "\1\125", 
    1759             "", 
    1760             "", 
    17611816            "\1\126", 
    1762             "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34", 
    1763             "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34", 
    1764             "\1\131", 
    1765             "\1\132", 
    1766             "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34", 
    1767             "", 
    1768             "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34", 
    1769             "", 
    1770             "", 
    1771             "\1\135", 
    1772             "\12\34\7\uffff\32\34\4\uffff\1\34\1\uffff\32\34", 
     1817            "\1\127", 
     1818            "", 
     1819            "", 
     1820            "\1\130", 
     1821            "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36", 
     1822            "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36", 
     1823            "\1\133", 
     1824            "\1\134", 
     1825            "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36", 
     1826            "", 
     1827            "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36", 
    17731828            "", 
    17741829            "", 
    17751830            "\1\137", 
    1776             "", 
    1777             "\1\140", 
     1831            "\12\36\7\uffff\32\36\4\uffff\1\36\1\uffff\32\36", 
     1832            "", 
     1833            "", 
    17781834            "\1\141", 
     1835            "", 
     1836            "\1\142", 
     1837            "\1\143", 
    17791838            "" 
    17801839    }; 
     
    18101869        } 
    18111870        public String getDescription() { 
    1812             return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | RULE_ID | RULE_INT | RULE_WS | RULE_COLON | RULE_STRING | RULE_SECTIONHEADER | RULE_SL_COMMENT | RULE_ML_COMMENT | RULE_LOGIC );"; 
     1871            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | RULE_ID | RULE_INT | RULE_WS | RULE_COLON | RULE_STRING | RULE_SECTIONHEADER | RULE_SL_COMMENT | RULE_ML_COMMENT | RULE_LOGIC );"; 
    18131872        } 
    18141873        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { 
     
    18171876            switch ( s ) { 
    18181877                    case 0 :  
    1819                         int LA16_26 = input.LA(1); 
     1878                        int LA16_28 = input.LA(1); 
    18201879 
    18211880                        s = -1; 
    1822                         if ( (LA16_26=='\"') ) {s = 47;} 
    1823  
    1824                         else if ( ((LA16_26>='\u0000' && LA16_26<='!')||(LA16_26>='#' && LA16_26<='\uFFFF')) ) {s = 27;} 
     1881                        if ( (LA16_28=='\"') ) {s = 49;} 
     1882 
     1883                        else if ( ((LA16_28>='\u0000' && LA16_28<='!')||(LA16_28>='#' && LA16_28<='\uFFFF')) ) {s = 29;} 
    18251884 
    18261885                        if ( s>=0 ) return s; 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnfParser.java

    r88 r95  
    1818import java.util.List; 
    1919import java.util.ArrayList; 
    20  
     20import java.util.Map; 
     21import java.util.HashMap; 
    2122@SuppressWarnings("all") 
    2223public class InternalEbnfParser extends AbstractInternalAntlrParser { 
    2324    public static final String[] tokenNames = new String[] { 
    24         "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_SECTIONHEADER", "RULE_STRING", "RULE_INT", "RULE_LOGIC", "RULE_COLON", "RULE_WS", "RULE_SL_COMMENT", "RULE_ML_COMMENT", "'grammar'", "'/bnf'", "';'", "'/delta'", "'/merge'", "'import'", "'/'", "'core'", "'package'", "'update'", "'label:'", "'.'", "'::='", "'('", "')'", "'<-'", "']'", "'}'", "'|'", "'['", "'{'", "'*'", "'+'", "'global'", "'combinator:'", "'rule'", "'hook'" 
     25        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_SECTIONHEADER", "RULE_STRING", "RULE_INT", "RULE_LOGIC", "RULE_COLON", "RULE_WS", "RULE_SL_COMMENT", "RULE_ML_COMMENT", "'grammar'", "'/bnf'", "';'", "'/delta'", "'/merge'", "'import'", "'/'", "'core'", "'package'", "'update'", "'label:'", "'.'", "'::='", "'('", "')'", "'<-'", "']'", "'}'", "'|'", "'['", "'{'", "'*'", "'+'", "'global'", "'combinator:'", "'rule'", "'hook'", "'#'", "','" 
    2526    }; 
     27    public static final int RULE_ID=4; 
     28    public static final int T__40=40; 
     29    public static final int RULE_SECTIONHEADER=5; 
     30    public static final int T__41=41; 
     31    public static final int T__29=29; 
     32    public static final int T__28=28; 
     33    public static final int T__27=27; 
     34    public static final int T__26=26; 
     35    public static final int T__25=25; 
     36    public static final int T__24=24; 
     37    public static final int T__23=23; 
     38    public static final int T__22=22; 
     39    public static final int T__21=21; 
     40    public static final int T__20=20; 
     41    public static final int RULE_SL_COMMENT=11; 
     42    public static final int EOF=-1; 
     43    public static final int RULE_ML_COMMENT=12; 
     44    public static final int T__30=30; 
     45    public static final int T__19=19; 
     46    public static final int RULE_COLON=9; 
     47    public static final int T__31=31; 
    2648    public static final int RULE_STRING=6; 
    27     public static final int RULE_SL_COMMENT=11; 
    28     public static final int T__19=19; 
    29     public static final int RULE_SECTIONHEADER=5; 
     49    public static final int T__32=32; 
     50    public static final int T__33=33; 
     51    public static final int T__16=16; 
     52    public static final int T__34=34; 
    3053    public static final int T__15=15; 
     54    public static final int T__35=35; 
     55    public static final int T__18=18; 
     56    public static final int T__36=36; 
     57    public static final int T__17=17; 
     58    public static final int RULE_LOGIC=8; 
    3159    public static final int T__37=37; 
    32     public static final int T__16=16; 
    3360    public static final int T__38=38; 
    34     public static final int T__17=17; 
    3561    public static final int T__39=39; 
    36     public static final int T__18=18; 
    37     public static final int T__33=33; 
    38     public static final int T__34=34; 
     62    public static final int T__14=14; 
    3963    public static final int T__13=13; 
    40     public static final int T__35=35; 
    41     public static final int T__14=14; 
    42     public static final int T__36=36; 
    43     public static final int EOF=-1; 
    44     public static final int T__30=30; 
    45     public static final int T__31=31; 
    46     public static final int T__32=32; 
    47     public static final int RULE_ID=4; 
     64    public static final int RULE_INT=7; 
    4865    public static final int RULE_WS=10; 
    49     public static final int RULE_COLON=9; 
    50     public static final int RULE_LOGIC=8; 
    51     public static final int T__26=26; 
    52     public static final int T__27=27; 
    53     public static final int T__28=28; 
    54     public static final int RULE_INT=7; 
    55     public static final int T__29=29; 
    56     public static final int T__22=22; 
    57     public static final int RULE_ML_COMMENT=12; 
    58     public static final int T__23=23; 
    59     public static final int T__24=24; 
    60     public static final int T__25=25; 
    61     public static final int T__20=20; 
    62     public static final int T__21=21; 
    6366 
    6467    // delegates 
     
    7174        public InternalEbnfParser(TokenStream input, RecognizerSharedState state) { 
    7275            super(input, state); 
     76            this.state.ruleMemo = new HashMap[99+1]; 
     77              
    7378              
    7479        } 
     
    8085 
    8186 
     87    /* 
     88      This grammar contains a lot of empty actions to work around a bug in ANTLR. 
     89      Otherwise the ANTLR tool will create synpreds that cannot be compiled in some rare cases. 
     90    */ 
     91      
    8292        private EbnfGrammarAccess grammarAccess; 
    8393         
     
    101111 
    102112    // $ANTLR start "entryRuleEtsiBnf" 
    103     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:67:1: entryRuleEtsiBnf returns [EObject current=null] : iv_ruleEtsiBnf= ruleEtsiBnf EOF ; 
     113    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:74:1: entryRuleEtsiBnf returns [EObject current=null] : iv_ruleEtsiBnf= ruleEtsiBnf EOF ; 
    104114    public final EObject entryRuleEtsiBnf() throws RecognitionException { 
    105115        EObject current = null; 
    106  
     116        int entryRuleEtsiBnf_StartIndex = input.index(); 
    107117        EObject iv_ruleEtsiBnf = null; 
    108118 
    109119 
    110120        try { 
    111             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:68:2: (iv_ruleEtsiBnf= ruleEtsiBnf EOF ) 
    112             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:69:2: iv_ruleEtsiBnf= ruleEtsiBnf EOF 
    113             { 
    114              newCompositeNode(grammarAccess.getEtsiBnfRule());  
    115             pushFollow(FOLLOW_ruleEtsiBnf_in_entryRuleEtsiBnf75); 
     121            if ( state.backtracking>0 && alreadyParsedRule(input, 1) ) { return current; } 
     122            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:75:2: (iv_ruleEtsiBnf= ruleEtsiBnf EOF ) 
     123            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:76:2: iv_ruleEtsiBnf= ruleEtsiBnf EOF 
     124            { 
     125            if ( state.backtracking==0 ) { 
     126               newCompositeNode(grammarAccess.getEtsiBnfRule());  
     127            } 
     128            pushFollow(FOLLOW_ruleEtsiBnf_in_entryRuleEtsiBnf88); 
    116129            iv_ruleEtsiBnf=ruleEtsiBnf(); 
    117130 
    118131            state._fsp--; 
    119  
    120              current =iv_ruleEtsiBnf;  
    121             match(input,EOF,FOLLOW_EOF_in_entryRuleEtsiBnf85);  
     132            if (state.failed) return current; 
     133            if ( state.backtracking==0 ) { 
     134               current =iv_ruleEtsiBnf;  
     135            } 
     136            match(input,EOF,FOLLOW_EOF_in_entryRuleEtsiBnf98); if (state.failed) return current; 
    122137 
    123138            } 
     
    130145            }  
    131146        finally { 
     147            if ( state.backtracking>0 ) { memoize(input, 1, entryRuleEtsiBnf_StartIndex); } 
    132148        } 
    133149        return current; 
     
    137153 
    138154    // $ANTLR start "ruleEtsiBnf" 
    139     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:76:1: ruleEtsiBnf returns [EObject current=null] : ( (otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) ) | ( ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* ) | ( ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* ) ) ; 
     155    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:83:1: ruleEtsiBnf returns [EObject current=null] : ( (otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) ) | ( ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* ) | ( ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* ) ) ; 
    140156    public final EObject ruleEtsiBnf() throws RecognitionException { 
    141157        EObject current = null; 
    142  
     158        int ruleEtsiBnf_StartIndex = input.index(); 
    143159        Token otherlv_0=null; 
    144160        Token lv_name_1_0=null; 
     
    165181             
    166182        try { 
    167             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:79:28: ( ( (otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) ) | ( ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* ) | ( ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* ) ) ) 
    168             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:80:1: ( (otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) ) | ( ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* ) | ( ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* ) ) 
    169             { 
    170             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:80:1: ( (otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) ) | ( ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* ) | ( ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* ) ) 
     183            if ( state.backtracking>0 && alreadyParsedRule(input, 2) ) { return current; } 
     184            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:86:28: ( ( (otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) ) | ( ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* ) | ( ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* ) ) ) 
     185            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:87:1: ( (otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) ) | ( ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* ) | ( ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* ) ) 
     186            { 
     187            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:87:1: ( (otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) ) | ( ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* ) | ( ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* ) ) 
    171188            int alt8=3; 
    172189            switch ( input.LA(1) ) { 
     
    187204                break; 
    188205            default: 
     206                if (state.backtracking>0) {state.failed=true; return current;} 
    189207                NoViableAltException nvae = 
    190208                    new NoViableAltException("", 8, 0, input); 
     
    195213            switch (alt8) { 
    196214                case 1 : 
    197                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:80:2: (otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) ) 
    198                     { 
    199                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:80:2: (otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) ) 
    200                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:80:4: otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) 
    201                     { 
    202                     otherlv_0=(Token)match(input,13,FOLLOW_13_in_ruleEtsiBnf123);  
    203  
    204                                 newLeafNode(otherlv_0, grammarAccess.getEtsiBnfAccess().getGrammarKeyword_0_0()); 
    205                          
    206                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:84:1: ( (lv_name_1_0= RULE_ID ) ) 
    207                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:85:1: (lv_name_1_0= RULE_ID ) 
    208                     { 
    209                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:85:1: (lv_name_1_0= RULE_ID ) 
    210                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:86:3: lv_name_1_0= RULE_ID 
    211                     { 
    212                     lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEtsiBnf140);  
    213  
    214                                         newLeafNode(lv_name_1_0, grammarAccess.getEtsiBnfAccess().getNameIDTerminalRuleCall_0_1_0());  
    215                                  
    216  
    217                                 if (current==null) { 
    218                                     current = createModelElement(grammarAccess.getEtsiBnfRule()); 
    219                                 } 
    220                                         setWithLastConsumed( 
    221                                                 current,  
    222                                                 "name", 
    223                                         lv_name_1_0,  
    224                                         "ID"); 
    225                              
    226  
    227                     } 
    228  
    229  
    230                     } 
    231  
    232                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:102:2: ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) 
    233                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:102:3: ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ 
    234                     { 
    235                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:102:3: ( (lv_type_2_0= '/bnf' ) )? 
     215                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:87:2: (otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) ) 
     216                    { 
     217                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:87:2: (otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) ) 
     218                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:87:4: otherlv_0= 'grammar' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) 
     219                    { 
     220                    otherlv_0=(Token)match(input,13,FOLLOW_13_in_ruleEtsiBnf136); if (state.failed) return current; 
     221                    if ( state.backtracking==0 ) { 
     222 
     223                                newLeafNode(otherlv_0, grammarAccess.getEtsiBnfAccess().getGrammarKeyword_0_0()); 
     224                           
     225                    } 
     226                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:91:1: ( (lv_name_1_0= RULE_ID ) ) 
     227                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:92:1: (lv_name_1_0= RULE_ID ) 
     228                    { 
     229                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:92:1: (lv_name_1_0= RULE_ID ) 
     230                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:93:3: lv_name_1_0= RULE_ID 
     231                    { 
     232                    lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEtsiBnf153); if (state.failed) return current; 
     233                    if ( state.backtracking==0 ) { 
     234 
     235                                        newLeafNode(lv_name_1_0, grammarAccess.getEtsiBnfAccess().getNameIDTerminalRuleCall_0_1_0());  
     236                                 
     237                    } 
     238                    if ( state.backtracking==0 ) { 
     239 
     240                                if (current==null) { 
     241                                    current = createModelElement(grammarAccess.getEtsiBnfRule()); 
     242                                } 
     243                                        setWithLastConsumed( 
     244                                                current,  
     245                                                "name", 
     246                                        lv_name_1_0,  
     247                                        "ID"); 
     248                             
     249                    } 
     250 
     251                    } 
     252 
     253 
     254                    } 
     255 
     256                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:109:2: ( ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ ) 
     257                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:109:3: ( (lv_type_2_0= '/bnf' ) )? otherlv_3= ';' ( (lv_importSection_4_0= ruleImportSection ) )? ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ 
     258                    { 
     259                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:109:3: ( (lv_type_2_0= '/bnf' ) )? 
    236260                    int alt1=2; 
    237261                    int LA1_0 = input.LA(1); 
     
    242266                    switch (alt1) { 
    243267                        case 1 : 
    244                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:103:1: (lv_type_2_0= '/bnf' ) 
     268                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:110:1: (lv_type_2_0= '/bnf' ) 
    245269                            { 
    246                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:103:1: (lv_type_2_0= '/bnf' ) 
    247                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:104:3: lv_type_2_0= '/bnf' 
     270                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:110:1: (lv_type_2_0= '/bnf' ) 
     271                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:111:3: lv_type_2_0= '/bnf' 
    248272                            { 
    249                             lv_type_2_0=(Token)match(input,14,FOLLOW_14_in_ruleEtsiBnf164);  
    250  
    251                                     newLeafNode(lv_type_2_0, grammarAccess.getEtsiBnfAccess().getTypeBnfKeyword_0_2_0_0()); 
    252                                  
    253  
    254                                         if (current==null) { 
    255                                             current = createModelElement(grammarAccess.getEtsiBnfRule()); 
    256                                         } 
    257                                                 setWithLastConsumed(current, "type", lv_type_2_0, "/bnf"); 
    258                                      
     273                            lv_type_2_0=(Token)match(input,14,FOLLOW_14_in_ruleEtsiBnf177); if (state.failed) return current; 
     274                            if ( state.backtracking==0 ) { 
     275 
     276                                      newLeafNode(lv_type_2_0, grammarAccess.getEtsiBnfAccess().getTypeBnfKeyword_0_2_0_0()); 
     277                                   
     278                            } 
     279                            if ( state.backtracking==0 ) { 
     280 
     281                                        if (current==null) { 
     282                                            current = createModelElement(grammarAccess.getEtsiBnfRule()); 
     283                                        } 
     284                                                setWithLastConsumed(current, "type", lv_type_2_0, "/bnf"); 
     285                                     
     286                            } 
    259287 
    260288                            } 
     
    266294                    } 
    267295 
    268                     otherlv_3=(Token)match(input,15,FOLLOW_15_in_ruleEtsiBnf190);  
    269  
    270                                 newLeafNode(otherlv_3, grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_0_2_1()); 
    271                          
    272                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:121:1: ( (lv_importSection_4_0= ruleImportSection ) )? 
     296                    otherlv_3=(Token)match(input,15,FOLLOW_15_in_ruleEtsiBnf203); if (state.failed) return current; 
     297                    if ( state.backtracking==0 ) { 
     298 
     299                                newLeafNode(otherlv_3, grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_0_2_1()); 
     300                           
     301                    } 
     302                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:128:1: ( (lv_importSection_4_0= ruleImportSection ) )? 
    273303                    int alt2=2; 
    274304                    int LA2_0 = input.LA(1); 
     
    279309                    switch (alt2) { 
    280310                        case 1 : 
    281                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:122:1: (lv_importSection_4_0= ruleImportSection ) 
     311                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:129:1: (lv_importSection_4_0= ruleImportSection ) 
    282312                            { 
    283                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:122:1: (lv_importSection_4_0= ruleImportSection ) 
    284                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:123:3: lv_importSection_4_0= ruleImportSection 
     313                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:129:1: (lv_importSection_4_0= ruleImportSection ) 
     314                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:130:3: lv_importSection_4_0= ruleImportSection 
    285315                            { 
    286                               
    287                                         newCompositeNode(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_0_2_2_0());  
    288                                      
    289                             pushFollow(FOLLOW_ruleImportSection_in_ruleEtsiBnf211); 
     316                            if ( state.backtracking==0 ) { 
     317                                
     318                                        newCompositeNode(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_0_2_2_0());  
     319                                     
     320                            } 
     321                            pushFollow(FOLLOW_ruleImportSection_in_ruleEtsiBnf224); 
    290322                            lv_importSection_4_0=ruleImportSection(); 
    291323 
    292324                            state._fsp--; 
    293  
    294  
    295                                         if (current==null) { 
    296                                             current = createModelElementForParent(grammarAccess.getEtsiBnfRule()); 
    297                                         } 
    298                                                 set( 
    299                                                         current,  
    300                                                         "importSection", 
    301                                                 lv_importSection_4_0,  
    302                                                 "ImportSection"); 
    303                                         afterParserOrEnumRuleCall(); 
    304                                      
     325                            if (state.failed) return current; 
     326                            if ( state.backtracking==0 ) { 
     327 
     328                                        if (current==null) { 
     329                                            current = createModelElementForParent(grammarAccess.getEtsiBnfRule()); 
     330                                        } 
     331                                                set( 
     332                                                        current,  
     333                                                        "importSection", 
     334                                                lv_importSection_4_0,  
     335                                                "ImportSection"); 
     336                                        afterParserOrEnumRuleCall(); 
     337                                     
     338                            } 
    305339 
    306340                            } 
     
    312346                    } 
    313347 
    314                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:139:3: ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ 
     348                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:146:3: ( (lv_bnfEntry_5_0= ruleBnfEntry ) )+ 
    315349                    int cnt3=0; 
    316350                    loop3: 
     
    326360                        switch (alt3) { 
    327361                        case 1 : 
    328                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:140:1: (lv_bnfEntry_5_0= ruleBnfEntry ) 
     362                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:147:1: (lv_bnfEntry_5_0= ruleBnfEntry ) 
    329363                            { 
    330                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:140:1: (lv_bnfEntry_5_0= ruleBnfEntry ) 
    331                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:141:3: lv_bnfEntry_5_0= ruleBnfEntry 
     364                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:147:1: (lv_bnfEntry_5_0= ruleBnfEntry ) 
     365                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:148:3: lv_bnfEntry_5_0= ruleBnfEntry 
    332366                            { 
    333                               
    334                                         newCompositeNode(grammarAccess.getEtsiBnfAccess().getBnfEntryBnfEntryParserRuleCall_0_2_3_0());  
    335                                      
    336                             pushFollow(FOLLOW_ruleBnfEntry_in_ruleEtsiBnf233); 
     367                            if ( state.backtracking==0 ) { 
     368                                
     369                                        newCompositeNode(grammarAccess.getEtsiBnfAccess().getBnfEntryBnfEntryParserRuleCall_0_2_3_0());  
     370                                     
     371                            } 
     372                            pushFollow(FOLLOW_ruleBnfEntry_in_ruleEtsiBnf246); 
    337373                            lv_bnfEntry_5_0=ruleBnfEntry(); 
    338374 
    339375                            state._fsp--; 
    340  
    341  
    342                                         if (current==null) { 
    343                                             current = createModelElementForParent(grammarAccess.getEtsiBnfRule()); 
    344                                         } 
    345                                                 add( 
    346                                                         current,  
    347                                                         "bnfEntry", 
    348                                                 lv_bnfEntry_5_0,  
    349                                                 "BnfEntry"); 
    350                                         afterParserOrEnumRuleCall(); 
    351                                      
     376                            if (state.failed) return current; 
     377                            if ( state.backtracking==0 ) { 
     378 
     379                                        if (current==null) { 
     380                                            current = createModelElementForParent(grammarAccess.getEtsiBnfRule()); 
     381                                        } 
     382                                                add( 
     383                                                        current,  
     384                                                        "bnfEntry", 
     385                                                lv_bnfEntry_5_0,  
     386                                                "BnfEntry"); 
     387                                        afterParserOrEnumRuleCall(); 
     388                                     
     389                            } 
    352390 
    353391                            } 
     
    359397                        default : 
    360398                            if ( cnt3 >= 1 ) break loop3; 
     399                            if (state.backtracking>0) {state.failed=true; return current;} 
    361400                                EarlyExitException eee = 
    362401                                    new EarlyExitException(3, input); 
     
    376415                    break; 
    377416                case 2 : 
    378                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:158:6: ( ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* ) 
    379                     { 
    380                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:158:6: ( ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* ) 
    381                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:158:7: ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* 
    382                     { 
    383                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:158:7: ( (lv_type_6_0= '/delta' ) ) 
    384                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:159:1: (lv_type_6_0= '/delta' ) 
    385                     { 
    386                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:159:1: (lv_type_6_0= '/delta' ) 
    387                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:160:3: lv_type_6_0= '/delta' 
    388                     { 
    389                     lv_type_6_0=(Token)match(input,16,FOLLOW_16_in_ruleEtsiBnf261);  
    390  
    391                             newLeafNode(lv_type_6_0, grammarAccess.getEtsiBnfAccess().getTypeDeltaKeyword_1_0_0()); 
    392                          
    393  
    394                                 if (current==null) { 
    395                                     current = createModelElement(grammarAccess.getEtsiBnfRule()); 
    396                                 } 
    397                                         setWithLastConsumed(current, "type", lv_type_6_0, "/delta"); 
    398                              
    399  
    400                     } 
    401  
    402  
    403                     } 
    404  
    405                     otherlv_7=(Token)match(input,15,FOLLOW_15_in_ruleEtsiBnf286);  
    406  
    407                                 newLeafNode(otherlv_7, grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_1_1()); 
    408                          
    409                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:177:1: ( (lv_importSection_8_0= ruleImportSection ) )? 
     417                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:165:6: ( ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* ) 
     418                    { 
     419                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:165:6: ( ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* ) 
     420                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:165:7: ( (lv_type_6_0= '/delta' ) ) otherlv_7= ';' ( (lv_importSection_8_0= ruleImportSection ) )? ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* 
     421                    { 
     422                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:165:7: ( (lv_type_6_0= '/delta' ) ) 
     423                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:166:1: (lv_type_6_0= '/delta' ) 
     424                    { 
     425                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:166:1: (lv_type_6_0= '/delta' ) 
     426                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:167:3: lv_type_6_0= '/delta' 
     427                    { 
     428                    lv_type_6_0=(Token)match(input,16,FOLLOW_16_in_ruleEtsiBnf274); if (state.failed) return current; 
     429                    if ( state.backtracking==0 ) { 
     430 
     431                              newLeafNode(lv_type_6_0, grammarAccess.getEtsiBnfAccess().getTypeDeltaKeyword_1_0_0()); 
     432                           
     433                    } 
     434                    if ( state.backtracking==0 ) { 
     435 
     436                                if (current==null) { 
     437                                    current = createModelElement(grammarAccess.getEtsiBnfRule()); 
     438                                } 
     439                                        setWithLastConsumed(current, "type", lv_type_6_0, "/delta"); 
     440                             
     441                    } 
     442 
     443                    } 
     444 
     445 
     446                    } 
     447 
     448                    otherlv_7=(Token)match(input,15,FOLLOW_15_in_ruleEtsiBnf299); if (state.failed) return current; 
     449                    if ( state.backtracking==0 ) { 
     450 
     451                                newLeafNode(otherlv_7, grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_1_1()); 
     452                           
     453                    } 
     454                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:184:1: ( (lv_importSection_8_0= ruleImportSection ) )? 
    410455                    int alt4=2; 
    411456                    int LA4_0 = input.LA(1); 
     
    416461                    switch (alt4) { 
    417462                        case 1 : 
    418                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:178:1: (lv_importSection_8_0= ruleImportSection ) 
     463                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:185:1: (lv_importSection_8_0= ruleImportSection ) 
    419464                            { 
    420                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:178:1: (lv_importSection_8_0= ruleImportSection ) 
    421                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:179:3: lv_importSection_8_0= ruleImportSection 
     465                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:185:1: (lv_importSection_8_0= ruleImportSection ) 
     466                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:186:3: lv_importSection_8_0= ruleImportSection 
    422467                            { 
    423                               
    424                                         newCompositeNode(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_1_2_0());  
    425                                      
    426                             pushFollow(FOLLOW_ruleImportSection_in_ruleEtsiBnf307); 
     468                            if ( state.backtracking==0 ) { 
     469                                
     470                                        newCompositeNode(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_1_2_0());  
     471                                     
     472                            } 
     473                            pushFollow(FOLLOW_ruleImportSection_in_ruleEtsiBnf320); 
    427474                            lv_importSection_8_0=ruleImportSection(); 
    428475 
    429476                            state._fsp--; 
    430  
    431  
    432                                         if (current==null) { 
    433                                             current = createModelElementForParent(grammarAccess.getEtsiBnfRule()); 
    434                                         } 
    435                                                 set( 
    436                                                         current,  
    437                                                         "importSection", 
    438                                                 lv_importSection_8_0,  
    439                                                 "ImportSection"); 
    440                                         afterParserOrEnumRuleCall(); 
    441                                      
     477                            if (state.failed) return current; 
     478                            if ( state.backtracking==0 ) { 
     479 
     480                                        if (current==null) { 
     481                                            current = createModelElementForParent(grammarAccess.getEtsiBnfRule()); 
     482                                        } 
     483                                                set( 
     484                                                        current,  
     485                                                        "importSection", 
     486                                                lv_importSection_8_0,  
     487                                                "ImportSection"); 
     488                                        afterParserOrEnumRuleCall(); 
     489                                     
     490                            } 
    442491 
    443492                            } 
     
    449498                    } 
    450499 
    451                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:195:3: ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* 
     500                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:202:3: ( (lv_deltaEntry_9_0= ruleDeltaEntry ) )* 
    452501                    loop5: 
    453502                    do { 
     
    462511                        switch (alt5) { 
    463512                        case 1 : 
    464                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:196:1: (lv_deltaEntry_9_0= ruleDeltaEntry ) 
     513                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:203:1: (lv_deltaEntry_9_0= ruleDeltaEntry ) 
    465514                            { 
    466                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:196:1: (lv_deltaEntry_9_0= ruleDeltaEntry ) 
    467                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:197:3: lv_deltaEntry_9_0= ruleDeltaEntry 
     515                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:203:1: (lv_deltaEntry_9_0= ruleDeltaEntry ) 
     516                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:204:3: lv_deltaEntry_9_0= ruleDeltaEntry 
    468517                            { 
    469                               
    470                                         newCompositeNode(grammarAccess.getEtsiBnfAccess().getDeltaEntryDeltaEntryParserRuleCall_1_3_0());  
    471                                      
    472                             pushFollow(FOLLOW_ruleDeltaEntry_in_ruleEtsiBnf329); 
     518                            if ( state.backtracking==0 ) { 
     519                                
     520                                        newCompositeNode(grammarAccess.getEtsiBnfAccess().getDeltaEntryDeltaEntryParserRuleCall_1_3_0());  
     521                                     
     522                            } 
     523                            pushFollow(FOLLOW_ruleDeltaEntry_in_ruleEtsiBnf342); 
    473524                            lv_deltaEntry_9_0=ruleDeltaEntry(); 
    474525 
    475526                            state._fsp--; 
    476  
    477  
    478                                         if (current==null) { 
    479                                             current = createModelElementForParent(grammarAccess.getEtsiBnfRule()); 
    480                                         } 
    481                                                 add( 
    482                                                         current,  
    483                                                         "deltaEntry", 
    484                                                 lv_deltaEntry_9_0,  
    485                                                 "DeltaEntry"); 
    486                                         afterParserOrEnumRuleCall(); 
    487                                      
     527                            if (state.failed) return current; 
     528                            if ( state.backtracking==0 ) { 
     529 
     530                                        if (current==null) { 
     531                                            current = createModelElementForParent(grammarAccess.getEtsiBnfRule()); 
     532                                        } 
     533                                                add( 
     534                                                        current,  
     535                                                        "deltaEntry", 
     536                                                lv_deltaEntry_9_0,  
     537                                                "DeltaEntry"); 
     538                                        afterParserOrEnumRuleCall(); 
     539                                     
     540                            } 
    488541 
    489542                            } 
     
    505558                    break; 
    506559                case 3 : 
    507                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:214:6: ( ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* ) 
    508                     { 
    509                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:214:6: ( ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* ) 
    510                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:214:7: ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* 
    511                     { 
    512                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:214:7: ( (lv_type_10_0= '/merge' ) ) 
    513                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:215:1: (lv_type_10_0= '/merge' ) 
    514                     { 
    515                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:215:1: (lv_type_10_0= '/merge' ) 
    516                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:216:3: lv_type_10_0= '/merge' 
    517                     { 
    518                     lv_type_10_0=(Token)match(input,17,FOLLOW_17_in_ruleEtsiBnf356);  
    519  
    520                             newLeafNode(lv_type_10_0, grammarAccess.getEtsiBnfAccess().getTypeMergeKeyword_2_0_0()); 
    521                          
    522  
    523                                 if (current==null) { 
    524                                     current = createModelElement(grammarAccess.getEtsiBnfRule()); 
    525                                 } 
    526                                         setWithLastConsumed(current, "type", lv_type_10_0, "/merge"); 
    527                              
    528  
    529                     } 
    530  
    531  
    532                     } 
    533  
    534                     otherlv_11=(Token)match(input,15,FOLLOW_15_in_ruleEtsiBnf381);  
    535  
    536                                 newLeafNode(otherlv_11, grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_2_1()); 
    537                          
    538                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:233:1: ( (lv_importSection_12_0= ruleImportSection ) )? 
     560                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:221:6: ( ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* ) 
     561                    { 
     562                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:221:6: ( ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* ) 
     563                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:221:7: ( (lv_type_10_0= '/merge' ) ) otherlv_11= ';' ( (lv_importSection_12_0= ruleImportSection ) )? ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* 
     564                    { 
     565                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:221:7: ( (lv_type_10_0= '/merge' ) ) 
     566                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:222:1: (lv_type_10_0= '/merge' ) 
     567                    { 
     568                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:222:1: (lv_type_10_0= '/merge' ) 
     569                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:223:3: lv_type_10_0= '/merge' 
     570                    { 
     571                    lv_type_10_0=(Token)match(input,17,FOLLOW_17_in_ruleEtsiBnf369); if (state.failed) return current; 
     572                    if ( state.backtracking==0 ) { 
     573 
     574                              newLeafNode(lv_type_10_0, grammarAccess.getEtsiBnfAccess().getTypeMergeKeyword_2_0_0()); 
     575                           
     576                    } 
     577                    if ( state.backtracking==0 ) { 
     578 
     579                                if (current==null) { 
     580                                    current = createModelElement(grammarAccess.getEtsiBnfRule()); 
     581                                } 
     582                                        setWithLastConsumed(current, "type", lv_type_10_0, "/merge"); 
     583                             
     584                    } 
     585 
     586                    } 
     587 
     588 
     589                    } 
     590 
     591                    otherlv_11=(Token)match(input,15,FOLLOW_15_in_ruleEtsiBnf394); if (state.failed) return current; 
     592                    if ( state.backtracking==0 ) { 
     593 
     594                                newLeafNode(otherlv_11, grammarAccess.getEtsiBnfAccess().getSemicolonKeyword_2_1()); 
     595                           
     596                    } 
     597                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:240:1: ( (lv_importSection_12_0= ruleImportSection ) )? 
    539598                    int alt6=2; 
    540599                    int LA6_0 = input.LA(1); 
     
    545604                    switch (alt6) { 
    546605                        case 1 : 
    547                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:234:1: (lv_importSection_12_0= ruleImportSection ) 
     606                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:241:1: (lv_importSection_12_0= ruleImportSection ) 
    548607                            { 
    549                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:234:1: (lv_importSection_12_0= ruleImportSection ) 
    550                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:235:3: lv_importSection_12_0= ruleImportSection 
     608                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:241:1: (lv_importSection_12_0= ruleImportSection ) 
     609                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:242:3: lv_importSection_12_0= ruleImportSection 
    551610                            { 
    552                               
    553                                         newCompositeNode(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_2_2_0());  
    554                                      
    555                             pushFollow(FOLLOW_ruleImportSection_in_ruleEtsiBnf402); 
     611                            if ( state.backtracking==0 ) { 
     612                                
     613                                        newCompositeNode(grammarAccess.getEtsiBnfAccess().getImportSectionImportSectionParserRuleCall_2_2_0());  
     614                                     
     615                            } 
     616                            pushFollow(FOLLOW_ruleImportSection_in_ruleEtsiBnf415); 
    556617                            lv_importSection_12_0=ruleImportSection(); 
    557618 
    558619                            state._fsp--; 
    559  
    560  
    561                                         if (current==null) { 
    562                                             current = createModelElementForParent(grammarAccess.getEtsiBnfRule()); 
    563                                         } 
    564                                                 set( 
    565                                                         current,  
    566                                                         "importSection", 
    567                                                 lv_importSection_12_0,  
    568                                                 "ImportSection"); 
    569                                         afterParserOrEnumRuleCall(); 
    570                                      
     620                            if (state.failed) return current; 
     621                            if ( state.backtracking==0 ) { 
     622 
     623                                        if (current==null) { 
     624                                            current = createModelElementForParent(grammarAccess.getEtsiBnfRule()); 
     625                                        } 
     626                                                set( 
     627                                                        current,  
     628                                                        "importSection", 
     629                                                lv_importSection_12_0,  
     630                                                "ImportSection"); 
     631                                        afterParserOrEnumRuleCall(); 
     632                                     
     633                            } 
    571634 
    572635                            } 
     
    578641                    } 
    579642 
    580                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:251:3: ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* 
     643                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:258:3: ( (lv_mergeEntry_13_0= ruleMergeEntry ) )* 
    581644                    loop7: 
    582645                    do { 
     
    591654                        switch (alt7) { 
    592655                        case 1 : 
    593                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:252:1: (lv_mergeEntry_13_0= ruleMergeEntry ) 
     656                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:259:1: (lv_mergeEntry_13_0= ruleMergeEntry ) 
    594657                            { 
    595                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:252:1: (lv_mergeEntry_13_0= ruleMergeEntry ) 
    596                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:253:3: lv_mergeEntry_13_0= ruleMergeEntry 
     658                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:259:1: (lv_mergeEntry_13_0= ruleMergeEntry ) 
     659                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:260:3: lv_mergeEntry_13_0= ruleMergeEntry 
    597660                            { 
    598                               
    599                                         newCompositeNode(grammarAccess.getEtsiBnfAccess().getMergeEntryMergeEntryParserRuleCall_2_3_0());  
    600                                      
    601                             pushFollow(FOLLOW_ruleMergeEntry_in_ruleEtsiBnf424); 
     661                            if ( state.backtracking==0 ) { 
     662                                
     663                                        newCompositeNode(grammarAccess.getEtsiBnfAccess().getMergeEntryMergeEntryParserRuleCall_2_3_0());  
     664                                     
     665                            } 
     666                            pushFollow(FOLLOW_ruleMergeEntry_in_ruleEtsiBnf437); 
    602667                            lv_mergeEntry_13_0=ruleMergeEntry(); 
    603668 
    604669                            state._fsp--; 
    605  
    606  
    607                                         if (current==null) { 
    608                                             current = createModelElementForParent(grammarAccess.getEtsiBnfRule()); 
    609                                         } 
    610                                                 add( 
    611                                                         current,  
    612                                                         "mergeEntry", 
    613                                                 lv_mergeEntry_13_0,  
    614                                                 "MergeEntry"); 
    615                                         afterParserOrEnumRuleCall(); 
    616                                      
     670                            if (state.failed) return current; 
     671                            if ( state.backtracking==0 ) { 
     672 
     673                                        if (current==null) { 
     674                                            current = createModelElementForParent(grammarAccess.getEtsiBnfRule()); 
     675                                        } 
     676                                                add( 
     677                                                        current,  
     678                                                        "mergeEntry", 
     679                                                lv_mergeEntry_13_0,  
     680                                                "MergeEntry"); 
     681                                        afterParserOrEnumRuleCall(); 
     682                                     
     683                            } 
    617684 
    618685                            } 
     
    639706            } 
    640707 
    641              leaveRule();  
     708            if ( state.backtracking==0 ) { 
     709               leaveRule();  
     710            } 
    642711        } 
    643712          
     
    647716            }  
    648717        finally { 
     718            if ( state.backtracking>0 ) { memoize(input, 2, ruleEtsiBnf_StartIndex); } 
    649719        } 
    650720        return current; 
     
    654724 
    655725    // $ANTLR start "entryRuleImportSection" 
    656     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:277:1: entryRuleImportSection returns [EObject current=null] : iv_ruleImportSection= ruleImportSection EOF ; 
     726    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:284:1: entryRuleImportSection returns [EObject current=null] : iv_ruleImportSection= ruleImportSection EOF ; 
    657727    public final EObject entryRuleImportSection() throws RecognitionException { 
    658728        EObject current = null; 
    659  
     729        int entryRuleImportSection_StartIndex = input.index(); 
    660730        EObject iv_ruleImportSection = null; 
    661731 
    662732 
    663733        try { 
    664             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:278:2: (iv_ruleImportSection= ruleImportSection EOF ) 
    665             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:279:2: iv_ruleImportSection= ruleImportSection EOF 
    666             { 
    667              newCompositeNode(grammarAccess.getImportSectionRule());  
    668             pushFollow(FOLLOW_ruleImportSection_in_entryRuleImportSection462); 
     734            if ( state.backtracking>0 && alreadyParsedRule(input, 3) ) { return current; } 
     735            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:285:2: (iv_ruleImportSection= ruleImportSection EOF ) 
     736            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:286:2: iv_ruleImportSection= ruleImportSection EOF 
     737            { 
     738            if ( state.backtracking==0 ) { 
     739               newCompositeNode(grammarAccess.getImportSectionRule());  
     740            } 
     741            pushFollow(FOLLOW_ruleImportSection_in_entryRuleImportSection475); 
    669742            iv_ruleImportSection=ruleImportSection(); 
    670743 
    671744            state._fsp--; 
    672  
    673              current =iv_ruleImportSection;  
    674             match(input,EOF,FOLLOW_EOF_in_entryRuleImportSection472);  
     745            if (state.failed) return current; 
     746            if ( state.backtracking==0 ) { 
     747               current =iv_ruleImportSection;  
     748            } 
     749            match(input,EOF,FOLLOW_EOF_in_entryRuleImportSection485); if (state.failed) return current; 
    675750 
    676751            } 
     
    683758            }  
    684759        finally { 
     760            if ( state.backtracking>0 ) { memoize(input, 3, entryRuleImportSection_StartIndex); } 
    685761        } 
    686762        return current; 
     
    690766 
    691767    // $ANTLR start "ruleImportSection" 
    692     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:286:1: ruleImportSection returns [EObject current=null] : ( (lv_imports_0_0= ruleImport ) )+ ; 
     768    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:293:1: ruleImportSection returns [EObject current=null] : ( (lv_imports_0_0= ruleImport ) )+ ; 
    693769    public final EObject ruleImportSection() throws RecognitionException { 
    694770        EObject current = null; 
    695  
     771        int ruleImportSection_StartIndex = input.index(); 
    696772        EObject lv_imports_0_0 = null; 
    697773 
     
    700776             
    701777        try { 
    702             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:289:28: ( ( (lv_imports_0_0= ruleImport ) )+ ) 
    703             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:290:1: ( (lv_imports_0_0= ruleImport ) )+ 
    704             { 
    705             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:290:1: ( (lv_imports_0_0= ruleImport ) )+ 
     778            if ( state.backtracking>0 && alreadyParsedRule(input, 4) ) { return current; } 
     779            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:296:28: ( ( (lv_imports_0_0= ruleImport ) )+ ) 
     780            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:297:1: ( (lv_imports_0_0= ruleImport ) )+ 
     781            { 
     782            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:297:1: ( (lv_imports_0_0= ruleImport ) )+ 
    706783            int cnt9=0; 
    707784            loop9: 
     
    717794                switch (alt9) { 
    718795                case 1 : 
    719                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:291:1: (lv_imports_0_0= ruleImport ) 
     796                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:298:1: (lv_imports_0_0= ruleImport ) 
    720797                    { 
    721                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:291:1: (lv_imports_0_0= ruleImport ) 
    722                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:292:3: lv_imports_0_0= ruleImport 
     798                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:298:1: (lv_imports_0_0= ruleImport ) 
     799                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:299:3: lv_imports_0_0= ruleImport 
    723800                    { 
    724                       
    725                                 newCompositeNode(grammarAccess.getImportSectionAccess().getImportsImportParserRuleCall_0());  
    726                              
    727                     pushFollow(FOLLOW_ruleImport_in_ruleImportSection517); 
     801                    if ( state.backtracking==0 ) { 
     802                        
     803                                newCompositeNode(grammarAccess.getImportSectionAccess().getImportsImportParserRuleCall_0());  
     804                             
     805                    } 
     806                    pushFollow(FOLLOW_ruleImport_in_ruleImportSection530); 
    728807                    lv_imports_0_0=ruleImport(); 
    729808 
    730809                    state._fsp--; 
    731  
    732  
    733                                 if (current==null) { 
    734                                     current = createModelElementForParent(grammarAccess.getImportSectionRule()); 
    735                                 } 
    736                                         add( 
    737                                                 current,  
    738                                                 "imports", 
    739                                         lv_imports_0_0,  
    740                                         "Import"); 
    741                                 afterParserOrEnumRuleCall(); 
    742                              
     810                    if (state.failed) return current; 
     811                    if ( state.backtracking==0 ) { 
     812 
     813                                if (current==null) { 
     814                                    current = createModelElementForParent(grammarAccess.getImportSectionRule()); 
     815                                } 
     816                                        add( 
     817                                                current,  
     818                                                "imports", 
     819                                        lv_imports_0_0,  
     820                                        "Import"); 
     821                                afterParserOrEnumRuleCall(); 
     822                             
     823                    } 
    743824 
    744825                    } 
     
    750831                default : 
    751832                    if ( cnt9 >= 1 ) break loop9; 
     833                    if (state.backtracking>0) {state.failed=true; return current;} 
    752834                        EarlyExitException eee = 
    753835                            new EarlyExitException(9, input); 
     
    760842            } 
    761843 
    762              leaveRule();  
     844            if ( state.backtracking==0 ) { 
     845               leaveRule();  
     846            } 
    763847        } 
    764848          
     
    768852            }  
    769853        finally { 
     854            if ( state.backtracking>0 ) { memoize(input, 4, ruleImportSection_StartIndex); } 
    770855        } 
    771856        return current; 
     
    775860 
    776861    // $ANTLR start "entryRuleBnfEntry" 
    777     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:316:1: entryRuleBnfEntry returns [EObject current=null] : iv_ruleBnfEntry= ruleBnfEntry EOF ; 
     862    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:323:1: entryRuleBnfEntry returns [EObject current=null] : iv_ruleBnfEntry= ruleBnfEntry EOF ; 
    778863    public final EObject entryRuleBnfEntry() throws RecognitionException { 
    779864        EObject current = null; 
    780  
     865        int entryRuleBnfEntry_StartIndex = input.index(); 
    781866        EObject iv_ruleBnfEntry = null; 
    782867 
    783868 
    784869        try { 
    785             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:317:2: (iv_ruleBnfEntry= ruleBnfEntry EOF ) 
    786             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:318:2: iv_ruleBnfEntry= ruleBnfEntry EOF 
    787             { 
    788              newCompositeNode(grammarAccess.getBnfEntryRule());  
    789             pushFollow(FOLLOW_ruleBnfEntry_in_entryRuleBnfEntry553); 
     870            if ( state.backtracking>0 && alreadyParsedRule(input, 5) ) { return current; } 
     871            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:324:2: (iv_ruleBnfEntry= ruleBnfEntry EOF ) 
     872            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:325:2: iv_ruleBnfEntry= ruleBnfEntry EOF 
     873            { 
     874            if ( state.backtracking==0 ) { 
     875               newCompositeNode(grammarAccess.getBnfEntryRule());  
     876            } 
     877            pushFollow(FOLLOW_ruleBnfEntry_in_entryRuleBnfEntry566); 
    790878            iv_ruleBnfEntry=ruleBnfEntry(); 
    791879 
    792880            state._fsp--; 
    793  
    794              current =iv_ruleBnfEntry;  
    795             match(input,EOF,FOLLOW_EOF_in_entryRuleBnfEntry563);  
     881            if (state.failed) return current; 
     882            if ( state.backtracking==0 ) { 
     883               current =iv_ruleBnfEntry;  
     884            } 
     885            match(input,EOF,FOLLOW_EOF_in_entryRuleBnfEntry576); if (state.failed) return current; 
    796886 
    797887            } 
     
    804894            }  
    805895        finally { 
     896            if ( state.backtracking>0 ) { memoize(input, 5, entryRuleBnfEntry_StartIndex); } 
    806897        } 
    807898        return current; 
     
    811902 
    812903    // $ANTLR start "ruleBnfEntry" 
    813     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:325:1: ruleBnfEntry returns [EObject current=null] : ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_rule_1_0= ruleRule ) ) ) ; 
     904    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:332:1: ruleBnfEntry returns [EObject current=null] : ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_rule_1_0= ruleRule ) ) ) ; 
    814905    public final EObject ruleBnfEntry() throws RecognitionException { 
    815906        EObject current = null; 
    816  
     907        int ruleBnfEntry_StartIndex = input.index(); 
    817908        EObject lv_sectionheader_0_0 = null; 
    818909 
     
    823914             
    824915        try { 
    825             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:328:28: ( ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_rule_1_0= ruleRule ) ) ) ) 
    826             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:329:1: ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_rule_1_0= ruleRule ) ) ) 
    827             { 
    828             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:329:1: ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_rule_1_0= ruleRule ) ) ) 
     916            if ( state.backtracking>0 && alreadyParsedRule(input, 6) ) { return current; } 
     917            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:335:28: ( ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_rule_1_0= ruleRule ) ) ) ) 
     918            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:336:1: ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_rule_1_0= ruleRule ) ) ) 
     919            { 
     920            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:336:1: ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_rule_1_0= ruleRule ) ) ) 
    829921            int alt10=2; 
    830922            int LA10_0 = input.LA(1); 
     
    837929            } 
    838930            else { 
     931                if (state.backtracking>0) {state.failed=true; return current;} 
    839932                NoViableAltException nvae = 
    840933                    new NoViableAltException("", 10, 0, input); 
     
    844937            switch (alt10) { 
    845938                case 1 : 
    846                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:329:2: ( (lv_sectionheader_0_0= ruleSectionHeading ) ) 
    847                     { 
    848                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:329:2: ( (lv_sectionheader_0_0= ruleSectionHeading ) ) 
    849                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:330:1: (lv_sectionheader_0_0= ruleSectionHeading ) 
    850                     { 
    851                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:330:1: (lv_sectionheader_0_0= ruleSectionHeading ) 
    852                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:331:3: lv_sectionheader_0_0= ruleSectionHeading 
    853                     { 
    854                       
    855                                 newCompositeNode(grammarAccess.getBnfEntryAccess().getSectionheaderSectionHeadingParserRuleCall_0_0());  
    856                              
    857                     pushFollow(FOLLOW_ruleSectionHeading_in_ruleBnfEntry609); 
     939                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:336:2: ( (lv_sectionheader_0_0= ruleSectionHeading ) ) 
     940                    { 
     941                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:336:2: ( (lv_sectionheader_0_0= ruleSectionHeading ) ) 
     942                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:337:1: (lv_sectionheader_0_0= ruleSectionHeading ) 
     943                    { 
     944                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:337:1: (lv_sectionheader_0_0= ruleSectionHeading ) 
     945                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:338:3: lv_sectionheader_0_0= ruleSectionHeading 
     946                    { 
     947                    if ( state.backtracking==0 ) { 
     948                        
     949                                newCompositeNode(grammarAccess.getBnfEntryAccess().getSectionheaderSectionHeadingParserRuleCall_0_0());  
     950                             
     951                    } 
     952                    pushFollow(FOLLOW_ruleSectionHeading_in_ruleBnfEntry622); 
    858953                    lv_sectionheader_0_0=ruleSectionHeading(); 
    859954 
    860955                    state._fsp--; 
    861  
    862  
    863                                 if (current==null) { 
    864                                     current = createModelElementForParent(grammarAccess.getBnfEntryRule()); 
    865                                 } 
    866                                         set( 
    867                                                 current,  
    868                                                 "sectionheader", 
    869                                         lv_sectionheader_0_0,  
    870                                         "SectionHeading"); 
    871                                 afterParserOrEnumRuleCall(); 
    872                              
     956                    if (state.failed) return current; 
     957                    if ( state.backtracking==0 ) { 
     958 
     959                                if (current==null) { 
     960                                    current = createModelElementForParent(grammarAccess.getBnfEntryRule()); 
     961                                } 
     962                                        set( 
     963                                                current,  
     964                                                "sectionheader", 
     965                                        lv_sectionheader_0_0,  
     966                                        "SectionHeading"); 
     967                                afterParserOrEnumRuleCall(); 
     968                             
     969                    } 
    873970 
    874971                    } 
     
    881978                    break; 
    882979                case 2 : 
    883                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:348:6: ( (lv_rule_1_0= ruleRule ) ) 
    884                     { 
    885                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:348:6: ( (lv_rule_1_0= ruleRule ) ) 
    886                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:349:1: (lv_rule_1_0= ruleRule ) 
    887                     { 
    888                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:349:1: (lv_rule_1_0= ruleRule ) 
    889                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:350:3: lv_rule_1_0= ruleRule 
    890                     { 
    891                       
    892                                 newCompositeNode(grammarAccess.getBnfEntryAccess().getRuleRuleParserRuleCall_1_0());  
    893                              
    894                     pushFollow(FOLLOW_ruleRule_in_ruleBnfEntry636); 
     980                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:355:6: ( (lv_rule_1_0= ruleRule ) ) 
     981                    { 
     982                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:355:6: ( (lv_rule_1_0= ruleRule ) ) 
     983                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:356:1: (lv_rule_1_0= ruleRule ) 
     984                    { 
     985                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:356:1: (lv_rule_1_0= ruleRule ) 
     986                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:357:3: lv_rule_1_0= ruleRule 
     987                    { 
     988                    if ( state.backtracking==0 ) { 
     989                        
     990                                newCompositeNode(grammarAccess.getBnfEntryAccess().getRuleRuleParserRuleCall_1_0());  
     991                             
     992                    } 
     993                    pushFollow(FOLLOW_ruleRule_in_ruleBnfEntry649); 
    895994                    lv_rule_1_0=ruleRule(); 
    896995 
    897996                    state._fsp--; 
    898  
    899  
    900                                 if (current==null) { 
    901                                     current = createModelElementForParent(grammarAccess.getBnfEntryRule()); 
    902                                 } 
    903                                         set( 
    904                                                 current,  
    905                                                 "rule", 
    906                                         lv_rule_1_0,  
    907                                         "Rule"); 
    908                                 afterParserOrEnumRuleCall(); 
    909                              
     997                    if (state.failed) return current; 
     998                    if ( state.backtracking==0 ) { 
     999 
     1000                                if (current==null) { 
     1001                                    current = createModelElementForParent(grammarAccess.getBnfEntryRule()); 
     1002                                } 
     1003                                        set( 
     1004                                                current,  
     1005                                                "rule", 
     1006                                        lv_rule_1_0,  
     1007                                        "Rule"); 
     1008                                afterParserOrEnumRuleCall(); 
     1009                             
     1010                    } 
    9101011 
    9111012                    } 
     
    9231024            } 
    9241025 
    925              leaveRule();  
     1026            if ( state.backtracking==0 ) { 
     1027               leaveRule();  
     1028            } 
    9261029        } 
    9271030          
     
    9311034            }  
    9321035        finally { 
     1036            if ( state.backtracking>0 ) { memoize(input, 6, ruleBnfEntry_StartIndex); } 
    9331037        } 
    9341038        return current; 
     
    9381042 
    9391043    // $ANTLR start "entryRuleDeltaEntry" 
    940     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:374:1: entryRuleDeltaEntry returns [EObject current=null] : iv_ruleDeltaEntry= ruleDeltaEntry EOF ; 
     1044    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:381:1: entryRuleDeltaEntry returns [EObject current=null] : iv_ruleDeltaEntry= ruleDeltaEntry EOF ; 
    9411045    public final EObject entryRuleDeltaEntry() throws RecognitionException { 
    9421046        EObject current = null; 
    943  
     1047        int entryRuleDeltaEntry_StartIndex = input.index(); 
    9441048        EObject iv_ruleDeltaEntry = null; 
    9451049 
    9461050 
    9471051        try { 
    948             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:375:2: (iv_ruleDeltaEntry= ruleDeltaEntry EOF ) 
    949             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:376:2: iv_ruleDeltaEntry= ruleDeltaEntry EOF 
    950             { 
    951              newCompositeNode(grammarAccess.getDeltaEntryRule());  
    952             pushFollow(FOLLOW_ruleDeltaEntry_in_entryRuleDeltaEntry672); 
     1052            if ( state.backtracking>0 && alreadyParsedRule(input, 7) ) { return current; } 
     1053            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:382:2: (iv_ruleDeltaEntry= ruleDeltaEntry EOF ) 
     1054            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:383:2: iv_ruleDeltaEntry= ruleDeltaEntry EOF 
     1055            { 
     1056            if ( state.backtracking==0 ) { 
     1057               newCompositeNode(grammarAccess.getDeltaEntryRule());  
     1058            } 
     1059            pushFollow(FOLLOW_ruleDeltaEntry_in_entryRuleDeltaEntry685); 
    9531060            iv_ruleDeltaEntry=ruleDeltaEntry(); 
    9541061 
    9551062            state._fsp--; 
    956  
    957              current =iv_ruleDeltaEntry;  
    958             match(input,EOF,FOLLOW_EOF_in_entryRuleDeltaEntry682);  
     1063            if (state.failed) return current; 
     1064            if ( state.backtracking==0 ) { 
     1065               current =iv_ruleDeltaEntry;  
     1066            } 
     1067            match(input,EOF,FOLLOW_EOF_in_entryRuleDeltaEntry695); if (state.failed) return current; 
    9591068 
    9601069            } 
     
    9671076            }  
    9681077        finally { 
     1078            if ( state.backtracking>0 ) { memoize(input, 7, entryRuleDeltaEntry_StartIndex); } 
    9691079        } 
    9701080        return current; 
     
    9741084 
    9751085    // $ANTLR start "ruleDeltaEntry" 
    976     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:383:1: ruleDeltaEntry returns [EObject current=null] : ( ( (lv_rule_0_0= ruleRule ) ) | ( (lv_sectionheader_1_0= ruleSectionHeading ) ) | ( (lv_extRule_2_0= ruleExtRule ) ) ) ; 
     1086    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:390:1: ruleDeltaEntry returns [EObject current=null] : ( ( (lv_rule_0_0= ruleRule ) ) | ( (lv_sectionheader_1_0= ruleSectionHeading ) ) | ( (lv_extRule_2_0= ruleExtRule ) ) ) ; 
    9771087    public final EObject ruleDeltaEntry() throws RecognitionException { 
    9781088        EObject current = null; 
    979  
     1089        int ruleDeltaEntry_StartIndex = input.index(); 
    9801090        EObject lv_rule_0_0 = null; 
    9811091 
     
    9881098             
    9891099        try { 
    990             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:386:28: ( ( ( (lv_rule_0_0= ruleRule ) ) | ( (lv_sectionheader_1_0= ruleSectionHeading ) ) | ( (lv_extRule_2_0= ruleExtRule ) ) ) ) 
    991             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:387:1: ( ( (lv_rule_0_0= ruleRule ) ) | ( (lv_sectionheader_1_0= ruleSectionHeading ) ) | ( (lv_extRule_2_0= ruleExtRule ) ) ) 
    992             { 
    993             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:387:1: ( ( (lv_rule_0_0= ruleRule ) ) | ( (lv_sectionheader_1_0= ruleSectionHeading ) ) | ( (lv_extRule_2_0= ruleExtRule ) ) ) 
     1100            if ( state.backtracking>0 && alreadyParsedRule(input, 8) ) { return current; } 
     1101            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:393:28: ( ( ( (lv_rule_0_0= ruleRule ) ) | ( (lv_sectionheader_1_0= ruleSectionHeading ) ) | ( (lv_extRule_2_0= ruleExtRule ) ) ) ) 
     1102            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:394:1: ( ( (lv_rule_0_0= ruleRule ) ) | ( (lv_sectionheader_1_0= ruleSectionHeading ) ) | ( (lv_extRule_2_0= ruleExtRule ) ) ) 
     1103            { 
     1104            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:394:1: ( ( (lv_rule_0_0= ruleRule ) ) | ( (lv_sectionheader_1_0= ruleSectionHeading ) ) | ( (lv_extRule_2_0= ruleExtRule ) ) ) 
    9941105            int alt11=3; 
    9951106            switch ( input.LA(1) ) { 
     
    10071118                            int LA11_2 = input.LA(5); 
    10081119 
    1009                             if ( (LA11_2==26) ) { 
     1120                            if ( (LA11_2==25) ) { 
     1121                                alt11=1; 
     1122                            } 
     1123                            else if ( (LA11_2==26) ) { 
    10101124                                alt11=3; 
    10111125                            } 
    1012                             else if ( (LA11_2==25) ) { 
    1013                                 alt11=1; 
    1014                             } 
    10151126                            else { 
     1127                                if (state.backtracking>0) {state.failed=true; return current;} 
    10161128                                NoViableAltException nvae = 
    10171129                                    new NoViableAltException("", 11, 2, input); 
     
    10211133                        } 
    10221134                        else { 
     1135                            if (state.backtracking>0) {state.failed=true; return current;} 
    10231136                            NoViableAltException nvae = 
    10241137                                new NoViableAltException("", 11, 5, input); 
     
    10281141                    } 
    10291142                    else { 
     1143                        if (state.backtracking>0) {state.failed=true; return current;} 
    10301144                        NoViableAltException nvae = 
    10311145                            new NoViableAltException("", 11, 4, input); 
     
    10401154                        int LA11_2 = input.LA(4); 
    10411155 
    1042                         if ( (LA11_2==26) ) { 
     1156                        if ( (LA11_2==25) ) { 
     1157                            alt11=1; 
     1158                        } 
     1159                        else if ( (LA11_2==26) ) { 
    10431160                            alt11=3; 
    10441161                        } 
    1045                         else if ( (LA11_2==25) ) { 
    1046                             alt11=1; 
    1047                         } 
    10481162                        else { 
     1163                            if (state.backtracking>0) {state.failed=true; return current;} 
    10491164                            NoViableAltException nvae = 
    10501165                                new NoViableAltException("", 11, 2, input); 
     
    10541169                    } 
    10551170                    else { 
     1171                        if (state.backtracking>0) {state.failed=true; return current;} 
    10561172                        NoViableAltException nvae = 
    10571173                            new NoViableAltException("", 11, 5, input); 
     
    10611177                } 
    10621178                else { 
     1179                    if (state.backtracking>0) {state.failed=true; return current;} 
    10631180                    NoViableAltException nvae = 
    10641181                        new NoViableAltException("", 11, 1, input); 
     
    10721189                int LA11_2 = input.LA(2); 
    10731190 
    1074                 if ( (LA11_2==26) ) { 
     1191                if ( (LA11_2==25) ) { 
     1192                    alt11=1; 
     1193                } 
     1194                else if ( (LA11_2==26) ) { 
    10751195                    alt11=3; 
    10761196                } 
    1077                 else if ( (LA11_2==25) ) { 
    1078                     alt11=1; 
    1079                 } 
    10801197                else { 
     1198                    if (state.backtracking>0) {state.failed=true; return current;} 
    10811199                    NoViableAltException nvae = 
    10821200                        new NoViableAltException("", 11, 2, input); 
     
    10921210                break; 
    10931211            default: 
     1212                if (state.backtracking>0) {state.failed=true; return current;} 
    10941213                NoViableAltException nvae = 
    10951214                    new NoViableAltException("", 11, 0, input); 
     
    11001219            switch (alt11) { 
    11011220                case 1 : 
    1102                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:387:2: ( (lv_rule_0_0= ruleRule ) ) 
    1103                     { 
    1104                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:387:2: ( (lv_rule_0_0= ruleRule ) ) 
    1105                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:388:1: (lv_rule_0_0= ruleRule ) 
    1106                     { 
    1107                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:388:1: (lv_rule_0_0= ruleRule ) 
    1108                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:389:3: lv_rule_0_0= ruleRule 
    1109                     { 
    1110                       
    1111                                 newCompositeNode(grammarAccess.getDeltaEntryAccess().getRuleRuleParserRuleCall_0_0());  
    1112                              
    1113                     pushFollow(FOLLOW_ruleRule_in_ruleDeltaEntry728); 
     1221                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:394:2: ( (lv_rule_0_0= ruleRule ) ) 
     1222                    { 
     1223                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:394:2: ( (lv_rule_0_0= ruleRule ) ) 
     1224                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:395:1: (lv_rule_0_0= ruleRule ) 
     1225                    { 
     1226                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:395:1: (lv_rule_0_0= ruleRule ) 
     1227                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:396:3: lv_rule_0_0= ruleRule 
     1228                    { 
     1229                    if ( state.backtracking==0 ) { 
     1230                        
     1231                                newCompositeNode(grammarAccess.getDeltaEntryAccess().getRuleRuleParserRuleCall_0_0());  
     1232                             
     1233                    } 
     1234                    pushFollow(FOLLOW_ruleRule_in_ruleDeltaEntry741); 
    11141235                    lv_rule_0_0=ruleRule(); 
    11151236 
    11161237                    state._fsp--; 
    1117  
    1118  
    1119                                 if (current==null) { 
    1120                                     current = createModelElementForParent(grammarAccess.getDeltaEntryRule()); 
    1121                                 } 
    1122                                         set( 
    1123                                                 current,  
    1124                                                 "rule", 
    1125                                         lv_rule_0_0,  
    1126                                         "Rule"); 
    1127                                 afterParserOrEnumRuleCall(); 
    1128                              
     1238                    if (state.failed) return current; 
     1239                    if ( state.backtracking==0 ) { 
     1240 
     1241                                if (current==null) { 
     1242                                    current = createModelElementForParent(grammarAccess.getDeltaEntryRule()); 
     1243                                } 
     1244                                        set( 
     1245                                                current,  
     1246                                                "rule", 
     1247                                        lv_rule_0_0,  
     1248                                        "Rule"); 
     1249                                afterParserOrEnumRuleCall(); 
     1250                             
     1251                    } 
    11291252 
    11301253                    } 
     
    11371260                    break; 
    11381261                case 2 : 
    1139                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:406:6: ( (lv_sectionheader_1_0= ruleSectionHeading ) ) 
    1140                     { 
    1141                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:406:6: ( (lv_sectionheader_1_0= ruleSectionHeading ) ) 
    1142                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:407:1: (lv_sectionheader_1_0= ruleSectionHeading ) 
    1143                     { 
    1144                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:407:1: (lv_sectionheader_1_0= ruleSectionHeading ) 
    1145                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:408:3: lv_sectionheader_1_0= ruleSectionHeading 
    1146                     { 
    1147                       
    1148                                 newCompositeNode(grammarAccess.getDeltaEntryAccess().getSectionheaderSectionHeadingParserRuleCall_1_0());  
    1149                              
    1150                     pushFollow(FOLLOW_ruleSectionHeading_in_ruleDeltaEntry755); 
     1262                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:413:6: ( (lv_sectionheader_1_0= ruleSectionHeading ) ) 
     1263                    { 
     1264                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:413:6: ( (lv_sectionheader_1_0= ruleSectionHeading ) ) 
     1265                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:414:1: (lv_sectionheader_1_0= ruleSectionHeading ) 
     1266                    { 
     1267                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:414:1: (lv_sectionheader_1_0= ruleSectionHeading ) 
     1268                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:415:3: lv_sectionheader_1_0= ruleSectionHeading 
     1269                    { 
     1270                    if ( state.backtracking==0 ) { 
     1271                        
     1272                                newCompositeNode(grammarAccess.getDeltaEntryAccess().getSectionheaderSectionHeadingParserRuleCall_1_0());  
     1273                             
     1274                    } 
     1275                    pushFollow(FOLLOW_ruleSectionHeading_in_ruleDeltaEntry768); 
    11511276                    lv_sectionheader_1_0=ruleSectionHeading(); 
    11521277 
    11531278                    state._fsp--; 
    1154  
    1155  
    1156                                 if (current==null) { 
    1157                                     current = createModelElementForParent(grammarAccess.getDeltaEntryRule()); 
    1158                                 } 
    1159                                         set( 
    1160                                                 current,  
    1161                                                 "sectionheader", 
    1162                                         lv_sectionheader_1_0,  
    1163                                         "SectionHeading"); 
    1164                                 afterParserOrEnumRuleCall(); 
    1165                              
     1279                    if (state.failed) return current; 
     1280                    if ( state.backtracking==0 ) { 
     1281 
     1282                                if (current==null) { 
     1283                                    current = createModelElementForParent(grammarAccess.getDeltaEntryRule()); 
     1284                                } 
     1285                                        set( 
     1286                                                current,  
     1287                                                "sectionheader", 
     1288                                        lv_sectionheader_1_0,  
     1289                                        "SectionHeading"); 
     1290                                afterParserOrEnumRuleCall(); 
     1291                             
     1292                    } 
    11661293 
    11671294                    } 
     
    11741301                    break; 
    11751302                case 3 : 
    1176                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:425:6: ( (lv_extRule_2_0= ruleExtRule ) ) 
    1177                     { 
    1178                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:425:6: ( (lv_extRule_2_0= ruleExtRule ) ) 
    1179                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:426:1: (lv_extRule_2_0= ruleExtRule ) 
    1180                     { 
    1181                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:426:1: (lv_extRule_2_0= ruleExtRule ) 
    1182                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:427:3: lv_extRule_2_0= ruleExtRule 
    1183                     { 
    1184                       
    1185                                 newCompositeNode(grammarAccess.getDeltaEntryAccess().getExtRuleExtRuleParserRuleCall_2_0());  
    1186                              
    1187                     pushFollow(FOLLOW_ruleExtRule_in_ruleDeltaEntry782); 
     1303                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:432:6: ( (lv_extRule_2_0= ruleExtRule ) ) 
     1304                    { 
     1305                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:432:6: ( (lv_extRule_2_0= ruleExtRule ) ) 
     1306                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:433:1: (lv_extRule_2_0= ruleExtRule ) 
     1307                    { 
     1308                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:433:1: (lv_extRule_2_0= ruleExtRule ) 
     1309                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:434:3: lv_extRule_2_0= ruleExtRule 
     1310                    { 
     1311                    if ( state.backtracking==0 ) { 
     1312                        
     1313                                newCompositeNode(grammarAccess.getDeltaEntryAccess().getExtRuleExtRuleParserRuleCall_2_0());  
     1314                             
     1315                    } 
     1316                    pushFollow(FOLLOW_ruleExtRule_in_ruleDeltaEntry795); 
    11881317                    lv_extRule_2_0=ruleExtRule(); 
    11891318 
    11901319                    state._fsp--; 
    1191  
    1192  
    1193                                 if (current==null) { 
    1194                                     current = createModelElementForParent(grammarAccess.getDeltaEntryRule()); 
    1195                                 } 
    1196                                         set( 
    1197                                                 current,  
    1198                                                 "extRule", 
    1199                                         lv_extRule_2_0,  
    1200                                         "ExtRule"); 
    1201                                 afterParserOrEnumRuleCall(); 
    1202                              
     1320                    if (state.failed) return current; 
     1321                    if ( state.backtracking==0 ) { 
     1322 
     1323                                if (current==null) { 
     1324                                    current = createModelElementForParent(grammarAccess.getDeltaEntryRule()); 
     1325                                } 
     1326                                        set( 
     1327                                                current,  
     1328                                                "extRule", 
     1329                                        lv_extRule_2_0,  
     1330                                        "ExtRule"); 
     1331                                afterParserOrEnumRuleCall(); 
     1332                             
     1333                    } 
    12031334 
    12041335                    } 
     
    12161347            } 
    12171348 
    1218              leaveRule();  
     1349            if ( state.backtracking==0 ) { 
     1350               leaveRule();  
     1351            } 
    12191352        } 
    12201353          
     
    12241357            }  
    12251358        finally { 
     1359            if ( state.backtracking>0 ) { memoize(input, 8, ruleDeltaEntry_StartIndex); } 
    12261360        } 
    12271361        return current; 
     
    12311365 
    12321366    // $ANTLR start "entryRuleMergeEntry" 
    1233     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:451:1: entryRuleMergeEntry returns [EObject current=null] : iv_ruleMergeEntry= ruleMergeEntry EOF ; 
     1367    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:458:1: entryRuleMergeEntry returns [EObject current=null] : iv_ruleMergeEntry= ruleMergeEntry EOF ; 
    12341368    public final EObject entryRuleMergeEntry() throws RecognitionException { 
    12351369        EObject current = null; 
    1236  
     1370        int entryRuleMergeEntry_StartIndex = input.index(); 
    12371371        EObject iv_ruleMergeEntry = null; 
    12381372 
    12391373 
    12401374        try { 
    1241             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:452:2: (iv_ruleMergeEntry= ruleMergeEntry EOF ) 
    1242             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:453:2: iv_ruleMergeEntry= ruleMergeEntry EOF 
    1243             { 
    1244              newCompositeNode(grammarAccess.getMergeEntryRule());  
    1245             pushFollow(FOLLOW_ruleMergeEntry_in_entryRuleMergeEntry818); 
     1375            if ( state.backtracking>0 && alreadyParsedRule(input, 9) ) { return current; } 
     1376            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:459:2: (iv_ruleMergeEntry= ruleMergeEntry EOF ) 
     1377            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:460:2: iv_ruleMergeEntry= ruleMergeEntry EOF 
     1378            { 
     1379            if ( state.backtracking==0 ) { 
     1380               newCompositeNode(grammarAccess.getMergeEntryRule());  
     1381            } 
     1382            pushFollow(FOLLOW_ruleMergeEntry_in_entryRuleMergeEntry831); 
    12461383            iv_ruleMergeEntry=ruleMergeEntry(); 
    12471384 
    12481385            state._fsp--; 
    1249  
    1250              current =iv_ruleMergeEntry;  
    1251             match(input,EOF,FOLLOW_EOF_in_entryRuleMergeEntry828);  
     1386            if (state.failed) return current; 
     1387            if ( state.backtracking==0 ) { 
     1388               current =iv_ruleMergeEntry;  
     1389            } 
     1390            match(input,EOF,FOLLOW_EOF_in_entryRuleMergeEntry841); if (state.failed) return current; 
    12521391 
    12531392            } 
     
    12601399            }  
    12611400        finally { 
     1401            if ( state.backtracking>0 ) { memoize(input, 9, entryRuleMergeEntry_StartIndex); } 
    12621402        } 
    12631403        return current; 
     
    12671407 
    12681408    // $ANTLR start "ruleMergeEntry" 
    1269     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:460:1: ruleMergeEntry returns [EObject current=null] : ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_mergeRule_1_0= ruleMergeRule ) ) ) ; 
     1409    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:467:1: ruleMergeEntry returns [EObject current=null] : ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_mergeRule_1_0= ruleMergeRule ) ) ) ; 
    12701410    public final EObject ruleMergeEntry() throws RecognitionException { 
    12711411        EObject current = null; 
    1272  
     1412        int ruleMergeEntry_StartIndex = input.index(); 
    12731413        EObject lv_sectionheader_0_0 = null; 
    12741414 
     
    12791419             
    12801420        try { 
    1281             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:463:28: ( ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_mergeRule_1_0= ruleMergeRule ) ) ) ) 
    1282             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:464:1: ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_mergeRule_1_0= ruleMergeRule ) ) ) 
    1283             { 
    1284             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:464:1: ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_mergeRule_1_0= ruleMergeRule ) ) ) 
     1421            if ( state.backtracking>0 && alreadyParsedRule(input, 10) ) { return current; } 
     1422            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:470:28: ( ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_mergeRule_1_0= ruleMergeRule ) ) ) ) 
     1423            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:471:1: ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_mergeRule_1_0= ruleMergeRule ) ) ) 
     1424            { 
     1425            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:471:1: ( ( (lv_sectionheader_0_0= ruleSectionHeading ) ) | ( (lv_mergeRule_1_0= ruleMergeRule ) ) ) 
    12851426            int alt12=2; 
    12861427            int LA12_0 = input.LA(1); 
     
    12931434            } 
    12941435            else { 
     1436                if (state.backtracking>0) {state.failed=true; return current;} 
    12951437                NoViableAltException nvae = 
    12961438                    new NoViableAltException("", 12, 0, input); 
     
    13001442            switch (alt12) { 
    13011443                case 1 : 
    1302                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:464:2: ( (lv_sectionheader_0_0= ruleSectionHeading ) ) 
    1303                     { 
    1304                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:464:2: ( (lv_sectionheader_0_0= ruleSectionHeading ) ) 
    1305                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:465:1: (lv_sectionheader_0_0= ruleSectionHeading ) 
    1306                     { 
    1307                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:465:1: (lv_sectionheader_0_0= ruleSectionHeading ) 
    1308                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:466:3: lv_sectionheader_0_0= ruleSectionHeading 
    1309                     { 
    1310                       
    1311                                 newCompositeNode(grammarAccess.getMergeEntryAccess().getSectionheaderSectionHeadingParserRuleCall_0_0());  
    1312                              
    1313                     pushFollow(FOLLOW_ruleSectionHeading_in_ruleMergeEntry874); 
     1444                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:471:2: ( (lv_sectionheader_0_0= ruleSectionHeading ) ) 
     1445                    { 
     1446                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:471:2: ( (lv_sectionheader_0_0= ruleSectionHeading ) ) 
     1447                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:472:1: (lv_sectionheader_0_0= ruleSectionHeading ) 
     1448                    { 
     1449                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:472:1: (lv_sectionheader_0_0= ruleSectionHeading ) 
     1450                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:473:3: lv_sectionheader_0_0= ruleSectionHeading 
     1451                    { 
     1452                    if ( state.backtracking==0 ) { 
     1453                        
     1454                                newCompositeNode(grammarAccess.getMergeEntryAccess().getSectionheaderSectionHeadingParserRuleCall_0_0());  
     1455                             
     1456                    } 
     1457                    pushFollow(FOLLOW_ruleSectionHeading_in_ruleMergeEntry887); 
    13141458                    lv_sectionheader_0_0=ruleSectionHeading(); 
    13151459 
    13161460                    state._fsp--; 
    1317  
    1318  
    1319                                 if (current==null) { 
    1320                                     current = createModelElementForParent(grammarAccess.getMergeEntryRule()); 
    1321                                 } 
    1322                                         set( 
    1323                                                 current,  
    1324                                                 "sectionheader", 
    1325                                         lv_sectionheader_0_0,  
    1326                                         "SectionHeading"); 
    1327                                 afterParserOrEnumRuleCall(); 
    1328                              
     1461                    if (state.failed) return current; 
     1462                    if ( state.backtracking==0 ) { 
     1463 
     1464                                if (current==null) { 
     1465                                    current = createModelElementForParent(grammarAccess.getMergeEntryRule()); 
     1466                                } 
     1467                                        set( 
     1468                                                current,  
     1469                                                "sectionheader", 
     1470                                        lv_sectionheader_0_0,  
     1471                                        "SectionHeading"); 
     1472                                afterParserOrEnumRuleCall(); 
     1473                             
     1474                    } 
    13291475 
    13301476                    } 
     
    13371483                    break; 
    13381484                case 2 : 
    1339                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:483:6: ( (lv_mergeRule_1_0= ruleMergeRule ) ) 
    1340                     { 
    1341                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:483:6: ( (lv_mergeRule_1_0= ruleMergeRule ) ) 
    1342                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:484:1: (lv_mergeRule_1_0= ruleMergeRule ) 
    1343                     { 
    1344                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:484:1: (lv_mergeRule_1_0= ruleMergeRule ) 
    1345                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:485:3: lv_mergeRule_1_0= ruleMergeRule 
    1346                     { 
    1347                       
    1348                                 newCompositeNode(grammarAccess.getMergeEntryAccess().getMergeRuleMergeRuleParserRuleCall_1_0());  
    1349                              
    1350                     pushFollow(FOLLOW_ruleMergeRule_in_ruleMergeEntry901); 
     1485                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:490:6: ( (lv_mergeRule_1_0= ruleMergeRule ) ) 
     1486                    { 
     1487                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:490:6: ( (lv_mergeRule_1_0= ruleMergeRule ) ) 
     1488                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:491:1: (lv_mergeRule_1_0= ruleMergeRule ) 
     1489                    { 
     1490                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:491:1: (lv_mergeRule_1_0= ruleMergeRule ) 
     1491                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:492:3: lv_mergeRule_1_0= ruleMergeRule 
     1492                    { 
     1493                    if ( state.backtracking==0 ) { 
     1494                        
     1495                                newCompositeNode(grammarAccess.getMergeEntryAccess().getMergeRuleMergeRuleParserRuleCall_1_0());  
     1496                             
     1497                    } 
     1498                    pushFollow(FOLLOW_ruleMergeRule_in_ruleMergeEntry914); 
    13511499                    lv_mergeRule_1_0=ruleMergeRule(); 
    13521500 
    13531501                    state._fsp--; 
    1354  
    1355  
    1356                                 if (current==null) { 
    1357                                     current = createModelElementForParent(grammarAccess.getMergeEntryRule()); 
    1358                                 } 
    1359                                         set( 
    1360                                                 current,  
    1361                                                 "mergeRule", 
    1362                                         lv_mergeRule_1_0,  
    1363                                         "MergeRule"); 
    1364                                 afterParserOrEnumRuleCall(); 
    1365                              
     1502                    if (state.failed) return current; 
     1503                    if ( state.backtracking==0 ) { 
     1504 
     1505                                if (current==null) { 
     1506                                    current = createModelElementForParent(grammarAccess.getMergeEntryRule()); 
     1507                                } 
     1508                                        set( 
     1509                                                current,  
     1510                                                "mergeRule", 
     1511                                        lv_mergeRule_1_0,  
     1512                                        "MergeRule"); 
     1513                                afterParserOrEnumRuleCall(); 
     1514                             
     1515                    } 
    13661516 
    13671517                    } 
     
    13791529            } 
    13801530 
    1381              leaveRule();  
     1531            if ( state.backtracking==0 ) { 
     1532               leaveRule();  
     1533            } 
    13821534        } 
    13831535          
     
    13871539            }  
    13881540        finally { 
     1541            if ( state.backtracking>0 ) { memoize(input, 10, ruleMergeEntry_StartIndex); } 
    13891542        } 
    13901543        return current; 
     
    13941547 
    13951548    // $ANTLR start "entryRuleSectionHeading" 
    1396     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:509:1: entryRuleSectionHeading returns [EObject current=null] : iv_ruleSectionHeading= ruleSectionHeading EOF ; 
     1549    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:516:1: entryRuleSectionHeading returns [EObject current=null] : iv_ruleSectionHeading= ruleSectionHeading EOF ; 
    13971550    public final EObject entryRuleSectionHeading() throws RecognitionException { 
    13981551        EObject current = null; 
    1399  
     1552        int entryRuleSectionHeading_StartIndex = input.index(); 
    14001553        EObject iv_ruleSectionHeading = null; 
    14011554 
    14021555 
    14031556        try { 
    1404             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:510:2: (iv_ruleSectionHeading= ruleSectionHeading EOF ) 
    1405             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:511:2: iv_ruleSectionHeading= ruleSectionHeading EOF 
    1406             { 
    1407              newCompositeNode(grammarAccess.getSectionHeadingRule());  
    1408             pushFollow(FOLLOW_ruleSectionHeading_in_entryRuleSectionHeading937); 
     1557            if ( state.backtracking>0 && alreadyParsedRule(input, 11) ) { return current; } 
     1558            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:517:2: (iv_ruleSectionHeading= ruleSectionHeading EOF ) 
     1559            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:518:2: iv_ruleSectionHeading= ruleSectionHeading EOF 
     1560            { 
     1561            if ( state.backtracking==0 ) { 
     1562               newCompositeNode(grammarAccess.getSectionHeadingRule());  
     1563            } 
     1564            pushFollow(FOLLOW_ruleSectionHeading_in_entryRuleSectionHeading950); 
    14091565            iv_ruleSectionHeading=ruleSectionHeading(); 
    14101566 
    14111567            state._fsp--; 
    1412  
    1413              current =iv_ruleSectionHeading;  
    1414             match(input,EOF,FOLLOW_EOF_in_entryRuleSectionHeading947);  
     1568            if (state.failed) return current; 
     1569            if ( state.backtracking==0 ) { 
     1570               current =iv_ruleSectionHeading;  
     1571            } 
     1572            match(input,EOF,FOLLOW_EOF_in_entryRuleSectionHeading960); if (state.failed) return current; 
    14151573 
    14161574            } 
     
    14231581            }  
    14241582        finally { 
     1583            if ( state.backtracking>0 ) { memoize(input, 11, entryRuleSectionHeading_StartIndex); } 
    14251584        } 
    14261585        return current; 
     
    14301589 
    14311590    // $ANTLR start "ruleSectionHeading" 
    1432     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:518:1: ruleSectionHeading returns [EObject current=null] : ( () ( (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) ) ) ; 
     1591    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:525:1: ruleSectionHeading returns [EObject current=null] : ( () ( (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) ) ) ; 
    14331592    public final EObject ruleSectionHeading() throws RecognitionException { 
    14341593        EObject current = null; 
    1435  
     1594        int ruleSectionHeading_StartIndex = input.index(); 
    14361595        Token lv_sectionHeader_1_0=null; 
    14371596 
     
    14391598             
    14401599        try { 
    1441             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:521:28: ( ( () ( (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) ) ) ) 
    1442             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:522:1: ( () ( (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) ) ) 
    1443             { 
    1444             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:522:1: ( () ( (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) ) ) 
    1445             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:522:2: () ( (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) ) 
    1446             { 
    1447             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:522:2: () 
    1448             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:523:5:  
    1449             { 
    1450  
    1451                     current = forceCreateModelElement( 
    1452                         grammarAccess.getSectionHeadingAccess().getSectionHeadingAction_0(), 
    1453                         current); 
    1454                  
    1455  
    1456             } 
    1457  
    1458             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:528:2: ( (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) ) 
    1459             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:529:1: (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) 
    1460             { 
    1461             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:529:1: (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) 
    1462             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:530:3: lv_sectionHeader_1_0= RULE_SECTIONHEADER 
    1463             { 
    1464             lv_sectionHeader_1_0=(Token)match(input,RULE_SECTIONHEADER,FOLLOW_RULE_SECTIONHEADER_in_ruleSectionHeading998);  
    1465  
    1466                                 newLeafNode(lv_sectionHeader_1_0, grammarAccess.getSectionHeadingAccess().getSectionHeaderSECTIONHEADERTerminalRuleCall_1_0());  
    1467                          
    1468  
    1469                         if (current==null) { 
    1470                             current = createModelElement(grammarAccess.getSectionHeadingRule()); 
    1471                         } 
    1472                                 setWithLastConsumed( 
    1473                                         current,  
    1474                                         "sectionHeader", 
    1475                                 lv_sectionHeader_1_0,  
    1476                                 "SECTIONHEADER"); 
    1477                      
    1478  
    1479             } 
    1480  
    1481  
    1482             } 
    1483  
    1484  
    1485             } 
    1486  
    1487  
    1488             } 
    1489  
    1490              leaveRule();  
     1600            if ( state.backtracking>0 && alreadyParsedRule(input, 12) ) { return current; } 
     1601            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:528:28: ( ( () ( (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) ) ) ) 
     1602            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:529:1: ( () ( (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) ) ) 
     1603            { 
     1604            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:529:1: ( () ( (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) ) ) 
     1605            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:529:2: () ( (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) ) 
     1606            { 
     1607            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:529:2: () 
     1608            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:530:2:  
     1609            { 
     1610            if ( state.backtracking==0 ) { 
     1611                
     1612                  /* */  
     1613                 
     1614            } 
     1615            if ( state.backtracking==0 ) { 
     1616 
     1617                      current = forceCreateModelElement( 
     1618                          grammarAccess.getSectionHeadingAccess().getSectionHeadingAction_0(), 
     1619                          current); 
     1620                   
     1621            } 
     1622 
     1623            } 
     1624 
     1625            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:538:2: ( (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) ) 
     1626            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:539:1: (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) 
     1627            { 
     1628            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:539:1: (lv_sectionHeader_1_0= RULE_SECTIONHEADER ) 
     1629            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:540:3: lv_sectionHeader_1_0= RULE_SECTIONHEADER 
     1630            { 
     1631            lv_sectionHeader_1_0=(Token)match(input,RULE_SECTIONHEADER,FOLLOW_RULE_SECTIONHEADER_in_ruleSectionHeading1014); if (state.failed) return current; 
     1632            if ( state.backtracking==0 ) { 
     1633 
     1634                                newLeafNode(lv_sectionHeader_1_0, grammarAccess.getSectionHeadingAccess().getSectionHeaderSECTIONHEADERTerminalRuleCall_1_0());  
     1635                         
     1636            } 
     1637            if ( state.backtracking==0 ) { 
     1638 
     1639                        if (current==null) { 
     1640                            current = createModelElement(grammarAccess.getSectionHeadingRule()); 
     1641                        } 
     1642                                setWithLastConsumed( 
     1643                                        current,  
     1644                                        "sectionHeader", 
     1645                                lv_sectionHeader_1_0,  
     1646                                "SECTIONHEADER"); 
     1647                     
     1648            } 
     1649 
     1650            } 
     1651 
     1652 
     1653            } 
     1654 
     1655 
     1656            } 
     1657 
     1658 
     1659            } 
     1660 
     1661            if ( state.backtracking==0 ) { 
     1662               leaveRule();  
     1663            } 
    14911664        } 
    14921665          
     
    14961669            }  
    14971670        finally { 
     1671            if ( state.backtracking>0 ) { memoize(input, 12, ruleSectionHeading_StartIndex); } 
    14981672        } 
    14991673        return current; 
     
    15031677 
    15041678    // $ANTLR start "entryRuleImport" 
    1505     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:554:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ; 
     1679    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:564:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ; 
    15061680    public final EObject entryRuleImport() throws RecognitionException { 
    15071681        EObject current = null; 
    1508  
     1682        int entryRuleImport_StartIndex = input.index(); 
    15091683        EObject iv_ruleImport = null; 
    15101684 
    15111685 
    15121686        try { 
    1513             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:555:2: (iv_ruleImport= ruleImport EOF ) 
    1514             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:556:2: iv_ruleImport= ruleImport EOF 
    1515             { 
    1516              newCompositeNode(grammarAccess.getImportRule());  
    1517             pushFollow(FOLLOW_ruleImport_in_entryRuleImport1039); 
     1687            if ( state.backtracking>0 && alreadyParsedRule(input, 13) ) { return current; } 
     1688            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:565:2: (iv_ruleImport= ruleImport EOF ) 
     1689            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:566:2: iv_ruleImport= ruleImport EOF 
     1690            { 
     1691            if ( state.backtracking==0 ) { 
     1692               newCompositeNode(grammarAccess.getImportRule());  
     1693            } 
     1694            pushFollow(FOLLOW_ruleImport_in_entryRuleImport1055); 
    15181695            iv_ruleImport=ruleImport(); 
    15191696 
    15201697            state._fsp--; 
    1521  
    1522              current =iv_ruleImport;  
    1523             match(input,EOF,FOLLOW_EOF_in_entryRuleImport1049);  
     1698            if (state.failed) return current; 
     1699            if ( state.backtracking==0 ) { 
     1700               current =iv_ruleImport;  
     1701            } 
     1702            match(input,EOF,FOLLOW_EOF_in_entryRuleImport1065); if (state.failed) return current; 
    15241703 
    15251704            } 
     
    15321711            }  
    15331712        finally { 
     1713            if ( state.backtracking>0 ) { memoize(input, 13, entryRuleImport_StartIndex); } 
    15341714        } 
    15351715        return current; 
     
    15391719 
    15401720    // $ANTLR start "ruleImport" 
    1541     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:563:1: ruleImport returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) (otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) )? (otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) )? otherlv_8= ';' ) ; 
     1721    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:573:1: ruleImport returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) (otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) )? (otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) )? otherlv_8= ';' ) ; 
    15421722    public final EObject ruleImport() throws RecognitionException { 
    15431723        EObject current = null; 
    1544  
     1724        int ruleImport_StartIndex = input.index(); 
    15451725        Token otherlv_0=null; 
    15461726        Token lv_importURI_1_0=null; 
     
    15561736             
    15571737        try { 
    1558             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:566:28: ( (otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) (otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) )? (otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) )? otherlv_8= ';' ) ) 
    1559             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:567:1: (otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) (otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) )? (otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) )? otherlv_8= ';' ) 
    1560             { 
    1561             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:567:1: (otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) (otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) )? (otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) )? otherlv_8= ';' ) 
    1562             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:567:3: otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) (otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) )? (otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) )? otherlv_8= ';' 
    1563             { 
    1564             otherlv_0=(Token)match(input,18,FOLLOW_18_in_ruleImport1086);  
    1565  
    1566                         newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0()); 
    1567                  
    1568             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:571:1: ( (lv_importURI_1_0= RULE_STRING ) ) 
    1569             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:572:1: (lv_importURI_1_0= RULE_STRING ) 
    1570             { 
    1571             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:572:1: (lv_importURI_1_0= RULE_STRING ) 
    1572             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:573:3: lv_importURI_1_0= RULE_STRING 
    1573             { 
    1574             lv_importURI_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleImport1103);  
    1575  
    1576                                 newLeafNode(lv_importURI_1_0, grammarAccess.getImportAccess().getImportURISTRINGTerminalRuleCall_1_0());  
    1577                          
    1578  
    1579                         if (current==null) { 
    1580                             current = createModelElement(grammarAccess.getImportRule()); 
    1581                         } 
    1582                                 setWithLastConsumed( 
    1583                                         current,  
    1584                                         "importURI", 
    1585                                 lv_importURI_1_0,  
    1586                                 "STRING"); 
    1587                      
    1588  
    1589             } 
    1590  
    1591  
    1592             } 
    1593  
    1594             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:589:2: (otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) )? 
     1738            if ( state.backtracking>0 && alreadyParsedRule(input, 14) ) { return current; } 
     1739            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:576:28: ( (otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) (otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) )? (otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) )? otherlv_8= ';' ) ) 
     1740            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:577:1: (otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) (otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) )? (otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) )? otherlv_8= ';' ) 
     1741            { 
     1742            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:577:1: (otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) (otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) )? (otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) )? otherlv_8= ';' ) 
     1743            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:577:3: otherlv_0= 'import' ( (lv_importURI_1_0= RULE_STRING ) ) (otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) )? (otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) )? otherlv_8= ';' 
     1744            { 
     1745            otherlv_0=(Token)match(input,18,FOLLOW_18_in_ruleImport1102); if (state.failed) return current; 
     1746            if ( state.backtracking==0 ) { 
     1747 
     1748                        newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0()); 
     1749                   
     1750            } 
     1751            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:581:1: ( (lv_importURI_1_0= RULE_STRING ) ) 
     1752            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:582:1: (lv_importURI_1_0= RULE_STRING ) 
     1753            { 
     1754            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:582:1: (lv_importURI_1_0= RULE_STRING ) 
     1755            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:583:3: lv_importURI_1_0= RULE_STRING 
     1756            { 
     1757            lv_importURI_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleImport1119); if (state.failed) return current; 
     1758            if ( state.backtracking==0 ) { 
     1759 
     1760                                newLeafNode(lv_importURI_1_0, grammarAccess.getImportAccess().getImportURISTRINGTerminalRuleCall_1_0());  
     1761                         
     1762            } 
     1763            if ( state.backtracking==0 ) { 
     1764 
     1765                        if (current==null) { 
     1766                            current = createModelElement(grammarAccess.getImportRule()); 
     1767                        } 
     1768                                setWithLastConsumed( 
     1769                                        current,  
     1770                                        "importURI", 
     1771                                lv_importURI_1_0,  
     1772                                "STRING"); 
     1773                     
     1774            } 
     1775 
     1776            } 
     1777 
     1778 
     1779            } 
     1780 
     1781            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:599:2: (otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) )? 
    15951782            int alt14=2; 
    15961783            int LA14_0 = input.LA(1); 
     
    16011788            switch (alt14) { 
    16021789                case 1 : 
    1603                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:589:4: otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) 
    1604                     { 
    1605                     otherlv_2=(Token)match(input,19,FOLLOW_19_in_ruleImport1121);  
    1606  
    1607                                 newLeafNode(otherlv_2, grammarAccess.getImportAccess().getSolidusKeyword_2_0()); 
    1608                          
    1609                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:593:1: ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) 
     1790                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:599:4: otherlv_2= '/' ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) 
     1791                    { 
     1792                    otherlv_2=(Token)match(input,19,FOLLOW_19_in_ruleImport1137); if (state.failed) return current; 
     1793                    if ( state.backtracking==0 ) { 
     1794 
     1795                                newLeafNode(otherlv_2, grammarAccess.getImportAccess().getSolidusKeyword_2_0()); 
     1796                           
     1797                    } 
     1798                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:603:1: ( ( (lv_grammarType_3_0= 'core' ) ) | ( (lv_grammarType_4_0= 'package' ) ) | ( (lv_grammarType_5_0= 'update' ) ) ) 
    16101799                    int alt13=3; 
    16111800                    switch ( input.LA(1) ) { 
     
    16261815                        break; 
    16271816                    default: 
     1817                        if (state.backtracking>0) {state.failed=true; return current;} 
    16281818                        NoViableAltException nvae = 
    16291819                            new NoViableAltException("", 13, 0, input); 
     
    16341824                    switch (alt13) { 
    16351825                        case 1 : 
    1636                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:593:2: ( (lv_grammarType_3_0= 'core' ) ) 
     1826                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:603:2: ( (lv_grammarType_3_0= 'core' ) ) 
    16371827                            { 
    1638                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:593:2: ( (lv_grammarType_3_0= 'core' ) ) 
    1639                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:594:1: (lv_grammarType_3_0= 'core' ) 
     1828                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:603:2: ( (lv_grammarType_3_0= 'core' ) ) 
     1829                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:604:1: (lv_grammarType_3_0= 'core' ) 
    16401830                            { 
    1641                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:594:1: (lv_grammarType_3_0= 'core' ) 
    1642                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:595:3: lv_grammarType_3_0= 'core' 
     1831                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:604:1: (lv_grammarType_3_0= 'core' ) 
     1832                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:605:3: lv_grammarType_3_0= 'core' 
    16431833                            { 
    1644                             lv_grammarType_3_0=(Token)match(input,20,FOLLOW_20_in_ruleImport1140);  
    1645  
    1646                                     newLeafNode(lv_grammarType_3_0, grammarAccess.getImportAccess().getGrammarTypeCoreKeyword_2_1_0_0()); 
    1647                                  
    1648  
    1649                                         if (current==null) { 
    1650                                             current = createModelElement(grammarAccess.getImportRule()); 
    1651                                         } 
    1652                                                 setWithLastConsumed(current, "grammarType", lv_grammarType_3_0, "core"); 
    1653                                      
     1834                            lv_grammarType_3_0=(Token)match(input,20,FOLLOW_20_in_ruleImport1156); if (state.failed) return current; 
     1835                            if ( state.backtracking==0 ) { 
     1836 
     1837                                      newLeafNode(lv_grammarType_3_0, grammarAccess.getImportAccess().getGrammarTypeCoreKeyword_2_1_0_0()); 
     1838                                   
     1839                            } 
     1840                            if ( state.backtracking==0 ) { 
     1841 
     1842                                        if (current==null) { 
     1843                                            current = createModelElement(grammarAccess.getImportRule()); 
     1844                                        } 
     1845                                                setWithLastConsumed(current, "grammarType", lv_grammarType_3_0, "core"); 
     1846                                     
     1847                            } 
    16541848 
    16551849                            } 
     
    16621856                            break; 
    16631857                        case 2 : 
    1664                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:609:6: ( (lv_grammarType_4_0= 'package' ) ) 
     1858                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:619:6: ( (lv_grammarType_4_0= 'package' ) ) 
    16651859                            { 
    1666                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:609:6: ( (lv_grammarType_4_0= 'package' ) ) 
    1667                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:610:1: (lv_grammarType_4_0= 'package' ) 
     1860                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:619:6: ( (lv_grammarType_4_0= 'package' ) ) 
     1861                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:620:1: (lv_grammarType_4_0= 'package' ) 
    16681862                            { 
    1669                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:610:1: (lv_grammarType_4_0= 'package' ) 
    1670                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:611:3: lv_grammarType_4_0= 'package' 
     1863                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:620:1: (lv_grammarType_4_0= 'package' ) 
     1864                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:621:3: lv_grammarType_4_0= 'package' 
    16711865                            { 
    1672                             lv_grammarType_4_0=(Token)match(input,21,FOLLOW_21_in_ruleImport1177);  
    1673  
    1674                                     newLeafNode(lv_grammarType_4_0, grammarAccess.getImportAccess().getGrammarTypePackageKeyword_2_1_1_0()); 
    1675                                  
    1676  
    1677                                         if (current==null) { 
    1678                                             current = createModelElement(grammarAccess.getImportRule()); 
    1679                                         } 
    1680                                                 setWithLastConsumed(current, "grammarType", lv_grammarType_4_0, "package"); 
    1681                                      
     1866                            lv_grammarType_4_0=(Token)match(input,21,FOLLOW_21_in_ruleImport1193); if (state.failed) return current; 
     1867                            if ( state.backtracking==0 ) { 
     1868 
     1869                                      newLeafNode(lv_grammarType_4_0, grammarAccess.getImportAccess().getGrammarTypePackageKeyword_2_1_1_0()); 
     1870                                   
     1871                            } 
     1872                            if ( state.backtracking==0 ) { 
     1873 
     1874                                        if (current==null) { 
     1875                                            current = createModelElement(grammarAccess.getImportRule()); 
     1876                                        } 
     1877                                                setWithLastConsumed(current, "grammarType", lv_grammarType_4_0, "package"); 
     1878                                     
     1879                            } 
    16821880 
    16831881                            } 
     
    16901888                            break; 
    16911889                        case 3 : 
    1692                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:625:6: ( (lv_grammarType_5_0= 'update' ) ) 
     1890                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:635:6: ( (lv_grammarType_5_0= 'update' ) ) 
    16931891                            { 
    1694                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:625:6: ( (lv_grammarType_5_0= 'update' ) ) 
    1695                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:626:1: (lv_grammarType_5_0= 'update' ) 
     1892                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:635:6: ( (lv_grammarType_5_0= 'update' ) ) 
     1893                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:636:1: (lv_grammarType_5_0= 'update' ) 
    16961894                            { 
    1697                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:626:1: (lv_grammarType_5_0= 'update' ) 
    1698                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:627:3: lv_grammarType_5_0= 'update' 
     1895                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:636:1: (lv_grammarType_5_0= 'update' ) 
     1896                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:637:3: lv_grammarType_5_0= 'update' 
    16991897                            { 
    1700                             lv_grammarType_5_0=(Token)match(input,22,FOLLOW_22_in_ruleImport1214);  
    1701  
    1702                                     newLeafNode(lv_grammarType_5_0, grammarAccess.getImportAccess().getGrammarTypeUpdateKeyword_2_1_2_0()); 
    1703                                  
    1704  
    1705                                         if (current==null) { 
    1706                                             current = createModelElement(grammarAccess.getImportRule()); 
    1707                                         } 
    1708                                                 setWithLastConsumed(current, "grammarType", lv_grammarType_5_0, "update"); 
    1709                                      
     1898                            lv_grammarType_5_0=(Token)match(input,22,FOLLOW_22_in_ruleImport1230); if (state.failed) return current; 
     1899                            if ( state.backtracking==0 ) { 
     1900 
     1901                                      newLeafNode(lv_grammarType_5_0, grammarAccess.getImportAccess().getGrammarTypeUpdateKeyword_2_1_2_0()); 
     1902                                   
     1903                            } 
     1904                            if ( state.backtracking==0 ) { 
     1905 
     1906                                        if (current==null) { 
     1907                                            current = createModelElement(grammarAccess.getImportRule()); 
     1908                                        } 
     1909                                                setWithLastConsumed(current, "grammarType", lv_grammarType_5_0, "update"); 
     1910                                     
     1911                            } 
    17101912 
    17111913                            } 
     
    17261928            } 
    17271929 
    1728             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:640:5: (otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) )? 
     1930            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:650:5: (otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) )? 
    17291931            int alt15=2; 
    17301932            int LA15_0 = input.LA(1); 
     
    17351937            switch (alt15) { 
    17361938                case 1 : 
    1737                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:640:7: otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) 
    1738                     { 
    1739                     otherlv_6=(Token)match(input,23,FOLLOW_23_in_ruleImport1243);  
    1740  
    1741                                 newLeafNode(otherlv_6, grammarAccess.getImportAccess().getLabelKeyword_3_0()); 
    1742                          
    1743                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:644:1: ( (lv_label_7_0= RULE_ID ) ) 
    1744                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:645:1: (lv_label_7_0= RULE_ID ) 
    1745                     { 
    1746                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:645:1: (lv_label_7_0= RULE_ID ) 
    1747                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:646:3: lv_label_7_0= RULE_ID 
    1748                     { 
    1749                     lv_label_7_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleImport1260);  
    1750  
    1751                                         newLeafNode(lv_label_7_0, grammarAccess.getImportAccess().getLabelIDTerminalRuleCall_3_1_0());  
    1752                                  
    1753  
    1754                                 if (current==null) { 
    1755                                     current = createModelElement(grammarAccess.getImportRule()); 
    1756                                 } 
    1757                                         setWithLastConsumed( 
    1758                                                 current,  
    1759                                                 "label", 
    1760                                         lv_label_7_0,  
    1761                                         "ID"); 
    1762                              
     1939                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:650:7: otherlv_6= 'label:' ( (lv_label_7_0= RULE_ID ) ) 
     1940                    { 
     1941                    otherlv_6=(Token)match(input,23,FOLLOW_23_in_ruleImport1259); if (state.failed) return current; 
     1942                    if ( state.backtracking==0 ) { 
     1943 
     1944                                newLeafNode(otherlv_6, grammarAccess.getImportAccess().getLabelKeyword_3_0()); 
     1945                           
     1946                    } 
     1947                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:654:1: ( (lv_label_7_0= RULE_ID ) ) 
     1948                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:655:1: (lv_label_7_0= RULE_ID ) 
     1949                    { 
     1950                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:655:1: (lv_label_7_0= RULE_ID ) 
     1951                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:656:3: lv_label_7_0= RULE_ID 
     1952                    { 
     1953                    lv_label_7_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleImport1276); if (state.failed) return current; 
     1954                    if ( state.backtracking==0 ) { 
     1955 
     1956                                        newLeafNode(lv_label_7_0, grammarAccess.getImportAccess().getLabelIDTerminalRuleCall_3_1_0());  
     1957                                 
     1958                    } 
     1959                    if ( state.backtracking==0 ) { 
     1960 
     1961                                if (current==null) { 
     1962                                    current = createModelElement(grammarAccess.getImportRule()); 
     1963                                } 
     1964                                        setWithLastConsumed( 
     1965                                                current,  
     1966                                                "label", 
     1967                                        lv_label_7_0,  
     1968                                        "ID"); 
     1969                             
     1970                    } 
    17631971 
    17641972                    } 
     
    17731981            } 
    17741982 
    1775             otherlv_8=(Token)match(input,15,FOLLOW_15_in_ruleImport1279);  
    1776  
    1777                         newLeafNode(otherlv_8, grammarAccess.getImportAccess().getSemicolonKeyword_4()); 
    1778                  
    1779  
    1780             } 
    1781  
    1782  
    1783             } 
    1784  
    1785              leaveRule();  
     1983            otherlv_8=(Token)match(input,15,FOLLOW_15_in_ruleImport1295); if (state.failed) return current; 
     1984            if ( state.backtracking==0 ) { 
     1985 
     1986                        newLeafNode(otherlv_8, grammarAccess.getImportAccess().getSemicolonKeyword_4()); 
     1987                   
     1988            } 
     1989 
     1990            } 
     1991 
     1992 
     1993            } 
     1994 
     1995            if ( state.backtracking==0 ) { 
     1996               leaveRule();  
     1997            } 
    17861998        } 
    17871999          
     
    17912003            }  
    17922004        finally { 
     2005            if ( state.backtracking>0 ) { memoize(input, 14, ruleImport_StartIndex); } 
    17932006        } 
    17942007        return current; 
     
    17982011 
    17992012    // $ANTLR start "entryRuleRule" 
    1800     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:674:1: entryRuleRule returns [EObject current=null] : iv_ruleRule= ruleRule EOF ; 
     2013    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:684:1: entryRuleRule returns [EObject current=null] : iv_ruleRule= ruleRule EOF ; 
    18012014    public final EObject entryRuleRule() throws RecognitionException { 
    18022015        EObject current = null; 
    1803  
     2016        int entryRuleRule_StartIndex = input.index(); 
    18042017        EObject iv_ruleRule = null; 
    18052018 
    18062019 
    18072020        try { 
    1808             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:675:2: (iv_ruleRule= ruleRule EOF ) 
    1809             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:676:2: iv_ruleRule= ruleRule EOF 
    1810             { 
    1811              newCompositeNode(grammarAccess.getRuleRule());  
    1812             pushFollow(FOLLOW_ruleRule_in_entryRuleRule1315); 
     2021            if ( state.backtracking>0 && alreadyParsedRule(input, 15) ) { return current; } 
     2022            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:685:2: (iv_ruleRule= ruleRule EOF ) 
     2023            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:686:2: iv_ruleRule= ruleRule EOF 
     2024            { 
     2025            if ( state.backtracking==0 ) { 
     2026               newCompositeNode(grammarAccess.getRuleRule());  
     2027            } 
     2028            pushFollow(FOLLOW_ruleRule_in_entryRuleRule1331); 
    18132029            iv_ruleRule=ruleRule(); 
    18142030 
    18152031            state._fsp--; 
    1816  
    1817              current =iv_ruleRule;  
    1818             match(input,EOF,FOLLOW_EOF_in_entryRuleRule1325);  
     2032            if (state.failed) return current; 
     2033            if ( state.backtracking==0 ) { 
     2034               current =iv_ruleRule;  
     2035            } 
     2036            match(input,EOF,FOLLOW_EOF_in_entryRuleRule1341); if (state.failed) return current; 
    18192037 
    18202038            } 
     
    18272045            }  
    18282046        finally { 
     2047            if ( state.backtracking>0 ) { memoize(input, 15, entryRuleRule_StartIndex); } 
    18292048        } 
    18302049        return current; 
     
    18342053 
    18352054    // $ANTLR start "ruleRule" 
    1836     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:683:1: ruleRule returns [EObject current=null] : ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '::=' ( (lv_definitionList_5_0= ruleDefinitionList ) )? (otherlv_6= ';' )? ) ; 
     2055    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:693:1: ruleRule returns [EObject current=null] : ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '::=' ( (lv_definitionList_5_0= ruleDefinitionList ) )? (otherlv_6= ';' )? ) ; 
    18372056    public final EObject ruleRule() throws RecognitionException { 
    18382057        EObject current = null; 
    1839  
     2058        int ruleRule_StartIndex = input.index(); 
    18402059        Token lv_rulenumber_0_0=null; 
    18412060        Token lv_rulevariant_1_0=null; 
     
    18502069             
    18512070        try { 
    1852             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:686:28: ( ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '::=' ( (lv_definitionList_5_0= ruleDefinitionList ) )? (otherlv_6= ';' )? ) ) 
    1853             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:687:1: ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '::=' ( (lv_definitionList_5_0= ruleDefinitionList ) )? (otherlv_6= ';' )? ) 
    1854             { 
    1855             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:687:1: ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '::=' ( (lv_definitionList_5_0= ruleDefinitionList ) )? (otherlv_6= ';' )? ) 
    1856             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:687:2: ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '::=' ( (lv_definitionList_5_0= ruleDefinitionList ) )? (otherlv_6= ';' )? 
    1857             { 
    1858             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:687:2: ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? 
     2071            if ( state.backtracking>0 && alreadyParsedRule(input, 16) ) { return current; } 
     2072            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:696:28: ( ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '::=' ( (lv_definitionList_5_0= ruleDefinitionList ) )? (otherlv_6= ';' )? ) ) 
     2073            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:697:1: ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '::=' ( (lv_definitionList_5_0= ruleDefinitionList ) )? (otherlv_6= ';' )? ) 
     2074            { 
     2075            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:697:1: ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '::=' ( (lv_definitionList_5_0= ruleDefinitionList ) )? (otherlv_6= ';' )? ) 
     2076            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:697:2: ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) otherlv_4= '::=' ( (lv_definitionList_5_0= ruleDefinitionList ) )? (otherlv_6= ';' )? 
     2077            { 
     2078            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:697:2: ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? 
    18592079            int alt17=2; 
    18602080            int LA17_0 = input.LA(1); 
     
    18652085            switch (alt17) { 
    18662086                case 1 : 
    1867                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:687:3: ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' 
    1868                     { 
    1869                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:687:3: ( (lv_rulenumber_0_0= RULE_INT ) ) 
    1870                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:688:1: (lv_rulenumber_0_0= RULE_INT ) 
    1871                     { 
    1872                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:688:1: (lv_rulenumber_0_0= RULE_INT ) 
    1873                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:689:3: lv_rulenumber_0_0= RULE_INT 
    1874                     { 
    1875                     lv_rulenumber_0_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleRule1368);  
    1876  
    1877                                         newLeafNode(lv_rulenumber_0_0, grammarAccess.getRuleAccess().getRulenumberINTTerminalRuleCall_0_0_0());  
    1878                                  
    1879  
    1880                                 if (current==null) { 
    1881                                     current = createModelElement(grammarAccess.getRuleRule()); 
    1882                                 } 
    1883                                         setWithLastConsumed( 
    1884                                                 current,  
    1885                                                 "rulenumber", 
    1886                                         lv_rulenumber_0_0,  
    1887                                         "INT"); 
    1888                              
    1889  
    1890                     } 
    1891  
    1892  
    1893                     } 
    1894  
    1895                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:705:2: ( (lv_rulevariant_1_0= RULE_ID ) )? 
     2087                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:697:3: ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' 
     2088                    { 
     2089                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:697:3: ( (lv_rulenumber_0_0= RULE_INT ) ) 
     2090                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:698:1: (lv_rulenumber_0_0= RULE_INT ) 
     2091                    { 
     2092                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:698:1: (lv_rulenumber_0_0= RULE_INT ) 
     2093                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:699:3: lv_rulenumber_0_0= RULE_INT 
     2094                    { 
     2095                    lv_rulenumber_0_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleRule1384); if (state.failed) return current; 
     2096                    if ( state.backtracking==0 ) { 
     2097 
     2098                                        newLeafNode(lv_rulenumber_0_0, grammarAccess.getRuleAccess().getRulenumberINTTerminalRuleCall_0_0_0());  
     2099                                 
     2100                    } 
     2101                    if ( state.backtracking==0 ) { 
     2102 
     2103                                if (current==null) { 
     2104                                    current = createModelElement(grammarAccess.getRuleRule()); 
     2105                                } 
     2106                                        setWithLastConsumed( 
     2107                                                current,  
     2108                                                "rulenumber", 
     2109                                        lv_rulenumber_0_0,  
     2110                                        "INT"); 
     2111                             
     2112                    } 
     2113 
     2114                    } 
     2115 
     2116 
     2117                    } 
     2118 
     2119                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:715:2: ( (lv_rulevariant_1_0= RULE_ID ) )? 
    18962120                    int alt16=2; 
    18972121                    int LA16_0 = input.LA(1); 
     
    19022126                    switch (alt16) { 
    19032127                        case 1 : 
    1904                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:706:1: (lv_rulevariant_1_0= RULE_ID ) 
     2128                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:716:1: (lv_rulevariant_1_0= RULE_ID ) 
    19052129                            { 
    1906                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:706:1: (lv_rulevariant_1_0= RULE_ID ) 
    1907                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:707:3: lv_rulevariant_1_0= RULE_ID 
     2130                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:716:1: (lv_rulevariant_1_0= RULE_ID ) 
     2131                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:717:3: lv_rulevariant_1_0= RULE_ID 
    19082132                            { 
    1909                             lv_rulevariant_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRule1390);  
    1910  
    1911                                                 newLeafNode(lv_rulevariant_1_0, grammarAccess.getRuleAccess().getRulevariantIDTerminalRuleCall_0_1_0());  
    1912                                          
    1913  
    1914                                         if (current==null) { 
    1915                                             current = createModelElement(grammarAccess.getRuleRule()); 
    1916                                         } 
    1917                                                 setWithLastConsumed( 
    1918                                                         current,  
    1919                                                         "rulevariant", 
    1920                                                 lv_rulevariant_1_0,  
    1921                                                 "ID"); 
    1922                                      
     2133                            lv_rulevariant_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRule1406); if (state.failed) return current; 
     2134                            if ( state.backtracking==0 ) { 
     2135 
     2136                                                newLeafNode(lv_rulevariant_1_0, grammarAccess.getRuleAccess().getRulevariantIDTerminalRuleCall_0_1_0());  
     2137                                         
     2138                            } 
     2139                            if ( state.backtracking==0 ) { 
     2140 
     2141                                        if (current==null) { 
     2142                                            current = createModelElement(grammarAccess.getRuleRule()); 
     2143                                        } 
     2144                                                setWithLastConsumed( 
     2145                                                        current,  
     2146                                                        "rulevariant", 
     2147                                                lv_rulevariant_1_0,  
     2148                                                "ID"); 
     2149                                     
     2150                            } 
    19232151 
    19242152                            } 
     
    19302158                    } 
    19312159 
    1932                     otherlv_2=(Token)match(input,24,FOLLOW_24_in_ruleRule1408);  
    1933  
    1934                                 newLeafNode(otherlv_2, grammarAccess.getRuleAccess().getFullStopKeyword_0_2()); 
    1935                          
     2160                    otherlv_2=(Token)match(input,24,FOLLOW_24_in_ruleRule1424); if (state.failed) return current; 
     2161                    if ( state.backtracking==0 ) { 
     2162 
     2163                                newLeafNode(otherlv_2, grammarAccess.getRuleAccess().getFullStopKeyword_0_2()); 
     2164                           
     2165                    } 
    19362166 
    19372167                    } 
     
    19402170            } 
    19412171 
    1942             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:727:3: ( (lv_name_3_0= RULE_ID ) ) 
    1943             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:728:1: (lv_name_3_0= RULE_ID ) 
    1944             { 
    1945             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:728:1: (lv_name_3_0= RULE_ID ) 
    1946             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:729:3: lv_name_3_0= RULE_ID 
    1947             { 
    1948             lv_name_3_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRule1427);  
    1949  
    1950                                 newLeafNode(lv_name_3_0, grammarAccess.getRuleAccess().getNameIDTerminalRuleCall_1_0());  
    1951                          
    1952  
    1953                         if (current==null) { 
    1954                             current = createModelElement(grammarAccess.getRuleRule()); 
    1955                         } 
    1956                                 setWithLastConsumed( 
    1957                                         current,  
    1958                                         "name", 
    1959                                 lv_name_3_0,  
    1960                                 "ID"); 
    1961                      
    1962  
    1963             } 
    1964  
    1965  
    1966             } 
    1967  
    1968             otherlv_4=(Token)match(input,25,FOLLOW_25_in_ruleRule1444);  
    1969  
    1970                         newLeafNode(otherlv_4, grammarAccess.getRuleAccess().getColonColonEqualsSignKeyword_2()); 
    1971                  
    1972             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:749:1: ( (lv_definitionList_5_0= ruleDefinitionList ) )? 
     2172            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:737:3: ( (lv_name_3_0= RULE_ID ) ) 
     2173            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:738:1: (lv_name_3_0= RULE_ID ) 
     2174            { 
     2175            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:738:1: (lv_name_3_0= RULE_ID ) 
     2176            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:739:3: lv_name_3_0= RULE_ID 
     2177            { 
     2178            lv_name_3_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRule1443); if (state.failed) return current; 
     2179            if ( state.backtracking==0 ) { 
     2180 
     2181                                newLeafNode(lv_name_3_0, grammarAccess.getRuleAccess().getNameIDTerminalRuleCall_1_0());  
     2182                         
     2183            } 
     2184            if ( state.backtracking==0 ) { 
     2185 
     2186                        if (current==null) { 
     2187                            current = createModelElement(grammarAccess.getRuleRule()); 
     2188                        } 
     2189                                setWithLastConsumed( 
     2190                                        current,  
     2191                                        "name", 
     2192                                lv_name_3_0,  
     2193                                "ID"); 
     2194                     
     2195            } 
     2196 
     2197            } 
     2198 
     2199 
     2200            } 
     2201 
     2202            otherlv_4=(Token)match(input,25,FOLLOW_25_in_ruleRule1460); if (state.failed) return current; 
     2203            if ( state.backtracking==0 ) { 
     2204 
     2205                        newLeafNode(otherlv_4, grammarAccess.getRuleAccess().getColonColonEqualsSignKeyword_2()); 
     2206                   
     2207            } 
     2208            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:759:1: ( (lv_definitionList_5_0= ruleDefinitionList ) )? 
    19732209            int alt18=2; 
    19742210            int LA18_0 = input.LA(1); 
     
    19932229            switch (alt18) { 
    19942230                case 1 : 
    1995                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:750:1: (lv_definitionList_5_0= ruleDefinitionList ) 
    1996                     { 
    1997                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:750:1: (lv_definitionList_5_0= ruleDefinitionList ) 
    1998                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:751:3: lv_definitionList_5_0= ruleDefinitionList 
    1999                     { 
    2000                       
    2001                                 newCompositeNode(grammarAccess.getRuleAccess().getDefinitionListDefinitionListParserRuleCall_3_0());  
    2002                              
    2003                     pushFollow(FOLLOW_ruleDefinitionList_in_ruleRule1465); 
     2231                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:760:1: (lv_definitionList_5_0= ruleDefinitionList ) 
     2232                    { 
     2233                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:760:1: (lv_definitionList_5_0= ruleDefinitionList ) 
     2234                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:761:3: lv_definitionList_5_0= ruleDefinitionList 
     2235                    { 
     2236                    if ( state.backtracking==0 ) { 
     2237                        
     2238                                newCompositeNode(grammarAccess.getRuleAccess().getDefinitionListDefinitionListParserRuleCall_3_0());  
     2239                             
     2240                    } 
     2241                    pushFollow(FOLLOW_ruleDefinitionList_in_ruleRule1481); 
    20042242                    lv_definitionList_5_0=ruleDefinitionList(); 
    20052243 
    20062244                    state._fsp--; 
    2007  
    2008  
    2009                                 if (current==null) { 
    2010                                     current = createModelElementForParent(grammarAccess.getRuleRule()); 
    2011                                 } 
    2012                                         set( 
    2013                                                 current,  
    2014                                                 "definitionList", 
    2015                                         lv_definitionList_5_0,  
    2016                                         "DefinitionList"); 
    2017                                 afterParserOrEnumRuleCall(); 
    2018                              
     2245                    if (state.failed) return current; 
     2246                    if ( state.backtracking==0 ) { 
     2247 
     2248                                if (current==null) { 
     2249                                    current = createModelElementForParent(grammarAccess.getRuleRule()); 
     2250                                } 
     2251                                        set( 
     2252                                                current,  
     2253                                                "definitionList", 
     2254                                        lv_definitionList_5_0,  
     2255                                        "DefinitionList"); 
     2256                                afterParserOrEnumRuleCall(); 
     2257                             
     2258                    } 
    20192259 
    20202260                    } 
     
    20262266            } 
    20272267 
    2028             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:767:3: (otherlv_6= ';' )? 
     2268            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:777:3: (otherlv_6= ';' )? 
    20292269            int alt19=2; 
    20302270            int LA19_0 = input.LA(1); 
     
    20352275            switch (alt19) { 
    20362276                case 1 : 
    2037                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:767:5: otherlv_6= ';' 
    2038                     { 
    2039                     otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleRule1479);  
    2040  
    2041                                 newLeafNode(otherlv_6, grammarAccess.getRuleAccess().getSemicolonKeyword_4()); 
    2042                          
     2277                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:777:5: otherlv_6= ';' 
     2278                    { 
     2279                    otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleRule1495); if (state.failed) return current; 
     2280                    if ( state.backtracking==0 ) { 
     2281 
     2282                                newLeafNode(otherlv_6, grammarAccess.getRuleAccess().getSemicolonKeyword_4()); 
     2283                           
     2284                    } 
    20432285 
    20442286                    } 
     
    20532295            } 
    20542296 
    2055              leaveRule();  
     2297            if ( state.backtracking==0 ) { 
     2298               leaveRule();  
     2299            } 
    20562300        } 
    20572301          
     
    20612305            }  
    20622306        finally { 
     2307            if ( state.backtracking>0 ) { memoize(input, 16, ruleRule_StartIndex); } 
    20632308        } 
    20642309        return current; 
     
    20682313 
    20692314    // $ANTLR start "entryRuleExtRule" 
    2070     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:779:1: entryRuleExtRule returns [EObject current=null] : iv_ruleExtRule= ruleExtRule EOF ; 
     2315    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:789:1: entryRuleExtRule returns [EObject current=null] : iv_ruleExtRule= ruleExtRule EOF ; 
    20712316    public final EObject entryRuleExtRule() throws RecognitionException { 
    20722317        EObject current = null; 
    2073  
     2318        int entryRuleExtRule_StartIndex = input.index(); 
    20742319        EObject iv_ruleExtRule = null; 
    20752320 
    20762321 
    20772322        try { 
    2078             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:780:2: (iv_ruleExtRule= ruleExtRule EOF ) 
    2079             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:781:2: iv_ruleExtRule= ruleExtRule EOF 
    2080             { 
    2081              newCompositeNode(grammarAccess.getExtRuleRule());  
    2082             pushFollow(FOLLOW_ruleExtRule_in_entryRuleExtRule1517); 
     2323            if ( state.backtracking>0 && alreadyParsedRule(input, 17) ) { return current; } 
     2324            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:790:2: (iv_ruleExtRule= ruleExtRule EOF ) 
     2325            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:791:2: iv_ruleExtRule= ruleExtRule EOF 
     2326            { 
     2327            if ( state.backtracking==0 ) { 
     2328               newCompositeNode(grammarAccess.getExtRuleRule());  
     2329            } 
     2330            pushFollow(FOLLOW_ruleExtRule_in_entryRuleExtRule1533); 
    20832331            iv_ruleExtRule=ruleExtRule(); 
    20842332 
    20852333            state._fsp--; 
    2086  
    2087              current =iv_ruleExtRule;  
    2088             match(input,EOF,FOLLOW_EOF_in_entryRuleExtRule1527);  
     2334            if (state.failed) return current; 
     2335            if ( state.backtracking==0 ) { 
     2336               current =iv_ruleExtRule;  
     2337            } 
     2338            match(input,EOF,FOLLOW_EOF_in_entryRuleExtRule1543); if (state.failed) return current; 
    20892339 
    20902340            } 
     
    20972347            }  
    20982348        finally { 
     2349            if ( state.backtracking>0 ) { memoize(input, 17, entryRuleExtRule_StartIndex); } 
    20992350        } 
    21002351        return current; 
     
    21042355 
    21052356    // $ANTLR start "ruleExtRule" 
    2106     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:788:1: ruleExtRule returns [EObject current=null] : ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' ) otherlv_7= '<-' ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )* (otherlv_18= ';' )? ) ; 
     2357    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:798:1: ruleExtRule returns [EObject current=null] : ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' ) otherlv_7= '<-' ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )* (otherlv_18= ';' )? ) ; 
    21072358    public final EObject ruleExtRule() throws RecognitionException { 
    21082359        EObject current = null; 
    2109  
     2360        int ruleExtRule_StartIndex = input.index(); 
    21102361        Token lv_rulenumber_0_0=null; 
    21112362        Token lv_rulevariant_1_0=null; 
     
    21322383             
    21332384        try { 
    2134             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:791:28: ( ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' ) otherlv_7= '<-' ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )* (otherlv_18= ';' )? ) ) 
    2135             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:792:1: ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' ) otherlv_7= '<-' ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )* (otherlv_18= ';' )? ) 
    2136             { 
    2137             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:792:1: ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' ) otherlv_7= '<-' ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )* (otherlv_18= ';' )? ) 
    2138             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:792:2: ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' ) otherlv_7= '<-' ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )* (otherlv_18= ';' )? 
    2139             { 
    2140             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:792:2: ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? 
     2385            if ( state.backtracking>0 && alreadyParsedRule(input, 18) ) { return current; } 
     2386            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:801:28: ( ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' ) otherlv_7= '<-' ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )* (otherlv_18= ';' )? ) ) 
     2387            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:802:1: ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' ) otherlv_7= '<-' ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )* (otherlv_18= ';' )? ) 
     2388            { 
     2389            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:802:1: ( ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' ) otherlv_7= '<-' ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )* (otherlv_18= ';' )? ) 
     2390            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:802:2: ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? ( (lv_name_3_0= RULE_ID ) ) (otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' ) otherlv_7= '<-' ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )* (otherlv_18= ';' )? 
     2391            { 
     2392            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:802:2: ( ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' )? 
    21412393            int alt21=2; 
    21422394            int LA21_0 = input.LA(1); 
     
    21472399            switch (alt21) { 
    21482400                case 1 : 
    2149                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:792:3: ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' 
    2150                     { 
    2151                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:792:3: ( (lv_rulenumber_0_0= RULE_INT ) ) 
    2152                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:793:1: (lv_rulenumber_0_0= RULE_INT ) 
    2153                     { 
    2154                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:793:1: (lv_rulenumber_0_0= RULE_INT ) 
    2155                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:794:3: lv_rulenumber_0_0= RULE_INT 
    2156                     { 
    2157                     lv_rulenumber_0_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleExtRule1570);  
    2158  
    2159                                         newLeafNode(lv_rulenumber_0_0, grammarAccess.getExtRuleAccess().getRulenumberINTTerminalRuleCall_0_0_0());  
    2160                                  
    2161  
    2162                                 if (current==null) { 
    2163                                     current = createModelElement(grammarAccess.getExtRuleRule()); 
    2164                                 } 
    2165                                         setWithLastConsumed( 
    2166                                                 current,  
    2167                                                 "rulenumber", 
    2168                                         lv_rulenumber_0_0,  
    2169                                         "INT"); 
    2170                              
    2171  
    2172                     } 
    2173  
    2174  
    2175                     } 
    2176  
    2177                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:810:2: ( (lv_rulevariant_1_0= RULE_ID ) )? 
     2401                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:802:3: ( (lv_rulenumber_0_0= RULE_INT ) ) ( (lv_rulevariant_1_0= RULE_ID ) )? otherlv_2= '.' 
     2402                    { 
     2403                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:802:3: ( (lv_rulenumber_0_0= RULE_INT ) ) 
     2404                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:803:1: (lv_rulenumber_0_0= RULE_INT ) 
     2405                    { 
     2406                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:803:1: (lv_rulenumber_0_0= RULE_INT ) 
     2407                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:804:3: lv_rulenumber_0_0= RULE_INT 
     2408                    { 
     2409                    lv_rulenumber_0_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleExtRule1586); if (state.failed) return current; 
     2410                    if ( state.backtracking==0 ) { 
     2411 
     2412                                        newLeafNode(lv_rulenumber_0_0, grammarAccess.getExtRuleAccess().getRulenumberINTTerminalRuleCall_0_0_0());  
     2413                                 
     2414                    } 
     2415                    if ( state.backtracking==0 ) { 
     2416 
     2417                                if (current==null) { 
     2418                                    current = createModelElement(grammarAccess.getExtRuleRule()); 
     2419                                } 
     2420                                        setWithLastConsumed( 
     2421                                                current,  
     2422                                                "rulenumber", 
     2423                                        lv_rulenumber_0_0,  
     2424                                        "INT"); 
     2425                             
     2426                    } 
     2427 
     2428                    } 
     2429 
     2430 
     2431                    } 
     2432 
     2433                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:820:2: ( (lv_rulevariant_1_0= RULE_ID ) )? 
    21782434                    int alt20=2; 
    21792435                    int LA20_0 = input.LA(1); 
     
    21842440                    switch (alt20) { 
    21852441                        case 1 : 
    2186                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:811:1: (lv_rulevariant_1_0= RULE_ID ) 
     2442                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:821:1: (lv_rulevariant_1_0= RULE_ID ) 
    21872443                            { 
    2188                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:811:1: (lv_rulevariant_1_0= RULE_ID ) 
    2189                             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:812:3: lv_rulevariant_1_0= RULE_ID 
     2444                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:821:1: (lv_rulevariant_1_0= RULE_ID ) 
     2445                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:822:3: lv_rulevariant_1_0= RULE_ID 
    21902446                            { 
    2191                             lv_rulevariant_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleExtRule1592);  
    2192  
    2193                                                 newLeafNode(lv_rulevariant_1_0, grammarAccess.getExtRuleAccess().getRulevariantIDTerminalRuleCall_0_1_0());  
    2194                                          
    2195  
    2196                                         if (current==null) { 
    2197                                             current = createModelElement(grammarAccess.getExtRuleRule()); 
    2198                                         } 
    2199                                                 setWithLastConsumed( 
    2200                                                         current,  
    2201                                                         "rulevariant", 
    2202                                                 lv_rulevariant_1_0,  
    2203                                                 "ID"); 
    2204                                      
     2447                            lv_rulevariant_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleExtRule1608); if (state.failed) return current; 
     2448                            if ( state.backtracking==0 ) { 
     2449 
     2450                                                newLeafNode(lv_rulevariant_1_0, grammarAccess.getExtRuleAccess().getRulevariantIDTerminalRuleCall_0_1_0());  
     2451                                         
     2452                            } 
     2453                            if ( state.backtracking==0 ) { 
     2454 
     2455                                        if (current==null) { 
     2456                                            current = createModelElement(grammarAccess.getExtRuleRule()); 
     2457                                        } 
     2458                                                setWithLastConsumed( 
     2459                                                        current,  
     2460                                                        "rulevariant", 
     2461                                                lv_rulevariant_1_0,  
     2462                                                "ID"); 
     2463                                     
     2464                            } 
    22052465 
    22062466                            } 
     
    22122472                    } 
    22132473 
    2214                     otherlv_2=(Token)match(input,24,FOLLOW_24_in_ruleExtRule1610);  
    2215  
    2216                                 newLeafNode(otherlv_2, grammarAccess.getExtRuleAccess().getFullStopKeyword_0_2()); 
    2217                          
     2474                    otherlv_2=(Token)match(input,24,FOLLOW_24_in_ruleExtRule1626); if (state.failed) return current; 
     2475                    if ( state.backtracking==0 ) { 
     2476 
     2477                                newLeafNode(otherlv_2, grammarAccess.getExtRuleAccess().getFullStopKeyword_0_2()); 
     2478                           
     2479                    } 
    22182480 
    22192481                    } 
     
    22222484            } 
    22232485 
    2224             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:832:3: ( (lv_name_3_0= RULE_ID ) ) 
    2225             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:833:1: (lv_name_3_0= RULE_ID ) 
    2226             { 
    2227             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:833:1: (lv_name_3_0= RULE_ID ) 
    2228             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:834:3: lv_name_3_0= RULE_ID 
    2229             { 
    2230             lv_name_3_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleExtRule1629);  
    2231  
    2232                                 newLeafNode(lv_name_3_0, grammarAccess.getExtRuleAccess().getNameIDTerminalRuleCall_1_0());  
    2233                          
    2234  
    2235                         if (current==null) { 
    2236                             current = createModelElement(grammarAccess.getExtRuleRule()); 
    2237                         } 
    2238                                 setWithLastConsumed( 
    2239                                         current,  
    2240                                         "name", 
    2241                                 lv_name_3_0,  
    2242                                 "ID"); 
    2243                      
    2244  
    2245             } 
    2246  
    2247  
    2248             } 
    2249  
    2250             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:850:2: (otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' ) 
    2251             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:850:4: otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' 
    2252             { 
    2253             otherlv_4=(Token)match(input,26,FOLLOW_26_in_ruleExtRule1647);  
    2254  
    2255                         newLeafNode(otherlv_4, grammarAccess.getExtRuleAccess().getLeftParenthesisKeyword_2_0()); 
    2256                  
    2257             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:854:1: ( (lv_ruleext_5_0= RULE_INT ) ) 
    2258             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:855:1: (lv_ruleext_5_0= RULE_INT ) 
    2259             { 
    2260             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:855:1: (lv_ruleext_5_0= RULE_INT ) 
    2261             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:856:3: lv_ruleext_5_0= RULE_INT 
    2262             { 
    2263             lv_ruleext_5_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleExtRule1664);  
    2264  
    2265                                 newLeafNode(lv_ruleext_5_0, grammarAccess.getExtRuleAccess().getRuleextINTTerminalRuleCall_2_1_0());  
    2266                          
    2267  
    2268                         if (current==null) { 
    2269                             current = createModelElement(grammarAccess.getExtRuleRule()); 
    2270                         } 
    2271                                 setWithLastConsumed( 
    2272                                         current,  
    2273                                         "ruleext", 
    2274                                 lv_ruleext_5_0,  
    2275                                 "INT"); 
    2276                      
    2277  
    2278             } 
    2279  
    2280  
    2281             } 
    2282  
    2283             otherlv_6=(Token)match(input,27,FOLLOW_27_in_ruleExtRule1681);  
    2284  
    2285                         newLeafNode(otherlv_6, grammarAccess.getExtRuleAccess().getRightParenthesisKeyword_2_2()); 
    2286                  
    2287  
    2288             } 
    2289  
    2290             otherlv_7=(Token)match(input,28,FOLLOW_28_in_ruleExtRule1694);  
    2291  
    2292                         newLeafNode(otherlv_7, grammarAccess.getExtRuleAccess().getLessThanSignHyphenMinusKeyword_3()); 
    2293                  
    2294             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:880:1: ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )* 
     2486            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:842:3: ( (lv_name_3_0= RULE_ID ) ) 
     2487            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:843:1: (lv_name_3_0= RULE_ID ) 
     2488            { 
     2489            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:843:1: (lv_name_3_0= RULE_ID ) 
     2490            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:844:3: lv_name_3_0= RULE_ID 
     2491            { 
     2492            lv_name_3_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleExtRule1645); if (state.failed) return current; 
     2493            if ( state.backtracking==0 ) { 
     2494 
     2495                                newLeafNode(lv_name_3_0, grammarAccess.getExtRuleAccess().getNameIDTerminalRuleCall_1_0());  
     2496                         
     2497            } 
     2498            if ( state.backtracking==0 ) { 
     2499 
     2500                        if (current==null) { 
     2501                            current = createModelElement(grammarAccess.getExtRuleRule()); 
     2502                        } 
     2503                                setWithLastConsumed( 
     2504                                        current,  
     2505                                        "name", 
     2506                                lv_name_3_0,  
     2507                                "ID"); 
     2508                     
     2509            } 
     2510 
     2511            } 
     2512 
     2513 
     2514            } 
     2515 
     2516            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:860:2: (otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' ) 
     2517            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:860:4: otherlv_4= '(' ( (lv_ruleext_5_0= RULE_INT ) ) otherlv_6= ')' 
     2518            { 
     2519            otherlv_4=(Token)match(input,26,FOLLOW_26_in_ruleExtRule1663); if (state.failed) return current; 
     2520            if ( state.backtracking==0 ) { 
     2521 
     2522                        newLeafNode(otherlv_4, grammarAccess.getExtRuleAccess().getLeftParenthesisKeyword_2_0()); 
     2523                   
     2524            } 
     2525            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:864:1: ( (lv_ruleext_5_0= RULE_INT ) ) 
     2526            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:865:1: (lv_ruleext_5_0= RULE_INT ) 
     2527            { 
     2528            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:865:1: (lv_ruleext_5_0= RULE_INT ) 
     2529            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:866:3: lv_ruleext_5_0= RULE_INT 
     2530            { 
     2531            lv_ruleext_5_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleExtRule1680); if (state.failed) return current; 
     2532            if ( state.backtracking==0 ) { 
     2533 
     2534                                newLeafNode(lv_ruleext_5_0, grammarAccess.getExtRuleAccess().getRuleextINTTerminalRuleCall_2_1_0());  
     2535                         
     2536            } 
     2537            if ( state.backtracking==0 ) { 
     2538 
     2539                        if (current==null) { 
     2540                            current = createModelElement(grammarAccess.getExtRuleRule()); 
     2541                        } 
     2542                                setWithLastConsumed( 
     2543                                        current,  
     2544                                        "ruleext", 
     2545                                lv_ruleext_5_0,  
     2546                                "INT"); 
     2547                     
     2548            } 
     2549 
     2550            } 
     2551 
     2552 
     2553            } 
     2554 
     2555            otherlv_6=(Token)match(input,27,FOLLOW_27_in_ruleExtRule1697); if (state.failed) return current; 
     2556            if ( state.backtracking==0 ) { 
     2557 
     2558                        newLeafNode(otherlv_6, grammarAccess.getExtRuleAccess().getRightParenthesisKeyword_2_2()); 
     2559                   
     2560            } 
     2561 
     2562            } 
     2563 
     2564            otherlv_7=(Token)match(input,28,FOLLOW_28_in_ruleExtRule1710); if (state.failed) return current; 
     2565            if ( state.backtracking==0 ) { 
     2566 
     2567                        newLeafNode(otherlv_7, grammarAccess.getExtRuleAccess().getLessThanSignHyphenMinusKeyword_3()); 
     2568                   
     2569            } 
     2570            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:890:1: ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )* 
    22952571            loop22: 
    22962572            do { 
     
    22992575                switch (alt22) { 
    23002576                case 1 : 
    2301                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:880:2: ( (lv_elements_8_0= ruleAtom ) ) 
     2577                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:890:2: ( (lv_elements_8_0= ruleAtom ) ) 
    23022578                    { 
    2303                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:880:2: ( (lv_elements_8_0= ruleAtom ) ) 
    2304                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:881:1: (lv_elements_8_0= ruleAtom ) 
     2579                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:890:2: ( (lv_elements_8_0= ruleAtom ) ) 
     2580                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:891:1: (lv_elements_8_0= ruleAtom ) 
    23052581                    { 
    2306                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:881:1: (lv_elements_8_0= ruleAtom ) 
    2307                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:882:3: lv_elements_8_0= ruleAtom 
     2582                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:891:1: (lv_elements_8_0= ruleAtom ) 
     2583                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:892:3: lv_elements_8_0= ruleAtom 
    23082584                    { 
    2309                       
    2310                                 newCompositeNode(grammarAccess.getExtRuleAccess().getElementsAtomParserRuleCall_4_0_0());  
    2311                              
    2312                     pushFollow(FOLLOW_ruleAtom_in_ruleExtRule1716); 
     2585                    if ( state.backtracking==0 ) { 
     2586                        
     2587                                newCompositeNode(grammarAccess.getExtRuleAccess().getElementsAtomParserRuleCall_4_0_0());  
     2588                             
     2589                    } 
     2590                    pushFollow(FOLLOW_ruleAtom_in_ruleExtRule1732); 
    23132591                    lv_elements_8_0=ruleAtom(); 
    23142592 
    23152593                    state._fsp--; 
    2316  
    2317  
    2318                                 if (current==null) { 
    2319                                     current = createModelElementForParent(grammarAccess.getExtRuleRule()); 
    2320                                 } 
    2321                                         add( 
    2322                                                 current,  
    2323                                                 "elements", 
    2324                                         lv_elements_8_0,  
    2325                                         "Atom"); 
    2326                                 afterParserOrEnumRuleCall(); 
    2327                              
     2594                    if (state.failed) return current; 
     2595                    if ( state.backtracking==0 ) { 
     2596 
     2597                                if (current==null) { 
     2598                                    current = createModelElementForParent(grammarAccess.getExtRuleRule()); 
     2599                                } 
     2600                                        add( 
     2601                                                current,  
     2602                                                "elements", 
     2603                                        lv_elements_8_0,  
     2604                                        "Atom"); 
     2605                                afterParserOrEnumRuleCall(); 
     2606                             
     2607                    } 
    23282608 
    23292609                    } 
     
    23362616                    break; 
    23372617                case 2 : 
    2338                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:899:7: otherlv_9= ')' 
     2618                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:909:7: otherlv_9= ')' 
    23392619                    { 
    2340                     otherlv_9=(Token)match(input,27,FOLLOW_27_in_ruleExtRule1734);  
    2341  
    2342                                 newLeafNode(otherlv_9, grammarAccess.getExtRuleAccess().getRightParenthesisKeyword_4_1()); 
    2343                          
     2620                    otherlv_9=(Token)match(input,27,FOLLOW_27_in_ruleExtRule1750); if (state.failed) return current; 
     2621                    if ( state.backtracking==0 ) { 
     2622 
     2623                                newLeafNode(otherlv_9, grammarAccess.getExtRuleAccess().getRightParenthesisKeyword_4_1()); 
     2624                           
     2625                    } 
    23442626 
    23452627                    } 
    23462628                    break; 
    23472629                case 3 : 
    2348                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:904:7: otherlv_10= ']' 
     2630                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:914:7: otherlv_10= ']' 
    23492631                    { 
    2350                     otherlv_10=(Token)match(input,29,FOLLOW_29_in_ruleExtRule1752);  
    2351  
    2352                                 newLeafNode(otherlv_10, grammarAccess.getExtRuleAccess().getRightSquareBracketKeyword_4_2()); 
    2353                          
     2632                    otherlv_10=(Token)match(input,29,FOLLOW_29_in_ruleExtRule1768); if (state.failed) return current; 
     2633                    if ( state.backtracking==0 ) { 
     2634 
     2635                                newLeafNode(otherlv_10, grammarAccess.getExtRuleAccess().getRightSquareBracketKeyword_4_2()); 
     2636                           
     2637                    } 
    23542638 
    23552639                    } 
    23562640                    break; 
    23572641                case 4 : 
    2358                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:909:7: otherlv_11= '}' 
     2642                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:919:7: otherlv_11= '}' 
    23592643                    { 
    2360                     otherlv_11=(Token)match(input,30,FOLLOW_30_in_ruleExtRule1770);  
    2361  
    2362                                 newLeafNode(otherlv_11, grammarAccess.getExtRuleAccess().getRightCurlyBracketKeyword_4_3()); 
    2363                          
     2644                    otherlv_11=(Token)match(input,30,FOLLOW_30_in_ruleExtRule1786); if (state.failed) return current; 
     2645                    if ( state.backtracking==0 ) { 
     2646 
     2647                                newLeafNode(otherlv_11, grammarAccess.getExtRuleAccess().getRightCurlyBracketKeyword_4_3()); 
     2648                           
     2649                    } 
    23642650 
    23652651                    } 
    23662652                    break; 
    23672653                case 5 : 
    2368                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:914:7: otherlv_12= '|' 
     2654                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:924:7: otherlv_12= '|' 
    23692655                    { 
    2370                     otherlv_12=(Token)match(input,31,FOLLOW_31_in_ruleExtRule1788);  
    2371  
    2372                                 newLeafNode(otherlv_12, grammarAccess.getExtRuleAccess().getVerticalLineKeyword_4_4()); 
    2373                          
     2656                    otherlv_12=(Token)match(input,31,FOLLOW_31_in_ruleExtRule1804); if (state.failed) return current; 
     2657                    if ( state.backtracking==0 ) { 
     2658 
     2659                                newLeafNode(otherlv_12, grammarAccess.getExtRuleAccess().getVerticalLineKeyword_4_4()); 
     2660                           
     2661                    } 
    23742662 
    23752663                    } 
    23762664                    break; 
    23772665                case 6 : 
    2378                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:919:7: otherlv_13= '(' 
     2666                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:929:7: otherlv_13= '(' 
    23792667                    { 
    2380                     otherlv_13=(Token)match(input,26,FOLLOW_26_in_ruleExtRule1806);  
    2381  
    2382                                 newLeafNode(otherlv_13, grammarAccess.getExtRuleAccess().getLeftParenthesisKeyword_4_5()); 
    2383                          
     2668                    otherlv_13=(Token)match(input,26,FOLLOW_26_in_ruleExtRule1822); if (state.failed) return current; 
     2669                    if ( state.backtracking==0 ) { 
     2670 
     2671                                newLeafNode(otherlv_13, grammarAccess.getExtRuleAccess().getLeftParenthesisKeyword_4_5()); 
     2672                           
     2673                    } 
    23842674 
    23852675                    } 
    23862676                    break; 
    23872677                case 7 : 
    2388                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:924:7: otherlv_14= '[' 
     2678                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:934:7: otherlv_14= '[' 
    23892679                    { 
    2390                     otherlv_14=(Token)match(input,32,FOLLOW_32_in_ruleExtRule1824);  
    2391  
    2392                                 newLeafNode(otherlv_14, grammarAccess.getExtRuleAccess().getLeftSquareBracketKeyword_4_6()); 
    2393                          
     2680                    otherlv_14=(Token)match(input,32,FOLLOW_32_in_ruleExtRule1840); if (state.failed) return current; 
     2681                    if ( state.backtracking==0 ) { 
     2682 
     2683                                newLeafNode(otherlv_14, grammarAccess.getExtRuleAccess().getLeftSquareBracketKeyword_4_6()); 
     2684                           
     2685                    } 
    23942686 
    23952687                    } 
    23962688                    break; 
    23972689                case 8 : 
    2398                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:929:7: otherlv_15= '{' 
     2690                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:939:7: otherlv_15= '{' 
    23992691                    { 
    2400                     otherlv_15=(Token)match(input,33,FOLLOW_33_in_ruleExtRule1842);  
    2401  
    2402                                 newLeafNode(otherlv_15, grammarAccess.getExtRuleAccess().getLeftCurlyBracketKeyword_4_7()); 
    2403                          
     2692                    otherlv_15=(Token)match(input,33,FOLLOW_33_in_ruleExtRule1858); if (state.failed) return current; 
     2693                    if ( state.backtracking==0 ) { 
     2694 
     2695                                newLeafNode(otherlv_15, grammarAccess.getExtRuleAccess().getLeftCurlyBracketKeyword_4_7()); 
     2696                           
     2697                    } 
    24042698 
    24052699                    } 
    24062700                    break; 
    24072701                case 9 : 
    2408                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:934:7: otherlv_16= '*' 
     2702                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:944:7: otherlv_16= '*' 
    24092703                    { 
    2410                     otherlv_16=(Token)match(input,34,FOLLOW_34_in_ruleExtRule1860);  
    2411  
    2412                                 newLeafNode(otherlv_16, grammarAccess.getExtRuleAccess().getAsteriskKeyword_4_8()); 
    2413                          
     2704                    otherlv_16=(Token)match(input,34,FOLLOW_34_in_ruleExtRule1876); if (state.failed) return current; 
     2705                    if ( state.backtracking==0 ) { 
     2706 
     2707                                newLeafNode(otherlv_16, grammarAccess.getExtRuleAccess().getAsteriskKeyword_4_8()); 
     2708                           
     2709                    } 
    24142710 
    24152711                    } 
    24162712                    break; 
    24172713                case 10 : 
    2418                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:939:7: otherlv_17= '+' 
     2714                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:949:7: otherlv_17= '+' 
    24192715                    { 
    2420                     otherlv_17=(Token)match(input,35,FOLLOW_35_in_ruleExtRule1878);  
    2421  
    2422                                 newLeafNode(otherlv_17, grammarAccess.getExtRuleAccess().getPlusSignKeyword_4_9()); 
    2423                          
     2716                    otherlv_17=(Token)match(input,35,FOLLOW_35_in_ruleExtRule1894); if (state.failed) return current; 
     2717                    if ( state.backtracking==0 ) { 
     2718 
     2719                                newLeafNode(otherlv_17, grammarAccess.getExtRuleAccess().getPlusSignKeyword_4_9()); 
     2720                           
     2721                    } 
    24242722 
    24252723                    } 
     
    24312729            } while (true); 
    24322730 
    2433             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:943:3: (otherlv_18= ';' )? 
     2731            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:953:3: (otherlv_18= ';' )? 
    24342732            int alt23=2; 
    24352733            int LA23_0 = input.LA(1); 
     
    24402738            switch (alt23) { 
    24412739                case 1 : 
    2442                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:943:5: otherlv_18= ';' 
    2443                     { 
    2444                     otherlv_18=(Token)match(input,15,FOLLOW_15_in_ruleExtRule1893);  
    2445  
    2446                                 newLeafNode(otherlv_18, grammarAccess.getExtRuleAccess().getSemicolonKeyword_5()); 
    2447                          
     2740                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:953:5: otherlv_18= ';' 
     2741                    { 
     2742                    otherlv_18=(Token)match(input,15,FOLLOW_15_in_ruleExtRule1909); if (state.failed) return current; 
     2743                    if ( state.backtracking==0 ) { 
     2744 
     2745                                newLeafNode(otherlv_18, grammarAccess.getExtRuleAccess().getSemicolonKeyword_5()); 
     2746                           
     2747                    } 
    24482748 
    24492749                    } 
     
    24582758            } 
    24592759 
    2460              leaveRule();  
     2760            if ( state.backtracking==0 ) { 
     2761               leaveRule();  
     2762            } 
    24612763        } 
    24622764          
     
    24662768            }  
    24672769        finally { 
     2770            if ( state.backtracking>0 ) { memoize(input, 18, ruleExtRule_StartIndex); } 
    24682771        } 
    24692772        return current; 
     
    24732776 
    24742777    // $ANTLR start "entryRuleMergeRule" 
    2475     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:955:1: entryRuleMergeRule returns [EObject current=null] : iv_ruleMergeRule= ruleMergeRule EOF ; 
     2778    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:965:1: entryRuleMergeRule returns [EObject current=null] : iv_ruleMergeRule= ruleMergeRule EOF ; 
    24762779    public final EObject entryRuleMergeRule() throws RecognitionException { 
    24772780        EObject current = null; 
    2478  
     2781        int entryRuleMergeRule_StartIndex = input.index(); 
    24792782        EObject iv_ruleMergeRule = null; 
    24802783 
    24812784 
    24822785        try { 
    2483             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:956:2: (iv_ruleMergeRule= ruleMergeRule EOF ) 
    2484             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:957:2: iv_ruleMergeRule= ruleMergeRule EOF 
    2485             { 
    2486              newCompositeNode(grammarAccess.getMergeRuleRule());  
    2487             pushFollow(FOLLOW_ruleMergeRule_in_entryRuleMergeRule1931); 
     2786            if ( state.backtracking>0 && alreadyParsedRule(input, 19) ) { return current; } 
     2787            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:966:2: (iv_ruleMergeRule= ruleMergeRule EOF ) 
     2788            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:967:2: iv_ruleMergeRule= ruleMergeRule EOF 
     2789            { 
     2790            if ( state.backtracking==0 ) { 
     2791               newCompositeNode(grammarAccess.getMergeRuleRule());  
     2792            } 
     2793            pushFollow(FOLLOW_ruleMergeRule_in_entryRuleMergeRule1947); 
    24882794            iv_ruleMergeRule=ruleMergeRule(); 
    24892795 
    24902796            state._fsp--; 
    2491  
    2492              current =iv_ruleMergeRule;  
    2493             match(input,EOF,FOLLOW_EOF_in_entryRuleMergeRule1941);  
     2797            if (state.failed) return current; 
     2798            if ( state.backtracking==0 ) { 
     2799               current =iv_ruleMergeRule;  
     2800            } 
     2801            match(input,EOF,FOLLOW_EOF_in_entryRuleMergeRule1957); if (state.failed) return current; 
    24942802 
    24952803            } 
     
    25022810            }  
    25032811        finally { 
     2812            if ( state.backtracking>0 ) { memoize(input, 19, entryRuleMergeRule_StartIndex); } 
    25042813        } 
    25052814        return current; 
     
    25092818 
    25102819    // $ANTLR start "ruleMergeRule" 
    2511     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:964:1: ruleMergeRule returns [EObject current=null] : (this_GlobalCombinator_0= ruleGlobalCombinator | this_RuleCombinator_1= ruleRuleCombinator | this_HookCombinator_2= ruleHookCombinator ) ; 
     2820    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:974:1: ruleMergeRule returns [EObject current=null] : (this_GlobalCombinator_0= ruleGlobalCombinator | this_RuleCombinator_1= ruleRuleCombinator | this_HookCombinator_2= ruleHookCombinator ) ; 
    25122821    public final EObject ruleMergeRule() throws RecognitionException { 
    25132822        EObject current = null; 
    2514  
     2823        int ruleMergeRule_StartIndex = input.index(); 
    25152824        EObject this_GlobalCombinator_0 = null; 
    25162825 
     
    25232832             
    25242833        try { 
    2525             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:967:28: ( (this_GlobalCombinator_0= ruleGlobalCombinator | this_RuleCombinator_1= ruleRuleCombinator | this_HookCombinator_2= ruleHookCombinator ) ) 
    2526             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:968:1: (this_GlobalCombinator_0= ruleGlobalCombinator | this_RuleCombinator_1= ruleRuleCombinator | this_HookCombinator_2= ruleHookCombinator ) 
    2527             { 
    2528             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:968:1: (this_GlobalCombinator_0= ruleGlobalCombinator | this_RuleCombinator_1= ruleRuleCombinator | this_HookCombinator_2= ruleHookCombinator ) 
     2834            if ( state.backtracking>0 && alreadyParsedRule(input, 20) ) { return current; } 
     2835            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:977:28: ( (this_GlobalCombinator_0= ruleGlobalCombinator | this_RuleCombinator_1= ruleRuleCombinator | this_HookCombinator_2= ruleHookCombinator ) ) 
     2836            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:978:1: (this_GlobalCombinator_0= ruleGlobalCombinator | this_RuleCombinator_1= ruleRuleCombinator | this_HookCombinator_2= ruleHookCombinator ) 
     2837            { 
     2838            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:978:1: (this_GlobalCombinator_0= ruleGlobalCombinator | this_RuleCombinator_1= ruleRuleCombinator | this_HookCombinator_2= ruleHookCombinator ) 
    25292839            int alt24=3; 
    25302840            switch ( input.LA(1) ) { 
     
    25452855                break; 
    25462856            default: 
     2857                if (state.backtracking>0) {state.failed=true; return current;} 
    25472858                NoViableAltException nvae = 
    25482859                    new NoViableAltException("", 24, 0, input); 
     
    25532864            switch (alt24) { 
    25542865                case 1 : 
    2555                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:969:5: this_GlobalCombinator_0= ruleGlobalCombinator 
    2556                     { 
    2557                       
    2558                             newCompositeNode(grammarAccess.getMergeRuleAccess().getGlobalCombinatorParserRuleCall_0());  
    2559                          
    2560                     pushFollow(FOLLOW_ruleGlobalCombinator_in_ruleMergeRule1988); 
     2866                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:979:2: this_GlobalCombinator_0= ruleGlobalCombinator 
     2867                    { 
     2868                    if ( state.backtracking==0 ) { 
     2869                        
     2870                          /* */  
     2871                         
     2872                    } 
     2873                    if ( state.backtracking==0 ) { 
     2874                        
     2875                              newCompositeNode(grammarAccess.getMergeRuleAccess().getGlobalCombinatorParserRuleCall_0());  
     2876                           
     2877                    } 
     2878                    pushFollow(FOLLOW_ruleGlobalCombinator_in_ruleMergeRule2007); 
    25612879                    this_GlobalCombinator_0=ruleGlobalCombinator(); 
    25622880 
    25632881                    state._fsp--; 
    2564  
    2565                       
    2566                             current = this_GlobalCombinator_0;  
    2567                             afterParserOrEnumRuleCall(); 
    2568                          
     2882                    if (state.failed) return current; 
     2883                    if ( state.backtracking==0 ) { 
     2884                        
     2885                              current = this_GlobalCombinator_0;  
     2886                              afterParserOrEnumRuleCall(); 
     2887                           
     2888                    } 
    25692889 
    25702890                    } 
    25712891                    break; 
    25722892                case 2 : 
    2573                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:979:5: this_RuleCombinator_1= ruleRuleCombinator 
    2574                     { 
    2575                       
    2576                             newCompositeNode(grammarAccess.getMergeRuleAccess().getRuleCombinatorParserRuleCall_1());  
    2577                          
    2578                     pushFollow(FOLLOW_ruleRuleCombinator_in_ruleMergeRule2015); 
     2893                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:992:2: this_RuleCombinator_1= ruleRuleCombinator 
     2894                    { 
     2895                    if ( state.backtracking==0 ) { 
     2896                        
     2897                          /* */  
     2898                         
     2899                    } 
     2900                    if ( state.backtracking==0 ) { 
     2901                        
     2902                              newCompositeNode(grammarAccess.getMergeRuleAccess().getRuleCombinatorParserRuleCall_1());  
     2903                           
     2904                    } 
     2905                    pushFollow(FOLLOW_ruleRuleCombinator_in_ruleMergeRule2037); 
    25792906                    this_RuleCombinator_1=ruleRuleCombinator(); 
    25802907 
    25812908                    state._fsp--; 
    2582  
    2583                       
    2584                             current = this_RuleCombinator_1;  
    2585                             afterParserOrEnumRuleCall(); 
    2586                          
     2909                    if (state.failed) return current; 
     2910                    if ( state.backtracking==0 ) { 
     2911                        
     2912                              current = this_RuleCombinator_1;  
     2913                              afterParserOrEnumRuleCall(); 
     2914                           
     2915                    } 
    25872916 
    25882917                    } 
    25892918                    break; 
    25902919                case 3 : 
    2591                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:989:5: this_HookCombinator_2= ruleHookCombinator 
    2592                     { 
    2593                       
    2594                             newCompositeNode(grammarAccess.getMergeRuleAccess().getHookCombinatorParserRuleCall_2());  
    2595                          
    2596                     pushFollow(FOLLOW_ruleHookCombinator_in_ruleMergeRule2042); 
     2920                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1005:2: this_HookCombinator_2= ruleHookCombinator 
     2921                    { 
     2922                    if ( state.backtracking==0 ) { 
     2923                        
     2924                          /* */  
     2925                         
     2926                    } 
     2927                    if ( state.backtracking==0 ) { 
     2928                        
     2929                              newCompositeNode(grammarAccess.getMergeRuleAccess().getHookCombinatorParserRuleCall_2());  
     2930                           
     2931                    } 
     2932                    pushFollow(FOLLOW_ruleHookCombinator_in_ruleMergeRule2067); 
    25972933                    this_HookCombinator_2=ruleHookCombinator(); 
    25982934 
    25992935                    state._fsp--; 
    2600  
    2601                       
    2602                             current = this_HookCombinator_2;  
    2603                             afterParserOrEnumRuleCall(); 
    2604                          
     2936                    if (state.failed) return current; 
     2937                    if ( state.backtracking==0 ) { 
     2938                        
     2939                              current = this_HookCombinator_2;  
     2940                              afterParserOrEnumRuleCall(); 
     2941                           
     2942                    } 
    26052943 
    26062944                    } 
     
    26122950            } 
    26132951 
    2614              leaveRule();  
     2952            if ( state.backtracking==0 ) { 
     2953               leaveRule();  
     2954            } 
    26152955        } 
    26162956          
     
    26202960            }  
    26212961        finally { 
     2962            if ( state.backtracking>0 ) { memoize(input, 20, ruleMergeRule_StartIndex); } 
    26222963        } 
    26232964        return current; 
     
    26272968 
    26282969    // $ANTLR start "entryRuleGlobalCombinator" 
    2629     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1005:1: entryRuleGlobalCombinator returns [EObject current=null] : iv_ruleGlobalCombinator= ruleGlobalCombinator EOF ; 
     2970    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1024:1: entryRuleGlobalCombinator returns [EObject current=null] : iv_ruleGlobalCombinator= ruleGlobalCombinator EOF ; 
    26302971    public final EObject entryRuleGlobalCombinator() throws RecognitionException { 
    26312972        EObject current = null; 
    2632  
     2973        int entryRuleGlobalCombinator_StartIndex = input.index(); 
    26332974        EObject iv_ruleGlobalCombinator = null; 
    26342975 
    26352976 
    26362977        try { 
    2637             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1006:2: (iv_ruleGlobalCombinator= ruleGlobalCombinator EOF ) 
    2638             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1007:2: iv_ruleGlobalCombinator= ruleGlobalCombinator EOF 
    2639             { 
    2640              newCompositeNode(grammarAccess.getGlobalCombinatorRule());  
    2641             pushFollow(FOLLOW_ruleGlobalCombinator_in_entryRuleGlobalCombinator2077); 
     2978            if ( state.backtracking>0 && alreadyParsedRule(input, 21) ) { return current; } 
     2979            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1025:2: (iv_ruleGlobalCombinator= ruleGlobalCombinator EOF ) 
     2980            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1026:2: iv_ruleGlobalCombinator= ruleGlobalCombinator EOF 
     2981            { 
     2982            if ( state.backtracking==0 ) { 
     2983               newCompositeNode(grammarAccess.getGlobalCombinatorRule());  
     2984            } 
     2985            pushFollow(FOLLOW_ruleGlobalCombinator_in_entryRuleGlobalCombinator2102); 
    26422986            iv_ruleGlobalCombinator=ruleGlobalCombinator(); 
    26432987 
    26442988            state._fsp--; 
    2645  
    2646              current =iv_ruleGlobalCombinator;  
    2647             match(input,EOF,FOLLOW_EOF_in_entryRuleGlobalCombinator2087);  
     2989            if (state.failed) return current; 
     2990            if ( state.backtracking==0 ) { 
     2991               current =iv_ruleGlobalCombinator;  
     2992            } 
     2993            match(input,EOF,FOLLOW_EOF_in_entryRuleGlobalCombinator2112); if (state.failed) return current; 
    26482994 
    26492995            } 
     
    26563002            }  
    26573003        finally { 
     3004            if ( state.backtracking>0 ) { memoize(input, 21, entryRuleGlobalCombinator_StartIndex); } 
    26583005        } 
    26593006        return current; 
     
    26633010 
    26643011    // $ANTLR start "ruleGlobalCombinator" 
    2665     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1014:1: ruleGlobalCombinator returns [EObject current=null] : ( (otherlv_0= 'global' otherlv_1= 'combinator:' ) ( (lv_logic_2_0= RULE_LOGIC ) ) (otherlv_3= ';' )? ) ; 
     3012    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1033:1: ruleGlobalCombinator returns [EObject current=null] : ( (otherlv_0= 'global' otherlv_1= 'combinator:' ) ( (lv_logic_2_0= RULE_LOGIC ) ) (otherlv_3= ';' )? ) ; 
    26663013    public final EObject ruleGlobalCombinator() throws RecognitionException { 
    26673014        EObject current = null; 
    2668  
     3015        int ruleGlobalCombinator_StartIndex = input.index(); 
    26693016        Token otherlv_0=null; 
    26703017        Token otherlv_1=null; 
     
    26753022             
    26763023        try { 
    2677             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1017:28: ( ( (otherlv_0= 'global' otherlv_1= 'combinator:' ) ( (lv_logic_2_0= RULE_LOGIC ) ) (otherlv_3= ';' )? ) ) 
    2678             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1018:1: ( (otherlv_0= 'global' otherlv_1= 'combinator:' ) ( (lv_logic_2_0= RULE_LOGIC ) ) (otherlv_3= ';' )? ) 
    2679             { 
    2680             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1018:1: ( (otherlv_0= 'global' otherlv_1= 'combinator:' ) ( (lv_logic_2_0= RULE_LOGIC ) ) (otherlv_3= ';' )? ) 
    2681             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1018:2: (otherlv_0= 'global' otherlv_1= 'combinator:' ) ( (lv_logic_2_0= RULE_LOGIC ) ) (otherlv_3= ';' )? 
    2682             { 
    2683             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1018:2: (otherlv_0= 'global' otherlv_1= 'combinator:' ) 
    2684             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1018:4: otherlv_0= 'global' otherlv_1= 'combinator:' 
    2685             { 
    2686             otherlv_0=(Token)match(input,36,FOLLOW_36_in_ruleGlobalCombinator2125);  
    2687  
    2688                         newLeafNode(otherlv_0, grammarAccess.getGlobalCombinatorAccess().getGlobalKeyword_0_0()); 
    2689                  
    2690             otherlv_1=(Token)match(input,37,FOLLOW_37_in_ruleGlobalCombinator2137);  
    2691  
    2692                         newLeafNode(otherlv_1, grammarAccess.getGlobalCombinatorAccess().getCombinatorKeyword_0_1()); 
    2693                  
    2694  
    2695             } 
    2696  
    2697             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1026:2: ( (lv_logic_2_0= RULE_LOGIC ) ) 
    2698             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1027:1: (lv_logic_2_0= RULE_LOGIC ) 
    2699             { 
    2700             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1027:1: (lv_logic_2_0= RULE_LOGIC ) 
    2701             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1028:3: lv_logic_2_0= RULE_LOGIC 
    2702             { 
    2703             lv_logic_2_0=(Token)match(input,RULE_LOGIC,FOLLOW_RULE_LOGIC_in_ruleGlobalCombinator2155);  
    2704  
    2705                                 newLeafNode(lv_logic_2_0, grammarAccess.getGlobalCombinatorAccess().getLogicLOGICTerminalRuleCall_1_0());  
    2706                          
    2707  
    2708                         if (current==null) { 
    2709                             current = createModelElement(grammarAccess.getGlobalCombinatorRule()); 
    2710                         } 
    2711                                 setWithLastConsumed( 
    2712                                         current,  
    2713                                         "logic", 
    2714                                 lv_logic_2_0,  
    2715                                 "LOGIC"); 
    2716                      
    2717  
    2718             } 
    2719  
    2720  
    2721             } 
    2722  
    2723             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1044:2: (otherlv_3= ';' )? 
     3024            if ( state.backtracking>0 && alreadyParsedRule(input, 22) ) { return current; } 
     3025            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1036:28: ( ( (otherlv_0= 'global' otherlv_1= 'combinator:' ) ( (lv_logic_2_0= RULE_LOGIC ) ) (otherlv_3= ';' )? ) ) 
     3026            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1037:1: ( (otherlv_0= 'global' otherlv_1= 'combinator:' ) ( (lv_logic_2_0= RULE_LOGIC ) ) (otherlv_3= ';' )? ) 
     3027            { 
     3028            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1037:1: ( (otherlv_0= 'global' otherlv_1= 'combinator:' ) ( (lv_logic_2_0= RULE_LOGIC ) ) (otherlv_3= ';' )? ) 
     3029            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1037:2: (otherlv_0= 'global' otherlv_1= 'combinator:' ) ( (lv_logic_2_0= RULE_LOGIC ) ) (otherlv_3= ';' )? 
     3030            { 
     3031            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1037:2: (otherlv_0= 'global' otherlv_1= 'combinator:' ) 
     3032            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1037:4: otherlv_0= 'global' otherlv_1= 'combinator:' 
     3033            { 
     3034            otherlv_0=(Token)match(input,36,FOLLOW_36_in_ruleGlobalCombinator2150); if (state.failed) return current; 
     3035            if ( state.backtracking==0 ) { 
     3036 
     3037                        newLeafNode(otherlv_0, grammarAccess.getGlobalCombinatorAccess().getGlobalKeyword_0_0()); 
     3038                   
     3039            } 
     3040            otherlv_1=(Token)match(input,37,FOLLOW_37_in_ruleGlobalCombinator2162); if (state.failed) return current; 
     3041            if ( state.backtracking==0 ) { 
     3042 
     3043                        newLeafNode(otherlv_1, grammarAccess.getGlobalCombinatorAccess().getCombinatorKeyword_0_1()); 
     3044                   
     3045            } 
     3046 
     3047            } 
     3048 
     3049            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1045:2: ( (lv_logic_2_0= RULE_LOGIC ) ) 
     3050            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1046:1: (lv_logic_2_0= RULE_LOGIC ) 
     3051            { 
     3052            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1046:1: (lv_logic_2_0= RULE_LOGIC ) 
     3053            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1047:3: lv_logic_2_0= RULE_LOGIC 
     3054            { 
     3055            lv_logic_2_0=(Token)match(input,RULE_LOGIC,FOLLOW_RULE_LOGIC_in_ruleGlobalCombinator2180); if (state.failed) return current; 
     3056            if ( state.backtracking==0 ) { 
     3057 
     3058                                newLeafNode(lv_logic_2_0, grammarAccess.getGlobalCombinatorAccess().getLogicLOGICTerminalRuleCall_1_0());  
     3059                         
     3060            } 
     3061            if ( state.backtracking==0 ) { 
     3062 
     3063                        if (current==null) { 
     3064                            current = createModelElement(grammarAccess.getGlobalCombinatorRule()); 
     3065                        } 
     3066                                setWithLastConsumed( 
     3067                                        current,  
     3068                                        "logic", 
     3069                                lv_logic_2_0,  
     3070                                "LOGIC"); 
     3071                     
     3072            } 
     3073 
     3074            } 
     3075 
     3076 
     3077            } 
     3078 
     3079            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1063:2: (otherlv_3= ';' )? 
    27243080            int alt25=2; 
    27253081            int LA25_0 = input.LA(1); 
     
    27303086            switch (alt25) { 
    27313087                case 1 : 
    2732                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1044:4: otherlv_3= ';' 
    2733                     { 
    2734                     otherlv_3=(Token)match(input,15,FOLLOW_15_in_ruleGlobalCombinator2173);  
    2735  
    2736                                 newLeafNode(otherlv_3, grammarAccess.getGlobalCombinatorAccess().getSemicolonKeyword_2()); 
    2737                          
     3088                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1063:4: otherlv_3= ';' 
     3089                    { 
     3090                    otherlv_3=(Token)match(input,15,FOLLOW_15_in_ruleGlobalCombinator2198); if (state.failed) return current; 
     3091                    if ( state.backtracking==0 ) { 
     3092 
     3093                                newLeafNode(otherlv_3, grammarAccess.getGlobalCombinatorAccess().getSemicolonKeyword_2()); 
     3094                           
     3095                    } 
    27383096 
    27393097                    } 
     
    27483106            } 
    27493107 
    2750              leaveRule();  
     3108            if ( state.backtracking==0 ) { 
     3109               leaveRule();  
     3110            } 
    27513111        } 
    27523112          
     
    27563116            }  
    27573117        finally { 
     3118            if ( state.backtracking>0 ) { memoize(input, 22, ruleGlobalCombinator_StartIndex); } 
    27583119        } 
    27593120        return current; 
     
    27633124 
    27643125    // $ANTLR start "entryRuleRuleCombinator" 
    2765     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1056:1: entryRuleRuleCombinator returns [EObject current=null] : iv_ruleRuleCombinator= ruleRuleCombinator EOF ; 
     3126    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1075:1: entryRuleRuleCombinator returns [EObject current=null] : iv_ruleRuleCombinator= ruleRuleCombinator EOF ; 
    27663127    public final EObject entryRuleRuleCombinator() throws RecognitionException { 
    27673128        EObject current = null; 
    2768  
     3129        int entryRuleRuleCombinator_StartIndex = input.index(); 
    27693130        EObject iv_ruleRuleCombinator = null; 
    27703131 
    27713132 
    27723133        try { 
    2773             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1057:2: (iv_ruleRuleCombinator= ruleRuleCombinator EOF ) 
    2774             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1058:2: iv_ruleRuleCombinator= ruleRuleCombinator EOF 
    2775             { 
    2776              newCompositeNode(grammarAccess.getRuleCombinatorRule());  
    2777             pushFollow(FOLLOW_ruleRuleCombinator_in_entryRuleRuleCombinator2211); 
     3134            if ( state.backtracking>0 && alreadyParsedRule(input, 23) ) { return current; } 
     3135            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1076:2: (iv_ruleRuleCombinator= ruleRuleCombinator EOF ) 
     3136            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1077:2: iv_ruleRuleCombinator= ruleRuleCombinator EOF 
     3137            { 
     3138            if ( state.backtracking==0 ) { 
     3139               newCompositeNode(grammarAccess.getRuleCombinatorRule());  
     3140            } 
     3141            pushFollow(FOLLOW_ruleRuleCombinator_in_entryRuleRuleCombinator2236); 
    27783142            iv_ruleRuleCombinator=ruleRuleCombinator(); 
    27793143 
    27803144            state._fsp--; 
    2781  
    2782              current =iv_ruleRuleCombinator;  
    2783             match(input,EOF,FOLLOW_EOF_in_entryRuleRuleCombinator2221);  
     3145            if (state.failed) return current; 
     3146            if ( state.backtracking==0 ) { 
     3147               current =iv_ruleRuleCombinator;  
     3148            } 
     3149            match(input,EOF,FOLLOW_EOF_in_entryRuleRuleCombinator2246); if (state.failed) return current; 
    27843150 
    27853151            } 
     
    27923158            }  
    27933159        finally { 
     3160            if ( state.backtracking>0 ) { memoize(input, 23, entryRuleRuleCombinator_StartIndex); } 
    27943161        } 
    27953162        return current; 
     
    27993166 
    28003167    // $ANTLR start "ruleRuleCombinator" 
    2801     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1065:1: ruleRuleCombinator returns [EObject current=null] : ( (otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) ) ( (lv_logic_3_0= RULE_LOGIC ) ) (otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' )* (otherlv_7= ';' )? ) ; 
     3168    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1084:1: ruleRuleCombinator returns [EObject current=null] : ( (otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) ) ( (lv_logic_3_0= RULE_LOGIC ) ) (otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' )* (otherlv_7= ';' )? ) ; 
    28023169    public final EObject ruleRuleCombinator() throws RecognitionException { 
    28033170        EObject current = null; 
    2804  
     3171        int ruleRuleCombinator_StartIndex = input.index(); 
    28053172        Token otherlv_0=null; 
    28063173        Token otherlv_1=null; 
     
    28153182             
    28163183        try { 
    2817             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1068:28: ( ( (otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) ) ( (lv_logic_3_0= RULE_LOGIC ) ) (otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' )* (otherlv_7= ';' )? ) ) 
    2818             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1069:1: ( (otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) ) ( (lv_logic_3_0= RULE_LOGIC ) ) (otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' )* (otherlv_7= ';' )? ) 
    2819             { 
    2820             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1069:1: ( (otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) ) ( (lv_logic_3_0= RULE_LOGIC ) ) (otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' )* (otherlv_7= ';' )? ) 
    2821             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1069:2: (otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) ) ( (lv_logic_3_0= RULE_LOGIC ) ) (otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' )* (otherlv_7= ';' )? 
    2822             { 
    2823             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1069:2: (otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) ) 
    2824             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1069:4: otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) 
    2825             { 
    2826             otherlv_0=(Token)match(input,38,FOLLOW_38_in_ruleRuleCombinator2259);  
    2827  
    2828                         newLeafNode(otherlv_0, grammarAccess.getRuleCombinatorAccess().getRuleKeyword_0_0()); 
    2829                  
    2830             otherlv_1=(Token)match(input,37,FOLLOW_37_in_ruleRuleCombinator2271);  
    2831  
    2832                         newLeafNode(otherlv_1, grammarAccess.getRuleCombinatorAccess().getCombinatorKeyword_0_1()); 
    2833                  
    2834             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1077:1: ( (lv_name_2_0= RULE_ID ) ) 
    2835             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1078:1: (lv_name_2_0= RULE_ID ) 
    2836             { 
    2837             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1078:1: (lv_name_2_0= RULE_ID ) 
    2838             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1079:3: lv_name_2_0= RULE_ID 
    2839             { 
    2840             lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRuleCombinator2288);  
    2841  
    2842                                 newLeafNode(lv_name_2_0, grammarAccess.getRuleCombinatorAccess().getNameIDTerminalRuleCall_0_2_0());  
    2843                          
    2844  
    2845                         if (current==null) { 
    2846                             current = createModelElement(grammarAccess.getRuleCombinatorRule()); 
    2847                         } 
    2848                                 setWithLastConsumed( 
    2849                                         current,  
    2850                                         "name", 
    2851                                 lv_name_2_0,  
    2852                                 "ID"); 
    2853                      
    2854  
    2855             } 
    2856  
    2857  
    2858             } 
    2859  
    2860  
    2861             } 
    2862  
    2863             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1095:3: ( (lv_logic_3_0= RULE_LOGIC ) ) 
    2864             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1096:1: (lv_logic_3_0= RULE_LOGIC ) 
    2865             { 
    2866             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1096:1: (lv_logic_3_0= RULE_LOGIC ) 
    2867             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1097:3: lv_logic_3_0= RULE_LOGIC 
    2868             { 
    2869             lv_logic_3_0=(Token)match(input,RULE_LOGIC,FOLLOW_RULE_LOGIC_in_ruleRuleCombinator2311);  
    2870  
    2871                                 newLeafNode(lv_logic_3_0, grammarAccess.getRuleCombinatorAccess().getLogicLOGICTerminalRuleCall_1_0());  
    2872                          
    2873  
    2874                         if (current==null) { 
    2875                             current = createModelElement(grammarAccess.getRuleCombinatorRule()); 
    2876                         } 
    2877                                 setWithLastConsumed( 
    2878                                         current,  
    2879                                         "logic", 
    2880                                 lv_logic_3_0,  
    2881                                 "LOGIC"); 
    2882                      
    2883  
    2884             } 
    2885  
    2886  
    2887             } 
    2888  
    2889             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1113:2: (otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' )* 
     3184            if ( state.backtracking>0 && alreadyParsedRule(input, 24) ) { return current; } 
     3185            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1087:28: ( ( (otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) ) ( (lv_logic_3_0= RULE_LOGIC ) ) (otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' )* (otherlv_7= ';' )? ) ) 
     3186            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1088:1: ( (otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) ) ( (lv_logic_3_0= RULE_LOGIC ) ) (otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' )* (otherlv_7= ';' )? ) 
     3187            { 
     3188            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1088:1: ( (otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) ) ( (lv_logic_3_0= RULE_LOGIC ) ) (otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' )* (otherlv_7= ';' )? ) 
     3189            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1088:2: (otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) ) ( (lv_logic_3_0= RULE_LOGIC ) ) (otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' )* (otherlv_7= ';' )? 
     3190            { 
     3191            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1088:2: (otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) ) 
     3192            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1088:4: otherlv_0= 'rule' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) 
     3193            { 
     3194            otherlv_0=(Token)match(input,38,FOLLOW_38_in_ruleRuleCombinator2284); if (state.failed) return current; 
     3195            if ( state.backtracking==0 ) { 
     3196 
     3197                        newLeafNode(otherlv_0, grammarAccess.getRuleCombinatorAccess().getRuleKeyword_0_0()); 
     3198                   
     3199            } 
     3200            otherlv_1=(Token)match(input,37,FOLLOW_37_in_ruleRuleCombinator2296); if (state.failed) return current; 
     3201            if ( state.backtracking==0 ) { 
     3202 
     3203                        newLeafNode(otherlv_1, grammarAccess.getRuleCombinatorAccess().getCombinatorKeyword_0_1()); 
     3204                   
     3205            } 
     3206            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1096:1: ( (lv_name_2_0= RULE_ID ) ) 
     3207            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1097:1: (lv_name_2_0= RULE_ID ) 
     3208            { 
     3209            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1097:1: (lv_name_2_0= RULE_ID ) 
     3210            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1098:3: lv_name_2_0= RULE_ID 
     3211            { 
     3212            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRuleCombinator2313); if (state.failed) return current; 
     3213            if ( state.backtracking==0 ) { 
     3214 
     3215                                newLeafNode(lv_name_2_0, grammarAccess.getRuleCombinatorAccess().getNameIDTerminalRuleCall_0_2_0());  
     3216                         
     3217            } 
     3218            if ( state.backtracking==0 ) { 
     3219 
     3220                        if (current==null) { 
     3221                            current = createModelElement(grammarAccess.getRuleCombinatorRule()); 
     3222                        } 
     3223                                setWithLastConsumed( 
     3224                                        current,  
     3225                                        "name", 
     3226                                lv_name_2_0,  
     3227                                "ID"); 
     3228                     
     3229            } 
     3230 
     3231            } 
     3232 
     3233 
     3234            } 
     3235 
     3236 
     3237            } 
     3238 
     3239            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1114:3: ( (lv_logic_3_0= RULE_LOGIC ) ) 
     3240            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1115:1: (lv_logic_3_0= RULE_LOGIC ) 
     3241            { 
     3242            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1115:1: (lv_logic_3_0= RULE_LOGIC ) 
     3243            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1116:3: lv_logic_3_0= RULE_LOGIC 
     3244            { 
     3245            lv_logic_3_0=(Token)match(input,RULE_LOGIC,FOLLOW_RULE_LOGIC_in_ruleRuleCombinator2336); if (state.failed) return current; 
     3246            if ( state.backtracking==0 ) { 
     3247 
     3248                                newLeafNode(lv_logic_3_0, grammarAccess.getRuleCombinatorAccess().getLogicLOGICTerminalRuleCall_1_0());  
     3249                         
     3250            } 
     3251            if ( state.backtracking==0 ) { 
     3252 
     3253                        if (current==null) { 
     3254                            current = createModelElement(grammarAccess.getRuleCombinatorRule()); 
     3255                        } 
     3256                                setWithLastConsumed( 
     3257                                        current,  
     3258                                        "logic", 
     3259                                lv_logic_3_0,  
     3260                                "LOGIC"); 
     3261                     
     3262            } 
     3263 
     3264            } 
     3265 
     3266 
     3267            } 
     3268 
     3269            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1132:2: (otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' )* 
    28903270            loop26: 
    28913271            do { 
     
    29003280                switch (alt26) { 
    29013281                case 1 : 
    2902                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1113:4: otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' 
     3282                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1132:4: otherlv_4= '(' ( (lv_LABEL_5_0= RULE_STRING ) ) otherlv_6= ')' 
    29033283                    { 
    2904                     otherlv_4=(Token)match(input,26,FOLLOW_26_in_ruleRuleCombinator2329);  
    2905  
    2906                                 newLeafNode(otherlv_4, grammarAccess.getRuleCombinatorAccess().getLeftParenthesisKeyword_2_0()); 
    2907                          
    2908                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1117:1: ( (lv_LABEL_5_0= RULE_STRING ) ) 
    2909                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1118:1: (lv_LABEL_5_0= RULE_STRING ) 
     3284                    otherlv_4=(Token)match(input,26,FOLLOW_26_in_ruleRuleCombinator2354); if (state.failed) return current; 
     3285                    if ( state.backtracking==0 ) { 
     3286 
     3287                                newLeafNode(otherlv_4, grammarAccess.getRuleCombinatorAccess().getLeftParenthesisKeyword_2_0()); 
     3288                           
     3289                    } 
     3290                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1136:1: ( (lv_LABEL_5_0= RULE_STRING ) ) 
     3291                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1137:1: (lv_LABEL_5_0= RULE_STRING ) 
    29103292                    { 
    2911                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1118:1: (lv_LABEL_5_0= RULE_STRING ) 
    2912                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1119:3: lv_LABEL_5_0= RULE_STRING 
     3293                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1137:1: (lv_LABEL_5_0= RULE_STRING ) 
     3294                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1138:3: lv_LABEL_5_0= RULE_STRING 
    29133295                    { 
    2914                     lv_LABEL_5_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleRuleCombinator2346);  
    2915  
    2916                                         newLeafNode(lv_LABEL_5_0, grammarAccess.getRuleCombinatorAccess().getLABELSTRINGTerminalRuleCall_2_1_0());  
    2917                                  
    2918  
    2919                                 if (current==null) { 
    2920                                     current = createModelElement(grammarAccess.getRuleCombinatorRule()); 
    2921                                 } 
    2922                                         addWithLastConsumed( 
    2923                                                 current,  
    2924                                                 "LABEL", 
    2925                                         lv_LABEL_5_0,  
    2926                                         "STRING"); 
    2927                              
    2928  
     3296                    lv_LABEL_5_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleRuleCombinator2371); if (state.failed) return current; 
     3297                    if ( state.backtracking==0 ) { 
     3298 
     3299                                        newLeafNode(lv_LABEL_5_0, grammarAccess.getRuleCombinatorAccess().getLABELSTRINGTerminalRuleCall_2_1_0());  
     3300                                 
    29293301                    } 
    2930  
    2931  
     3302                    if ( state.backtracking==0 ) { 
     3303 
     3304                                if (current==null) { 
     3305                                    current = createModelElement(grammarAccess.getRuleCombinatorRule()); 
     3306                                } 
     3307                                        addWithLastConsumed( 
     3308                                                current,  
     3309                                                "LABEL", 
     3310                                        lv_LABEL_5_0,  
     3311                                        "STRING"); 
     3312                             
    29323313                    } 
    29333314 
    2934                     otherlv_6=(Token)match(input,27,FOLLOW_27_in_ruleRuleCombinator2363);  
    2935  
    2936                                 newLeafNode(otherlv_6, grammarAccess.getRuleCombinatorAccess().getRightParenthesisKeyword_2_2()); 
    2937                          
     3315                    } 
     3316 
     3317 
     3318                    } 
     3319 
     3320                    otherlv_6=(Token)match(input,27,FOLLOW_27_in_ruleRuleCombinator2388); if (state.failed) return current; 
     3321                    if ( state.backtracking==0 ) { 
     3322 
     3323                                newLeafNode(otherlv_6, grammarAccess.getRuleCombinatorAccess().getRightParenthesisKeyword_2_2()); 
     3324                           
     3325                    } 
    29383326 
    29393327                    } 
     
    29453333            } while (true); 
    29463334 
    2947             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1139:3: (otherlv_7= ';' )? 
     3335            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1158:3: (otherlv_7= ';' )? 
    29483336            int alt27=2; 
    29493337            int LA27_0 = input.LA(1); 
     
    29543342            switch (alt27) { 
    29553343                case 1 : 
    2956                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1139:5: otherlv_7= ';' 
    2957                     { 
    2958                     otherlv_7=(Token)match(input,15,FOLLOW_15_in_ruleRuleCombinator2378);  
    2959  
    2960                                 newLeafNode(otherlv_7, grammarAccess.getRuleCombinatorAccess().getSemicolonKeyword_3()); 
    2961                          
     3344                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1158:5: otherlv_7= ';' 
     3345                    { 
     3346                    otherlv_7=(Token)match(input,15,FOLLOW_15_in_ruleRuleCombinator2403); if (state.failed) return current; 
     3347                    if ( state.backtracking==0 ) { 
     3348 
     3349                                newLeafNode(otherlv_7, grammarAccess.getRuleCombinatorAccess().getSemicolonKeyword_3()); 
     3350                           
     3351                    } 
    29623352 
    29633353                    } 
     
    29723362            } 
    29733363 
    2974              leaveRule();  
     3364            if ( state.backtracking==0 ) { 
     3365               leaveRule();  
     3366            } 
    29753367        } 
    29763368          
     
    29803372            }  
    29813373        finally { 
     3374            if ( state.backtracking>0 ) { memoize(input, 24, ruleRuleCombinator_StartIndex); } 
    29823375        } 
    29833376        return current; 
     
    29873380 
    29883381    // $ANTLR start "entryRuleHookCombinator" 
    2989     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1151:1: entryRuleHookCombinator returns [EObject current=null] : iv_ruleHookCombinator= ruleHookCombinator EOF ; 
     3382    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1170:1: entryRuleHookCombinator returns [EObject current=null] : iv_ruleHookCombinator= ruleHookCombinator EOF ; 
    29903383    public final EObject entryRuleHookCombinator() throws RecognitionException { 
    29913384        EObject current = null; 
    2992  
     3385        int entryRuleHookCombinator_StartIndex = input.index(); 
    29933386        EObject iv_ruleHookCombinator = null; 
    29943387 
    29953388 
    29963389        try { 
    2997             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1152:2: (iv_ruleHookCombinator= ruleHookCombinator EOF ) 
    2998             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1153:2: iv_ruleHookCombinator= ruleHookCombinator EOF 
    2999             { 
    3000              newCompositeNode(grammarAccess.getHookCombinatorRule());  
    3001             pushFollow(FOLLOW_ruleHookCombinator_in_entryRuleHookCombinator2416); 
     3390            if ( state.backtracking>0 && alreadyParsedRule(input, 25) ) { return current; } 
     3391            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1171:2: (iv_ruleHookCombinator= ruleHookCombinator EOF ) 
     3392            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1172:2: iv_ruleHookCombinator= ruleHookCombinator EOF 
     3393            { 
     3394            if ( state.backtracking==0 ) { 
     3395               newCompositeNode(grammarAccess.getHookCombinatorRule());  
     3396            } 
     3397            pushFollow(FOLLOW_ruleHookCombinator_in_entryRuleHookCombinator2441); 
    30023398            iv_ruleHookCombinator=ruleHookCombinator(); 
    30033399 
    30043400            state._fsp--; 
    3005  
    3006              current =iv_ruleHookCombinator;  
    3007             match(input,EOF,FOLLOW_EOF_in_entryRuleHookCombinator2426);  
     3401            if (state.failed) return current; 
     3402            if ( state.backtracking==0 ) { 
     3403               current =iv_ruleHookCombinator;  
     3404            } 
     3405            match(input,EOF,FOLLOW_EOF_in_entryRuleHookCombinator2451); if (state.failed) return current; 
    30083406 
    30093407            } 
     
    30163414            }  
    30173415        finally { 
     3416            if ( state.backtracking>0 ) { memoize(input, 25, entryRuleHookCombinator_StartIndex); } 
    30183417        } 
    30193418        return current; 
     
    30233422 
    30243423    // $ANTLR start "ruleHookCombinator" 
    3025     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1160:1: ruleHookCombinator returns [EObject current=null] : (otherlv_0= 'hook' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_ruleext_4_0= RULE_INT ) ) otherlv_5= ')' ( (lv_logic_6_0= RULE_LOGIC ) )? (otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' )+ (otherlv_10= ';' )? ) ; 
     3424    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1179:1: ruleHookCombinator returns [EObject current=null] : (otherlv_0= 'hook' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_ruleext_4_0= RULE_INT ) ) otherlv_5= ')' ( (lv_logic_6_0= RULE_LOGIC ) )? (otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' )+ (otherlv_10= ';' )? ) ; 
    30263425    public final EObject ruleHookCombinator() throws RecognitionException { 
    30273426        EObject current = null; 
    3028  
     3427        int ruleHookCombinator_StartIndex = input.index(); 
    30293428        Token otherlv_0=null; 
    30303429        Token otherlv_1=null; 
     
    30423441             
    30433442        try { 
    3044             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1163:28: ( (otherlv_0= 'hook' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_ruleext_4_0= RULE_INT ) ) otherlv_5= ')' ( (lv_logic_6_0= RULE_LOGIC ) )? (otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' )+ (otherlv_10= ';' )? ) ) 
    3045             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1164:1: (otherlv_0= 'hook' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_ruleext_4_0= RULE_INT ) ) otherlv_5= ')' ( (lv_logic_6_0= RULE_LOGIC ) )? (otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' )+ (otherlv_10= ';' )? ) 
    3046             { 
    3047             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1164:1: (otherlv_0= 'hook' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_ruleext_4_0= RULE_INT ) ) otherlv_5= ')' ( (lv_logic_6_0= RULE_LOGIC ) )? (otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' )+ (otherlv_10= ';' )? ) 
    3048             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1164:3: otherlv_0= 'hook' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_ruleext_4_0= RULE_INT ) ) otherlv_5= ')' ( (lv_logic_6_0= RULE_LOGIC ) )? (otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' )+ (otherlv_10= ';' )? 
    3049             { 
    3050             otherlv_0=(Token)match(input,39,FOLLOW_39_in_ruleHookCombinator2463);  
    3051  
    3052                         newLeafNode(otherlv_0, grammarAccess.getHookCombinatorAccess().getHookKeyword_0()); 
    3053                  
    3054             otherlv_1=(Token)match(input,37,FOLLOW_37_in_ruleHookCombinator2475);  
    3055  
    3056                         newLeafNode(otherlv_1, grammarAccess.getHookCombinatorAccess().getCombinatorKeyword_1()); 
    3057                  
    3058             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1172:1: ( (lv_name_2_0= RULE_ID ) ) 
    3059             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1173:1: (lv_name_2_0= RULE_ID ) 
    3060             { 
    3061             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1173:1: (lv_name_2_0= RULE_ID ) 
    3062             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1174:3: lv_name_2_0= RULE_ID 
    3063             { 
    3064             lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleHookCombinator2492);  
    3065  
    3066                                 newLeafNode(lv_name_2_0, grammarAccess.getHookCombinatorAccess().getNameIDTerminalRuleCall_2_0());  
    3067                          
    3068  
    3069                         if (current==null) { 
    3070                             current = createModelElement(grammarAccess.getHookCombinatorRule()); 
    3071                         } 
    3072                                 setWithLastConsumed( 
    3073                                         current,  
    3074                                         "name", 
    3075                                 lv_name_2_0,  
    3076                                 "ID"); 
    3077                      
    3078  
    3079             } 
    3080  
    3081  
    3082             } 
    3083  
    3084             otherlv_3=(Token)match(input,26,FOLLOW_26_in_ruleHookCombinator2509);  
    3085  
    3086                         newLeafNode(otherlv_3, grammarAccess.getHookCombinatorAccess().getLeftParenthesisKeyword_3()); 
    3087                  
    3088             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1194:1: ( (lv_ruleext_4_0= RULE_INT ) ) 
    3089             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1195:1: (lv_ruleext_4_0= RULE_INT ) 
    3090             { 
    3091             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1195:1: (lv_ruleext_4_0= RULE_INT ) 
    3092             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1196:3: lv_ruleext_4_0= RULE_INT 
    3093             { 
    3094             lv_ruleext_4_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleHookCombinator2526);  
    3095  
    3096                                 newLeafNode(lv_ruleext_4_0, grammarAccess.getHookCombinatorAccess().getRuleextINTTerminalRuleCall_4_0());  
    3097                          
    3098  
    3099                         if (current==null) { 
    3100                             current = createModelElement(grammarAccess.getHookCombinatorRule()); 
    3101                         } 
    3102                                 setWithLastConsumed( 
    3103                                         current,  
    3104                                         "ruleext", 
    3105                                 lv_ruleext_4_0,  
    3106                                 "INT"); 
    3107                      
    3108  
    3109             } 
    3110  
    3111  
    3112             } 
    3113  
    3114             otherlv_5=(Token)match(input,27,FOLLOW_27_in_ruleHookCombinator2543);  
    3115  
    3116                         newLeafNode(otherlv_5, grammarAccess.getHookCombinatorAccess().getRightParenthesisKeyword_5()); 
    3117                  
    3118             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1216:1: ( (lv_logic_6_0= RULE_LOGIC ) )? 
     3443            if ( state.backtracking>0 && alreadyParsedRule(input, 26) ) { return current; } 
     3444            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1182:28: ( (otherlv_0= 'hook' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_ruleext_4_0= RULE_INT ) ) otherlv_5= ')' ( (lv_logic_6_0= RULE_LOGIC ) )? (otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' )+ (otherlv_10= ';' )? ) ) 
     3445            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1183:1: (otherlv_0= 'hook' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_ruleext_4_0= RULE_INT ) ) otherlv_5= ')' ( (lv_logic_6_0= RULE_LOGIC ) )? (otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' )+ (otherlv_10= ';' )? ) 
     3446            { 
     3447            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1183:1: (otherlv_0= 'hook' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_ruleext_4_0= RULE_INT ) ) otherlv_5= ')' ( (lv_logic_6_0= RULE_LOGIC ) )? (otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' )+ (otherlv_10= ';' )? ) 
     3448            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1183:3: otherlv_0= 'hook' otherlv_1= 'combinator:' ( (lv_name_2_0= RULE_ID ) ) otherlv_3= '(' ( (lv_ruleext_4_0= RULE_INT ) ) otherlv_5= ')' ( (lv_logic_6_0= RULE_LOGIC ) )? (otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' )+ (otherlv_10= ';' )? 
     3449            { 
     3450            otherlv_0=(Token)match(input,39,FOLLOW_39_in_ruleHookCombinator2488); if (state.failed) return current; 
     3451            if ( state.backtracking==0 ) { 
     3452 
     3453                        newLeafNode(otherlv_0, grammarAccess.getHookCombinatorAccess().getHookKeyword_0()); 
     3454                   
     3455            } 
     3456            otherlv_1=(Token)match(input,37,FOLLOW_37_in_ruleHookCombinator2500); if (state.failed) return current; 
     3457            if ( state.backtracking==0 ) { 
     3458 
     3459                        newLeafNode(otherlv_1, grammarAccess.getHookCombinatorAccess().getCombinatorKeyword_1()); 
     3460                   
     3461            } 
     3462            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1191:1: ( (lv_name_2_0= RULE_ID ) ) 
     3463            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1192:1: (lv_name_2_0= RULE_ID ) 
     3464            { 
     3465            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1192:1: (lv_name_2_0= RULE_ID ) 
     3466            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1193:3: lv_name_2_0= RULE_ID 
     3467            { 
     3468            lv_name_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleHookCombinator2517); if (state.failed) return current; 
     3469            if ( state.backtracking==0 ) { 
     3470 
     3471                                newLeafNode(lv_name_2_0, grammarAccess.getHookCombinatorAccess().getNameIDTerminalRuleCall_2_0());  
     3472                         
     3473            } 
     3474            if ( state.backtracking==0 ) { 
     3475 
     3476                        if (current==null) { 
     3477                            current = createModelElement(grammarAccess.getHookCombinatorRule()); 
     3478                        } 
     3479                                setWithLastConsumed( 
     3480                                        current,  
     3481                                        "name", 
     3482                                lv_name_2_0,  
     3483                                "ID"); 
     3484                     
     3485            } 
     3486 
     3487            } 
     3488 
     3489 
     3490            } 
     3491 
     3492            otherlv_3=(Token)match(input,26,FOLLOW_26_in_ruleHookCombinator2534); if (state.failed) return current; 
     3493            if ( state.backtracking==0 ) { 
     3494 
     3495                        newLeafNode(otherlv_3, grammarAccess.getHookCombinatorAccess().getLeftParenthesisKeyword_3()); 
     3496                   
     3497            } 
     3498            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1213:1: ( (lv_ruleext_4_0= RULE_INT ) ) 
     3499            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1214:1: (lv_ruleext_4_0= RULE_INT ) 
     3500            { 
     3501            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1214:1: (lv_ruleext_4_0= RULE_INT ) 
     3502            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1215:3: lv_ruleext_4_0= RULE_INT 
     3503            { 
     3504            lv_ruleext_4_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleHookCombinator2551); if (state.failed) return current; 
     3505            if ( state.backtracking==0 ) { 
     3506 
     3507                                newLeafNode(lv_ruleext_4_0, grammarAccess.getHookCombinatorAccess().getRuleextINTTerminalRuleCall_4_0());  
     3508                         
     3509            } 
     3510            if ( state.backtracking==0 ) { 
     3511 
     3512                        if (current==null) { 
     3513                            current = createModelElement(grammarAccess.getHookCombinatorRule()); 
     3514                        } 
     3515                                setWithLastConsumed( 
     3516                                        current,  
     3517                                        "ruleext", 
     3518                                lv_ruleext_4_0,  
     3519                                "INT"); 
     3520                     
     3521            } 
     3522 
     3523            } 
     3524 
     3525 
     3526            } 
     3527 
     3528            otherlv_5=(Token)match(input,27,FOLLOW_27_in_ruleHookCombinator2568); if (state.failed) return current; 
     3529            if ( state.backtracking==0 ) { 
     3530 
     3531                        newLeafNode(otherlv_5, grammarAccess.getHookCombinatorAccess().getRightParenthesisKeyword_5()); 
     3532                   
     3533            } 
     3534            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1235:1: ( (lv_logic_6_0= RULE_LOGIC ) )? 
    31193535            int alt28=2; 
    31203536            int LA28_0 = input.LA(1); 
     
    31253541            switch (alt28) { 
    31263542                case 1 : 
    3127                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1217:1: (lv_logic_6_0= RULE_LOGIC ) 
    3128                     { 
    3129                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1217:1: (lv_logic_6_0= RULE_LOGIC ) 
    3130                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1218:3: lv_logic_6_0= RULE_LOGIC 
    3131                     { 
    3132                     lv_logic_6_0=(Token)match(input,RULE_LOGIC,FOLLOW_RULE_LOGIC_in_ruleHookCombinator2560);  
    3133  
    3134                                         newLeafNode(lv_logic_6_0, grammarAccess.getHookCombinatorAccess().getLogicLOGICTerminalRuleCall_6_0());  
    3135                                  
    3136  
    3137                                 if (current==null) { 
    3138                                     current = createModelElement(grammarAccess.getHookCombinatorRule()); 
    3139                                 } 
    3140                                         setWithLastConsumed( 
    3141                                                 current,  
    3142                                                 "logic", 
    3143                                         lv_logic_6_0,  
    3144                                         "LOGIC"); 
    3145                              
     3543                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1236:1: (lv_logic_6_0= RULE_LOGIC ) 
     3544                    { 
     3545                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1236:1: (lv_logic_6_0= RULE_LOGIC ) 
     3546                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1237:3: lv_logic_6_0= RULE_LOGIC 
     3547                    { 
     3548                    lv_logic_6_0=(Token)match(input,RULE_LOGIC,FOLLOW_RULE_LOGIC_in_ruleHookCombinator2585); if (state.failed) return current; 
     3549                    if ( state.backtracking==0 ) { 
     3550 
     3551                                        newLeafNode(lv_logic_6_0, grammarAccess.getHookCombinatorAccess().getLogicLOGICTerminalRuleCall_6_0());  
     3552                                 
     3553                    } 
     3554                    if ( state.backtracking==0 ) { 
     3555 
     3556                                if (current==null) { 
     3557                                    current = createModelElement(grammarAccess.getHookCombinatorRule()); 
     3558                                } 
     3559                                        setWithLastConsumed( 
     3560                                                current,  
     3561                                                "logic", 
     3562                                        lv_logic_6_0,  
     3563                                        "LOGIC"); 
     3564                             
     3565                    } 
    31463566 
    31473567                    } 
     
    31533573            } 
    31543574 
    3155             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1234:3: (otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' )+ 
     3575            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1253:3: (otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' )+ 
    31563576            int cnt29=0; 
    31573577            loop29: 
     
    31673587                switch (alt29) { 
    31683588                case 1 : 
    3169                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1234:5: otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' 
     3589                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1253:5: otherlv_7= '(' ( (lv_LABEL_8_0= RULE_STRING ) ) otherlv_9= ')' 
    31703590                    { 
    3171                     otherlv_7=(Token)match(input,26,FOLLOW_26_in_ruleHookCombinator2579);  
    3172  
    3173                                 newLeafNode(otherlv_7, grammarAccess.getHookCombinatorAccess().getLeftParenthesisKeyword_7_0()); 
    3174                          
    3175                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1238:1: ( (lv_LABEL_8_0= RULE_STRING ) ) 
    3176                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1239:1: (lv_LABEL_8_0= RULE_STRING ) 
     3591                    otherlv_7=(Token)match(input,26,FOLLOW_26_in_ruleHookCombinator2604); if (state.failed) return current; 
     3592                    if ( state.backtracking==0 ) { 
     3593 
     3594                                newLeafNode(otherlv_7, grammarAccess.getHookCombinatorAccess().getLeftParenthesisKeyword_7_0()); 
     3595                           
     3596                    } 
     3597                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1257:1: ( (lv_LABEL_8_0= RULE_STRING ) ) 
     3598                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1258:1: (lv_LABEL_8_0= RULE_STRING ) 
    31773599                    { 
    3178                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1239:1: (lv_LABEL_8_0= RULE_STRING ) 
    3179                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1240:3: lv_LABEL_8_0= RULE_STRING 
     3600                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1258:1: (lv_LABEL_8_0= RULE_STRING ) 
     3601                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1259:3: lv_LABEL_8_0= RULE_STRING 
    31803602                    { 
    3181                     lv_LABEL_8_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleHookCombinator2596);  
    3182  
    3183                                         newLeafNode(lv_LABEL_8_0, grammarAccess.getHookCombinatorAccess().getLABELSTRINGTerminalRuleCall_7_1_0());  
    3184                                  
    3185  
    3186                                 if (current==null) { 
    3187                                     current = createModelElement(grammarAccess.getHookCombinatorRule()); 
    3188                                 } 
    3189                                         addWithLastConsumed( 
    3190                                                 current,  
    3191                                                 "LABEL", 
    3192                                         lv_LABEL_8_0,  
    3193                                         "STRING"); 
    3194                              
    3195  
     3603                    lv_LABEL_8_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleHookCombinator2621); if (state.failed) return current; 
     3604                    if ( state.backtracking==0 ) { 
     3605 
     3606                                        newLeafNode(lv_LABEL_8_0, grammarAccess.getHookCombinatorAccess().getLABELSTRINGTerminalRuleCall_7_1_0());  
     3607                                 
    31963608                    } 
    3197  
    3198  
     3609                    if ( state.backtracking==0 ) { 
     3610 
     3611                                if (current==null) { 
     3612                                    current = createModelElement(grammarAccess.getHookCombinatorRule()); 
     3613                                } 
     3614                                        addWithLastConsumed( 
     3615                                                current,  
     3616                                                "LABEL", 
     3617                                        lv_LABEL_8_0,  
     3618                                        "STRING"); 
     3619                             
    31993620                    } 
    32003621 
    3201                     otherlv_9=(Token)match(input,27,FOLLOW_27_in_ruleHookCombinator2613);  
    3202  
    3203                                 newLeafNode(otherlv_9, grammarAccess.getHookCombinatorAccess().getRightParenthesisKeyword_7_2()); 
    3204                          
     3622                    } 
     3623 
     3624 
     3625                    } 
     3626 
     3627                    otherlv_9=(Token)match(input,27,FOLLOW_27_in_ruleHookCombinator2638); if (state.failed) return current; 
     3628                    if ( state.backtracking==0 ) { 
     3629 
     3630                                newLeafNode(otherlv_9, grammarAccess.getHookCombinatorAccess().getRightParenthesisKeyword_7_2()); 
     3631                           
     3632                    } 
    32053633 
    32063634                    } 
     
    32093637                default : 
    32103638                    if ( cnt29 >= 1 ) break loop29; 
     3639                    if (state.backtracking>0) {state.failed=true; return current;} 
    32113640                        EarlyExitException eee = 
    32123641                            new EarlyExitException(29, input); 
     
    32163645            } while (true); 
    32173646 
    3218             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1260:3: (otherlv_10= ';' )? 
     3647            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1279:3: (otherlv_10= ';' )? 
    32193648            int alt30=2; 
    32203649            int LA30_0 = input.LA(1); 
     
    32253654            switch (alt30) { 
    32263655                case 1 : 
    3227                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1260:5: otherlv_10= ';' 
    3228                     { 
    3229                     otherlv_10=(Token)match(input,15,FOLLOW_15_in_ruleHookCombinator2628);  
    3230  
    3231                                 newLeafNode(otherlv_10, grammarAccess.getHookCombinatorAccess().getSemicolonKeyword_8()); 
    3232                          
     3656                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1279:5: otherlv_10= ';' 
     3657                    { 
     3658                    otherlv_10=(Token)match(input,15,FOLLOW_15_in_ruleHookCombinator2653); if (state.failed) return current; 
     3659                    if ( state.backtracking==0 ) { 
     3660 
     3661                                newLeafNode(otherlv_10, grammarAccess.getHookCombinatorAccess().getSemicolonKeyword_8()); 
     3662                           
     3663                    } 
    32333664 
    32343665                    } 
     
    32433674            } 
    32443675 
    3245              leaveRule();  
     3676            if ( state.backtracking==0 ) { 
     3677               leaveRule();  
     3678            } 
    32463679        } 
    32473680          
     
    32513684            }  
    32523685        finally { 
     3686            if ( state.backtracking>0 ) { memoize(input, 26, ruleHookCombinator_StartIndex); } 
    32533687        } 
    32543688        return current; 
     
    32583692 
    32593693    // $ANTLR start "entryRuleDefinitionList" 
    3260     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1272:1: entryRuleDefinitionList returns [EObject current=null] : iv_ruleDefinitionList= ruleDefinitionList EOF ; 
     3694    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1291:1: entryRuleDefinitionList returns [EObject current=null] : iv_ruleDefinitionList= ruleDefinitionList EOF ; 
    32613695    public final EObject entryRuleDefinitionList() throws RecognitionException { 
    32623696        EObject current = null; 
    3263  
     3697        int entryRuleDefinitionList_StartIndex = input.index(); 
    32643698        EObject iv_ruleDefinitionList = null; 
    32653699 
    32663700 
    32673701        try { 
    3268             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1273:2: (iv_ruleDefinitionList= ruleDefinitionList EOF ) 
    3269             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1274:2: iv_ruleDefinitionList= ruleDefinitionList EOF 
    3270             { 
    3271              newCompositeNode(grammarAccess.getDefinitionListRule());  
    3272             pushFollow(FOLLOW_ruleDefinitionList_in_entryRuleDefinitionList2666); 
     3702            if ( state.backtracking>0 && alreadyParsedRule(input, 27) ) { return current; } 
     3703            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1292:2: (iv_ruleDefinitionList= ruleDefinitionList EOF ) 
     3704            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1293:2: iv_ruleDefinitionList= ruleDefinitionList EOF 
     3705            { 
     3706            if ( state.backtracking==0 ) { 
     3707               newCompositeNode(grammarAccess.getDefinitionListRule());  
     3708            } 
     3709            pushFollow(FOLLOW_ruleDefinitionList_in_entryRuleDefinitionList2691); 
    32733710            iv_ruleDefinitionList=ruleDefinitionList(); 
    32743711 
    32753712            state._fsp--; 
    3276  
    3277              current =iv_ruleDefinitionList;  
    3278             match(input,EOF,FOLLOW_EOF_in_entryRuleDefinitionList2676);  
     3713            if (state.failed) return current; 
     3714            if ( state.backtracking==0 ) { 
     3715               current =iv_ruleDefinitionList;  
     3716            } 
     3717            match(input,EOF,FOLLOW_EOF_in_entryRuleDefinitionList2701); if (state.failed) return current; 
    32793718 
    32803719            } 
     
    32873726            }  
    32883727        finally { 
     3728            if ( state.backtracking>0 ) { memoize(input, 27, entryRuleDefinitionList_StartIndex); } 
    32893729        } 
    32903730        return current; 
     
    32943734 
    32953735    // $ANTLR start "ruleDefinitionList" 
    3296     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1281:1: ruleDefinitionList returns [EObject current=null] : ( ( (lv_singleDefinition_0_0= ruleSingleDefinition ) ) (otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) )* ) ; 
     3736    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1300:1: ruleDefinitionList returns [EObject current=null] : ( ( (lv_singleDefinition_0_0= ruleSingleDefinition ) ) (otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) )* ) ; 
    32973737    public final EObject ruleDefinitionList() throws RecognitionException { 
    32983738        EObject current = null; 
    3299  
     3739        int ruleDefinitionList_StartIndex = input.index(); 
    33003740        Token otherlv_1=null; 
    33013741        EObject lv_singleDefinition_0_0 = null; 
     
    33073747             
    33083748        try { 
    3309             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1284:28: ( ( ( (lv_singleDefinition_0_0= ruleSingleDefinition ) ) (otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) )* ) ) 
    3310             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1285:1: ( ( (lv_singleDefinition_0_0= ruleSingleDefinition ) ) (otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) )* ) 
    3311             { 
    3312             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1285:1: ( ( (lv_singleDefinition_0_0= ruleSingleDefinition ) ) (otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) )* ) 
    3313             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1285:2: ( (lv_singleDefinition_0_0= ruleSingleDefinition ) ) (otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) )* 
    3314             { 
    3315             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1285:2: ( (lv_singleDefinition_0_0= ruleSingleDefinition ) ) 
    3316             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1286:1: (lv_singleDefinition_0_0= ruleSingleDefinition ) 
    3317             { 
    3318             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1286:1: (lv_singleDefinition_0_0= ruleSingleDefinition ) 
    3319             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1287:3: lv_singleDefinition_0_0= ruleSingleDefinition 
    3320             { 
    3321               
    3322                         newCompositeNode(grammarAccess.getDefinitionListAccess().getSingleDefinitionSingleDefinitionParserRuleCall_0_0());  
    3323                      
    3324             pushFollow(FOLLOW_ruleSingleDefinition_in_ruleDefinitionList2722); 
     3749            if ( state.backtracking>0 && alreadyParsedRule(input, 28) ) { return current; } 
     3750            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1303:28: ( ( ( (lv_singleDefinition_0_0= ruleSingleDefinition ) ) (otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) )* ) ) 
     3751            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1304:1: ( ( (lv_singleDefinition_0_0= ruleSingleDefinition ) ) (otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) )* ) 
     3752            { 
     3753            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1304:1: ( ( (lv_singleDefinition_0_0= ruleSingleDefinition ) ) (otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) )* ) 
     3754            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1304:2: ( (lv_singleDefinition_0_0= ruleSingleDefinition ) ) (otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) )* 
     3755            { 
     3756            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1304:2: ( (lv_singleDefinition_0_0= ruleSingleDefinition ) ) 
     3757            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1305:1: (lv_singleDefinition_0_0= ruleSingleDefinition ) 
     3758            { 
     3759            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1305:1: (lv_singleDefinition_0_0= ruleSingleDefinition ) 
     3760            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1306:3: lv_singleDefinition_0_0= ruleSingleDefinition 
     3761            { 
     3762            if ( state.backtracking==0 ) { 
     3763                
     3764                        newCompositeNode(grammarAccess.getDefinitionListAccess().getSingleDefinitionSingleDefinitionParserRuleCall_0_0());  
     3765                     
     3766            } 
     3767            pushFollow(FOLLOW_ruleSingleDefinition_in_ruleDefinitionList2747); 
    33253768            lv_singleDefinition_0_0=ruleSingleDefinition(); 
    33263769 
    33273770            state._fsp--; 
    3328  
    3329  
    3330                         if (current==null) { 
    3331                             current = createModelElementForParent(grammarAccess.getDefinitionListRule()); 
    3332                         } 
    3333                                 add( 
    3334                                         current,  
    3335                                         "singleDefinition", 
    3336                                 lv_singleDefinition_0_0,  
    3337                                 "SingleDefinition"); 
    3338                         afterParserOrEnumRuleCall(); 
    3339                      
    3340  
    3341             } 
    3342  
    3343  
    3344             } 
    3345  
    3346             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1303:2: (otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) )* 
     3771            if (state.failed) return current; 
     3772            if ( state.backtracking==0 ) { 
     3773 
     3774                        if (current==null) { 
     3775                            current = createModelElementForParent(grammarAccess.getDefinitionListRule()); 
     3776                        } 
     3777                                add( 
     3778                                        current,  
     3779                                        "singleDefinition", 
     3780                                lv_singleDefinition_0_0,  
     3781                                "SingleDefinition"); 
     3782                        afterParserOrEnumRuleCall(); 
     3783                     
     3784            } 
     3785 
     3786            } 
     3787 
     3788 
     3789            } 
     3790 
     3791            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1322:2: (otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) )* 
    33473792            loop31: 
    33483793            do { 
     
    33573802                switch (alt31) { 
    33583803                case 1 : 
    3359                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1303:4: otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) 
     3804                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1322:4: otherlv_1= '|' ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) 
    33603805                    { 
    3361                     otherlv_1=(Token)match(input,31,FOLLOW_31_in_ruleDefinitionList2735);  
    3362  
    3363                                 newLeafNode(otherlv_1, grammarAccess.getDefinitionListAccess().getVerticalLineKeyword_1_0()); 
    3364                          
    3365                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1307:1: ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) 
    3366                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1308:1: (lv_singleDefinition_2_0= ruleSingleDefinition ) 
     3806                    otherlv_1=(Token)match(input,31,FOLLOW_31_in_ruleDefinitionList2760); if (state.failed) return current; 
     3807                    if ( state.backtracking==0 ) { 
     3808 
     3809                                newLeafNode(otherlv_1, grammarAccess.getDefinitionListAccess().getVerticalLineKeyword_1_0()); 
     3810                           
     3811                    } 
     3812                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1326:1: ( (lv_singleDefinition_2_0= ruleSingleDefinition ) ) 
     3813                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1327:1: (lv_singleDefinition_2_0= ruleSingleDefinition ) 
    33673814                    { 
    3368                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1308:1: (lv_singleDefinition_2_0= ruleSingleDefinition ) 
    3369                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1309:3: lv_singleDefinition_2_0= ruleSingleDefinition 
     3815                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1327:1: (lv_singleDefinition_2_0= ruleSingleDefinition ) 
     3816                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1328:3: lv_singleDefinition_2_0= ruleSingleDefinition 
    33703817                    { 
    3371                       
    3372                                 newCompositeNode(grammarAccess.getDefinitionListAccess().getSingleDefinitionSingleDefinitionParserRuleCall_1_1_0());  
    3373                              
    3374                     pushFollow(FOLLOW_ruleSingleDefinition_in_ruleDefinitionList2756); 
     3818                    if ( state.backtracking==0 ) { 
     3819                        
     3820                                newCompositeNode(grammarAccess.getDefinitionListAccess().getSingleDefinitionSingleDefinitionParserRuleCall_1_1_0());  
     3821                             
     3822                    } 
     3823                    pushFollow(FOLLOW_ruleSingleDefinition_in_ruleDefinitionList2781); 
    33753824                    lv_singleDefinition_2_0=ruleSingleDefinition(); 
    33763825 
    33773826                    state._fsp--; 
    3378  
    3379  
    3380                                 if (current==null) { 
    3381                                     current = createModelElementForParent(grammarAccess.getDefinitionListRule()); 
    3382                                 } 
    3383                                         add( 
    3384                                                 current,  
    3385                                                 "singleDefinition", 
    3386                                         lv_singleDefinition_2_0,  
    3387                                         "SingleDefinition"); 
    3388                                 afterParserOrEnumRuleCall(); 
    3389                              
     3827                    if (state.failed) return current; 
     3828                    if ( state.backtracking==0 ) { 
     3829 
     3830                                if (current==null) { 
     3831                                    current = createModelElementForParent(grammarAccess.getDefinitionListRule()); 
     3832                                } 
     3833                                        add( 
     3834                                                current,  
     3835                                                "singleDefinition", 
     3836                                        lv_singleDefinition_2_0,  
     3837                                        "SingleDefinition"); 
     3838                                afterParserOrEnumRuleCall(); 
     3839                             
     3840                    } 
    33903841 
    33913842                    } 
     
    34093860            } 
    34103861 
    3411              leaveRule();  
     3862            if ( state.backtracking==0 ) { 
     3863               leaveRule();  
     3864            } 
    34123865        } 
    34133866          
     
    34173870            }  
    34183871        finally { 
     3872            if ( state.backtracking>0 ) { memoize(input, 28, ruleDefinitionList_StartIndex); } 
    34193873        } 
    34203874        return current; 
     
    34243878 
    34253879    // $ANTLR start "entryRuleSingleDefinition" 
    3426     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1333:1: entryRuleSingleDefinition returns [EObject current=null] : iv_ruleSingleDefinition= ruleSingleDefinition EOF ; 
     3880    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1352:1: entryRuleSingleDefinition returns [EObject current=null] : iv_ruleSingleDefinition= ruleSingleDefinition EOF ; 
    34273881    public final EObject entryRuleSingleDefinition() throws RecognitionException { 
    34283882        EObject current = null; 
    3429  
     3883        int entryRuleSingleDefinition_StartIndex = input.index(); 
    34303884        EObject iv_ruleSingleDefinition = null; 
    34313885 
    34323886 
    34333887        try { 
    3434             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1334:2: (iv_ruleSingleDefinition= ruleSingleDefinition EOF ) 
    3435             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1335:2: iv_ruleSingleDefinition= ruleSingleDefinition EOF 
    3436             { 
    3437              newCompositeNode(grammarAccess.getSingleDefinitionRule());  
    3438             pushFollow(FOLLOW_ruleSingleDefinition_in_entryRuleSingleDefinition2794); 
     3888            if ( state.backtracking>0 && alreadyParsedRule(input, 29) ) { return current; } 
     3889            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1353:2: (iv_ruleSingleDefinition= ruleSingleDefinition EOF ) 
     3890            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1354:2: iv_ruleSingleDefinition= ruleSingleDefinition EOF 
     3891            { 
     3892            if ( state.backtracking==0 ) { 
     3893               newCompositeNode(grammarAccess.getSingleDefinitionRule());  
     3894            } 
     3895            pushFollow(FOLLOW_ruleSingleDefinition_in_entryRuleSingleDefinition2819); 
    34393896            iv_ruleSingleDefinition=ruleSingleDefinition(); 
    34403897 
    34413898            state._fsp--; 
    3442  
    3443              current =iv_ruleSingleDefinition;  
    3444             match(input,EOF,FOLLOW_EOF_in_entryRuleSingleDefinition2804);  
     3899            if (state.failed) return current; 
     3900            if ( state.backtracking==0 ) { 
     3901               current =iv_ruleSingleDefinition;  
     3902            } 
     3903            match(input,EOF,FOLLOW_EOF_in_entryRuleSingleDefinition2829); if (state.failed) return current; 
    34453904 
    34463905            } 
     
    34533912            }  
    34543913        finally { 
     3914            if ( state.backtracking>0 ) { memoize(input, 29, entryRuleSingleDefinition_StartIndex); } 
    34553915        } 
    34563916        return current; 
     
    34603920 
    34613921    // $ANTLR start "ruleSingleDefinition" 
    3462     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1342:1: ruleSingleDefinition returns [EObject current=null] : ( (lv_terms_0_0= ruleTerm ) )+ ; 
     3922    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1361:1: ruleSingleDefinition returns [EObject current=null] : ( (lv_terms_0_0= ruleTerm ) )+ ; 
    34633923    public final EObject ruleSingleDefinition() throws RecognitionException { 
    34643924        EObject current = null; 
    3465  
     3925        int ruleSingleDefinition_StartIndex = input.index(); 
    34663926        EObject lv_terms_0_0 = null; 
    34673927 
     
    34703930             
    34713931        try { 
    3472             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1345:28: ( ( (lv_terms_0_0= ruleTerm ) )+ ) 
    3473             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1346:1: ( (lv_terms_0_0= ruleTerm ) )+ 
    3474             { 
    3475             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1346:1: ( (lv_terms_0_0= ruleTerm ) )+ 
     3932            if ( state.backtracking>0 && alreadyParsedRule(input, 30) ) { return current; } 
     3933            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1364:28: ( ( (lv_terms_0_0= ruleTerm ) )+ ) 
     3934            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1365:1: ( (lv_terms_0_0= ruleTerm ) )+ 
     3935            { 
     3936            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1365:1: ( (lv_terms_0_0= ruleTerm ) )+ 
    34763937            int cnt32=0; 
    34773938            loop32: 
     
    35053966                switch (alt32) { 
    35063967                case 1 : 
    3507                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1347:1: (lv_terms_0_0= ruleTerm ) 
     3968                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1366:1: (lv_terms_0_0= ruleTerm ) 
    35083969                    { 
    3509                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1347:1: (lv_terms_0_0= ruleTerm ) 
    3510                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1348:3: lv_terms_0_0= ruleTerm 
     3970                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1366:1: (lv_terms_0_0= ruleTerm ) 
     3971                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1367:3: lv_terms_0_0= ruleTerm 
    35113972                    { 
    3512                       
    3513                                 newCompositeNode(grammarAccess.getSingleDefinitionAccess().getTermsTermParserRuleCall_0());  
    3514                              
    3515                     pushFollow(FOLLOW_ruleTerm_in_ruleSingleDefinition2849); 
     3973                    if ( state.backtracking==0 ) { 
     3974                        
     3975                                newCompositeNode(grammarAccess.getSingleDefinitionAccess().getTermsTermParserRuleCall_0());  
     3976                             
     3977                    } 
     3978                    pushFollow(FOLLOW_ruleTerm_in_ruleSingleDefinition2874); 
    35163979                    lv_terms_0_0=ruleTerm(); 
    35173980 
    35183981                    state._fsp--; 
    3519  
    3520  
    3521                                 if (current==null) { 
    3522                                     current = createModelElementForParent(grammarAccess.getSingleDefinitionRule()); 
    3523                                 } 
    3524                                         add( 
    3525                                                 current,  
    3526                                                 "terms", 
    3527                                         lv_terms_0_0,  
    3528                                         "Term"); 
    3529                                 afterParserOrEnumRuleCall(); 
    3530                              
     3982                    if (state.failed) return current; 
     3983                    if ( state.backtracking==0 ) { 
     3984 
     3985                                if (current==null) { 
     3986                                    current = createModelElementForParent(grammarAccess.getSingleDefinitionRule()); 
     3987                                } 
     3988                                        add( 
     3989                                                current,  
     3990                                                "terms", 
     3991                                        lv_terms_0_0,  
     3992                                        "Term"); 
     3993                                afterParserOrEnumRuleCall(); 
     3994                             
     3995                    } 
    35313996 
    35323997                    } 
     
    35384003                default : 
    35394004                    if ( cnt32 >= 1 ) break loop32; 
     4005                    if (state.backtracking>0) {state.failed=true; return current;} 
    35404006                        EarlyExitException eee = 
    35414007                            new EarlyExitException(32, input); 
     
    35484014            } 
    35494015 
    3550              leaveRule();  
     4016            if ( state.backtracking==0 ) { 
     4017               leaveRule();  
     4018            } 
    35514019        } 
    35524020          
     
    35564024            }  
    35574025        finally { 
     4026            if ( state.backtracking>0 ) { memoize(input, 30, ruleSingleDefinition_StartIndex); } 
    35584027        } 
    35594028        return current; 
     
    35634032 
    35644033    // $ANTLR start "entryRuleTerm" 
    3565     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1372:1: entryRuleTerm returns [EObject current=null] : iv_ruleTerm= ruleTerm EOF ; 
     4034    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1391:1: entryRuleTerm returns [EObject current=null] : iv_ruleTerm= ruleTerm EOF ; 
    35664035    public final EObject entryRuleTerm() throws RecognitionException { 
    35674036        EObject current = null; 
    3568  
     4037        int entryRuleTerm_StartIndex = input.index(); 
    35694038        EObject iv_ruleTerm = null; 
    35704039 
    35714040 
    35724041        try { 
    3573             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1373:2: (iv_ruleTerm= ruleTerm EOF ) 
    3574             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1374:2: iv_ruleTerm= ruleTerm EOF 
    3575             { 
    3576              newCompositeNode(grammarAccess.getTermRule());  
    3577             pushFollow(FOLLOW_ruleTerm_in_entryRuleTerm2885); 
     4042            if ( state.backtracking>0 && alreadyParsedRule(input, 31) ) { return current; } 
     4043            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1392:2: (iv_ruleTerm= ruleTerm EOF ) 
     4044            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1393:2: iv_ruleTerm= ruleTerm EOF 
     4045            { 
     4046            if ( state.backtracking==0 ) { 
     4047               newCompositeNode(grammarAccess.getTermRule());  
     4048            } 
     4049            pushFollow(FOLLOW_ruleTerm_in_entryRuleTerm2910); 
    35784050            iv_ruleTerm=ruleTerm(); 
    35794051 
    35804052            state._fsp--; 
    3581  
    3582              current =iv_ruleTerm;  
    3583             match(input,EOF,FOLLOW_EOF_in_entryRuleTerm2895);  
     4053            if (state.failed) return current; 
     4054            if ( state.backtracking==0 ) { 
     4055               current =iv_ruleTerm;  
     4056            } 
     4057            match(input,EOF,FOLLOW_EOF_in_entryRuleTerm2920); if (state.failed) return current; 
    35844058 
    35854059            } 
     
    35924066            }  
    35934067        finally { 
     4068            if ( state.backtracking>0 ) { memoize(input, 31, entryRuleTerm_StartIndex); } 
    35944069        } 
    35954070        return current; 
     
    35994074 
    36004075    // $ANTLR start "ruleTerm" 
    3601     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1381:1: ruleTerm returns [EObject current=null] : ( ( (lv_termAtom_0_0= ruleAtom ) ) | ( (lv_termGroupedSequence_1_0= ruleGroupedSequence ) ) | ( (lv_termOptionalSequence_2_0= ruleOptionalSequence ) ) | ( (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) ) ) ; 
     4076    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1400:1: ruleTerm returns [EObject current=null] : ( ( (lv_termAtom_0_0= ruleAtom ) ) | ( (lv_termGroupedSequence_1_0= ruleGroupedSequence ) ) | ( (lv_termOptionalSequence_2_0= ruleOptionalSequence ) ) | ( (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) ) ) ; 
    36024077    public final EObject ruleTerm() throws RecognitionException { 
    36034078        EObject current = null; 
    3604  
     4079        int ruleTerm_StartIndex = input.index(); 
    36054080        EObject lv_termAtom_0_0 = null; 
    36064081 
     
    36154090             
    36164091        try { 
    3617             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1384:28: ( ( ( (lv_termAtom_0_0= ruleAtom ) ) | ( (lv_termGroupedSequence_1_0= ruleGroupedSequence ) ) | ( (lv_termOptionalSequence_2_0= ruleOptionalSequence ) ) | ( (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) ) ) ) 
    3618             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1385:1: ( ( (lv_termAtom_0_0= ruleAtom ) ) | ( (lv_termGroupedSequence_1_0= ruleGroupedSequence ) ) | ( (lv_termOptionalSequence_2_0= ruleOptionalSequence ) ) | ( (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) ) ) 
    3619             { 
    3620             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1385:1: ( ( (lv_termAtom_0_0= ruleAtom ) ) | ( (lv_termGroupedSequence_1_0= ruleGroupedSequence ) ) | ( (lv_termOptionalSequence_2_0= ruleOptionalSequence ) ) | ( (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) ) ) 
     4092            if ( state.backtracking>0 && alreadyParsedRule(input, 32) ) { return current; } 
     4093            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1403:28: ( ( ( (lv_termAtom_0_0= ruleAtom ) ) | ( (lv_termGroupedSequence_1_0= ruleGroupedSequence ) ) | ( (lv_termOptionalSequence_2_0= ruleOptionalSequence ) ) | ( (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) ) ) ) 
     4094            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1404:1: ( ( (lv_termAtom_0_0= ruleAtom ) ) | ( (lv_termGroupedSequence_1_0= ruleGroupedSequence ) ) | ( (lv_termOptionalSequence_2_0= ruleOptionalSequence ) ) | ( (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) ) ) 
     4095            { 
     4096            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1404:1: ( ( (lv_termAtom_0_0= ruleAtom ) ) | ( (lv_termGroupedSequence_1_0= ruleGroupedSequence ) ) | ( (lv_termOptionalSequence_2_0= ruleOptionalSequence ) ) | ( (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) ) ) 
    36214097            int alt33=4; 
    36224098            switch ( input.LA(1) ) { 
     
    36444120                break; 
    36454121            default: 
     4122                if (state.backtracking>0) {state.failed=true; return current;} 
    36464123                NoViableAltException nvae = 
    36474124                    new NoViableAltException("", 33, 0, input); 
     
    36524129            switch (alt33) { 
    36534130                case 1 : 
    3654                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1385:2: ( (lv_termAtom_0_0= ruleAtom ) ) 
    3655                     { 
    3656                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1385:2: ( (lv_termAtom_0_0= ruleAtom ) ) 
    3657                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1386:1: (lv_termAtom_0_0= ruleAtom ) 
    3658                     { 
    3659                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1386:1: (lv_termAtom_0_0= ruleAtom ) 
    3660                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1387:3: lv_termAtom_0_0= ruleAtom 
    3661                     { 
    3662                       
    3663                                 newCompositeNode(grammarAccess.getTermAccess().getTermAtomAtomParserRuleCall_0_0());  
    3664                              
    3665                     pushFollow(FOLLOW_ruleAtom_in_ruleTerm2941); 
     4131                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1404:2: ( (lv_termAtom_0_0= ruleAtom ) ) 
     4132                    { 
     4133                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1404:2: ( (lv_termAtom_0_0= ruleAtom ) ) 
     4134                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1405:1: (lv_termAtom_0_0= ruleAtom ) 
     4135                    { 
     4136                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1405:1: (lv_termAtom_0_0= ruleAtom ) 
     4137                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1406:3: lv_termAtom_0_0= ruleAtom 
     4138                    { 
     4139                    if ( state.backtracking==0 ) { 
     4140                        
     4141                                newCompositeNode(grammarAccess.getTermAccess().getTermAtomAtomParserRuleCall_0_0());  
     4142                             
     4143                    } 
     4144                    pushFollow(FOLLOW_ruleAtom_in_ruleTerm2966); 
    36664145                    lv_termAtom_0_0=ruleAtom(); 
    36674146 
    36684147                    state._fsp--; 
    3669  
    3670  
    3671                                 if (current==null) { 
    3672                                     current = createModelElementForParent(grammarAccess.getTermRule()); 
    3673                                 } 
    3674                                         set( 
    3675                                                 current,  
    3676                                                 "termAtom", 
    3677                                         lv_termAtom_0_0,  
    3678                                         "Atom"); 
    3679                                 afterParserOrEnumRuleCall(); 
    3680                              
     4148                    if (state.failed) return current; 
     4149                    if ( state.backtracking==0 ) { 
     4150 
     4151                                if (current==null) { 
     4152                                    current = createModelElementForParent(grammarAccess.getTermRule()); 
     4153                                } 
     4154                                        set( 
     4155                                                current,  
     4156                                                "termAtom", 
     4157                                        lv_termAtom_0_0,  
     4158                                        "Atom"); 
     4159                                afterParserOrEnumRuleCall(); 
     4160                             
     4161                    } 
    36814162 
    36824163                    } 
     
    36894170                    break; 
    36904171                case 2 : 
    3691                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1404:6: ( (lv_termGroupedSequence_1_0= ruleGroupedSequence ) ) 
    3692                     { 
    3693                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1404:6: ( (lv_termGroupedSequence_1_0= ruleGroupedSequence ) ) 
    3694                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1405:1: (lv_termGroupedSequence_1_0= ruleGroupedSequence ) 
    3695                     { 
    3696                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1405:1: (lv_termGroupedSequence_1_0= ruleGroupedSequence ) 
    3697                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1406:3: lv_termGroupedSequence_1_0= ruleGroupedSequence 
    3698                     { 
    3699                       
    3700                                 newCompositeNode(grammarAccess.getTermAccess().getTermGroupedSequenceGroupedSequenceParserRuleCall_1_0());  
    3701                              
    3702                     pushFollow(FOLLOW_ruleGroupedSequence_in_ruleTerm2968); 
     4172                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1423:6: ( (lv_termGroupedSequence_1_0= ruleGroupedSequence ) ) 
     4173                    { 
     4174                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1423:6: ( (lv_termGroupedSequence_1_0= ruleGroupedSequence ) ) 
     4175                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1424:1: (lv_termGroupedSequence_1_0= ruleGroupedSequence ) 
     4176                    { 
     4177                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1424:1: (lv_termGroupedSequence_1_0= ruleGroupedSequence ) 
     4178                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1425:3: lv_termGroupedSequence_1_0= ruleGroupedSequence 
     4179                    { 
     4180                    if ( state.backtracking==0 ) { 
     4181                        
     4182                                newCompositeNode(grammarAccess.getTermAccess().getTermGroupedSequenceGroupedSequenceParserRuleCall_1_0());  
     4183                             
     4184                    } 
     4185                    pushFollow(FOLLOW_ruleGroupedSequence_in_ruleTerm2993); 
    37034186                    lv_termGroupedSequence_1_0=ruleGroupedSequence(); 
    37044187 
    37054188                    state._fsp--; 
    3706  
    3707  
    3708                                 if (current==null) { 
    3709                                     current = createModelElementForParent(grammarAccess.getTermRule()); 
    3710                                 } 
    3711                                         set( 
    3712                                                 current,  
    3713                                                 "termGroupedSequence", 
    3714                                         lv_termGroupedSequence_1_0,  
    3715                                         "GroupedSequence"); 
    3716                                 afterParserOrEnumRuleCall(); 
    3717                              
     4189                    if (state.failed) return current; 
     4190                    if ( state.backtracking==0 ) { 
     4191 
     4192                                if (current==null) { 
     4193                                    current = createModelElementForParent(grammarAccess.getTermRule()); 
     4194                                } 
     4195                                        set( 
     4196                                                current,  
     4197                                                "termGroupedSequence", 
     4198                                        lv_termGroupedSequence_1_0,  
     4199                                        "GroupedSequence"); 
     4200                                afterParserOrEnumRuleCall(); 
     4201                             
     4202                    } 
    37184203 
    37194204                    } 
     
    37264211                    break; 
    37274212                case 3 : 
    3728                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1423:6: ( (lv_termOptionalSequence_2_0= ruleOptionalSequence ) ) 
    3729                     { 
    3730                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1423:6: ( (lv_termOptionalSequence_2_0= ruleOptionalSequence ) ) 
    3731                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1424:1: (lv_termOptionalSequence_2_0= ruleOptionalSequence ) 
    3732                     { 
    3733                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1424:1: (lv_termOptionalSequence_2_0= ruleOptionalSequence ) 
    3734                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1425:3: lv_termOptionalSequence_2_0= ruleOptionalSequence 
    3735                     { 
    3736                       
    3737                                 newCompositeNode(grammarAccess.getTermAccess().getTermOptionalSequenceOptionalSequenceParserRuleCall_2_0());  
    3738                              
    3739                     pushFollow(FOLLOW_ruleOptionalSequence_in_ruleTerm2995); 
     4213                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1442:6: ( (lv_termOptionalSequence_2_0= ruleOptionalSequence ) ) 
     4214                    { 
     4215                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1442:6: ( (lv_termOptionalSequence_2_0= ruleOptionalSequence ) ) 
     4216                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1443:1: (lv_termOptionalSequence_2_0= ruleOptionalSequence ) 
     4217                    { 
     4218                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1443:1: (lv_termOptionalSequence_2_0= ruleOptionalSequence ) 
     4219                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1444:3: lv_termOptionalSequence_2_0= ruleOptionalSequence 
     4220                    { 
     4221                    if ( state.backtracking==0 ) { 
     4222                        
     4223                                newCompositeNode(grammarAccess.getTermAccess().getTermOptionalSequenceOptionalSequenceParserRuleCall_2_0());  
     4224                             
     4225                    } 
     4226                    pushFollow(FOLLOW_ruleOptionalSequence_in_ruleTerm3020); 
    37404227                    lv_termOptionalSequence_2_0=ruleOptionalSequence(); 
    37414228 
    37424229                    state._fsp--; 
    3743  
    3744  
    3745                                 if (current==null) { 
    3746                                     current = createModelElementForParent(grammarAccess.getTermRule()); 
    3747                                 } 
    3748                                         set( 
    3749                                                 current,  
    3750                                                 "termOptionalSequence", 
    3751                                         lv_termOptionalSequence_2_0,  
    3752                                         "OptionalSequence"); 
    3753                                 afterParserOrEnumRuleCall(); 
    3754                              
     4230                    if (state.failed) return current; 
     4231                    if ( state.backtracking==0 ) { 
     4232 
     4233                                if (current==null) { 
     4234                                    current = createModelElementForParent(grammarAccess.getTermRule()); 
     4235                                } 
     4236                                        set( 
     4237                                                current,  
     4238                                                "termOptionalSequence", 
     4239                                        lv_termOptionalSequence_2_0,  
     4240                                        "OptionalSequence"); 
     4241                                afterParserOrEnumRuleCall(); 
     4242                             
     4243                    } 
    37554244 
    37564245                    } 
     
    37634252                    break; 
    37644253                case 4 : 
    3765                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1442:6: ( (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) ) 
    3766                     { 
    3767                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1442:6: ( (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) ) 
    3768                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1443:1: (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) 
    3769                     { 
    3770                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1443:1: (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) 
    3771                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1444:3: lv_termRepeatedSequence_3_0= ruleRepeatedSequence 
    3772                     { 
    3773                       
    3774                                 newCompositeNode(grammarAccess.getTermAccess().getTermRepeatedSequenceRepeatedSequenceParserRuleCall_3_0());  
    3775                              
    3776                     pushFollow(FOLLOW_ruleRepeatedSequence_in_ruleTerm3022); 
     4254                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1461:6: ( (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) ) 
     4255                    { 
     4256                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1461:6: ( (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) ) 
     4257                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1462:1: (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) 
     4258                    { 
     4259                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1462:1: (lv_termRepeatedSequence_3_0= ruleRepeatedSequence ) 
     4260                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1463:3: lv_termRepeatedSequence_3_0= ruleRepeatedSequence 
     4261                    { 
     4262                    if ( state.backtracking==0 ) { 
     4263                        
     4264                                newCompositeNode(grammarAccess.getTermAccess().getTermRepeatedSequenceRepeatedSequenceParserRuleCall_3_0());  
     4265                             
     4266                    } 
     4267                    pushFollow(FOLLOW_ruleRepeatedSequence_in_ruleTerm3047); 
    37774268                    lv_termRepeatedSequence_3_0=ruleRepeatedSequence(); 
    37784269 
    37794270                    state._fsp--; 
    3780  
    3781  
    3782                                 if (current==null) { 
    3783                                     current = createModelElementForParent(grammarAccess.getTermRule()); 
    3784                                 } 
    3785                                         set( 
    3786                                                 current,  
    3787                                                 "termRepeatedSequence", 
    3788                                         lv_termRepeatedSequence_3_0,  
    3789                                         "RepeatedSequence"); 
    3790                                 afterParserOrEnumRuleCall(); 
    3791                              
     4271                    if (state.failed) return current; 
     4272                    if ( state.backtracking==0 ) { 
     4273 
     4274                                if (current==null) { 
     4275                                    current = createModelElementForParent(grammarAccess.getTermRule()); 
     4276                                } 
     4277                                        set( 
     4278                                                current,  
     4279                                                "termRepeatedSequence", 
     4280                                        lv_termRepeatedSequence_3_0,  
     4281                                        "RepeatedSequence"); 
     4282                                afterParserOrEnumRuleCall(); 
     4283                             
     4284                    } 
    37924285 
    37934286                    } 
     
    38054298            } 
    38064299 
    3807              leaveRule();  
     4300            if ( state.backtracking==0 ) { 
     4301               leaveRule();  
     4302            } 
    38084303        } 
    38094304          
     
    38134308            }  
    38144309        finally { 
     4310            if ( state.backtracking>0 ) { memoize(input, 32, ruleTerm_StartIndex); } 
    38154311        } 
    38164312        return current; 
     
    38204316 
    38214317    // $ANTLR start "entryRuleAtom" 
    3822     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1468:1: entryRuleAtom returns [EObject current=null] : iv_ruleAtom= ruleAtom EOF ; 
     4318    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1487:1: entryRuleAtom returns [EObject current=null] : iv_ruleAtom= ruleAtom EOF ; 
    38234319    public final EObject entryRuleAtom() throws RecognitionException { 
    38244320        EObject current = null; 
    3825  
     4321        int entryRuleAtom_StartIndex = input.index(); 
    38264322        EObject iv_ruleAtom = null; 
    38274323 
    38284324 
    38294325        try { 
    3830             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1469:2: (iv_ruleAtom= ruleAtom EOF ) 
    3831             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1470:2: iv_ruleAtom= ruleAtom EOF 
    3832             { 
    3833              newCompositeNode(grammarAccess.getAtomRule());  
    3834             pushFollow(FOLLOW_ruleAtom_in_entryRuleAtom3058); 
     4326            if ( state.backtracking>0 && alreadyParsedRule(input, 33) ) { return current; } 
     4327            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1488:2: (iv_ruleAtom= ruleAtom EOF ) 
     4328            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1489:2: iv_ruleAtom= ruleAtom EOF 
     4329            { 
     4330            if ( state.backtracking==0 ) { 
     4331               newCompositeNode(grammarAccess.getAtomRule());  
     4332            } 
     4333            pushFollow(FOLLOW_ruleAtom_in_entryRuleAtom3083); 
    38354334            iv_ruleAtom=ruleAtom(); 
    38364335 
    38374336            state._fsp--; 
    3838  
    3839              current =iv_ruleAtom;  
    3840             match(input,EOF,FOLLOW_EOF_in_entryRuleAtom3068);  
     4337            if (state.failed) return current; 
     4338            if ( state.backtracking==0 ) { 
     4339               current =iv_ruleAtom;  
     4340            } 
     4341            match(input,EOF,FOLLOW_EOF_in_entryRuleAtom3093); if (state.failed) return current; 
    38414342 
    38424343            } 
     
    38494350            }  
    38504351        finally { 
     4352            if ( state.backtracking>0 ) { memoize(input, 33, entryRuleAtom_StartIndex); } 
    38514353        } 
    38524354        return current; 
     
    38564358 
    38574359    // $ANTLR start "ruleAtom" 
    3858     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1477:1: ruleAtom returns [EObject current=null] : ( ( (lv_atomStringRule_0_0= ruleStringRule ) ) | ( (lv_atomRuleReference_1_0= ruleRuleReference ) ) ) ; 
     4360    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1496:1: ruleAtom returns [EObject current=null] : ( ( (lv_atomStringRule_0_0= ruleStringRule ) ) | ( (lv_atomRuleReference_1_0= ruleRuleReference ) ) ) ; 
    38594361    public final EObject ruleAtom() throws RecognitionException { 
    38604362        EObject current = null; 
    3861  
     4363        int ruleAtom_StartIndex = input.index(); 
    38624364        EObject lv_atomStringRule_0_0 = null; 
    38634365 
     
    38684370             
    38694371        try { 
    3870             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1480:28: ( ( ( (lv_atomStringRule_0_0= ruleStringRule ) ) | ( (lv_atomRuleReference_1_0= ruleRuleReference ) ) ) ) 
    3871             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1481:1: ( ( (lv_atomStringRule_0_0= ruleStringRule ) ) | ( (lv_atomRuleReference_1_0= ruleRuleReference ) ) ) 
    3872             { 
    3873             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1481:1: ( ( (lv_atomStringRule_0_0= ruleStringRule ) ) | ( (lv_atomRuleReference_1_0= ruleRuleReference ) ) ) 
     4372            if ( state.backtracking>0 && alreadyParsedRule(input, 34) ) { return current; } 
     4373            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1499:28: ( ( ( (lv_atomStringRule_0_0= ruleStringRule ) ) | ( (lv_atomRuleReference_1_0= ruleRuleReference ) ) ) ) 
     4374            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1500:1: ( ( (lv_atomStringRule_0_0= ruleStringRule ) ) | ( (lv_atomRuleReference_1_0= ruleRuleReference ) ) ) 
     4375            { 
     4376            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1500:1: ( ( (lv_atomStringRule_0_0= ruleStringRule ) ) | ( (lv_atomRuleReference_1_0= ruleRuleReference ) ) ) 
    38744377            int alt34=2; 
    38754378            int LA34_0 = input.LA(1); 
     
    38824385            } 
    38834386            else { 
     4387                if (state.backtracking>0) {state.failed=true; return current;} 
    38844388                NoViableAltException nvae = 
    38854389                    new NoViableAltException("", 34, 0, input); 
     
    38894393            switch (alt34) { 
    38904394                case 1 : 
    3891                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1481:2: ( (lv_atomStringRule_0_0= ruleStringRule ) ) 
    3892                     { 
    3893                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1481:2: ( (lv_atomStringRule_0_0= ruleStringRule ) ) 
    3894                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1482:1: (lv_atomStringRule_0_0= ruleStringRule ) 
    3895                     { 
    3896                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1482:1: (lv_atomStringRule_0_0= ruleStringRule ) 
    3897                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1483:3: lv_atomStringRule_0_0= ruleStringRule 
    3898                     { 
    3899                       
    3900                                 newCompositeNode(grammarAccess.getAtomAccess().getAtomStringRuleStringRuleParserRuleCall_0_0());  
    3901                              
    3902                     pushFollow(FOLLOW_ruleStringRule_in_ruleAtom3114); 
     4395                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1500:2: ( (lv_atomStringRule_0_0= ruleStringRule ) ) 
     4396                    { 
     4397                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1500:2: ( (lv_atomStringRule_0_0= ruleStringRule ) ) 
     4398                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1501:1: (lv_atomStringRule_0_0= ruleStringRule ) 
     4399                    { 
     4400                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1501:1: (lv_atomStringRule_0_0= ruleStringRule ) 
     4401                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1502:3: lv_atomStringRule_0_0= ruleStringRule 
     4402                    { 
     4403                    if ( state.backtracking==0 ) { 
     4404                        
     4405                                newCompositeNode(grammarAccess.getAtomAccess().getAtomStringRuleStringRuleParserRuleCall_0_0());  
     4406                             
     4407                    } 
     4408                    pushFollow(FOLLOW_ruleStringRule_in_ruleAtom3139); 
    39034409                    lv_atomStringRule_0_0=ruleStringRule(); 
    39044410 
    39054411                    state._fsp--; 
    3906  
    3907  
    3908                                 if (current==null) { 
    3909                                     current = createModelElementForParent(grammarAccess.getAtomRule()); 
    3910                                 } 
    3911                                         set( 
    3912                                                 current,  
    3913                                                 "atomStringRule", 
    3914                                         lv_atomStringRule_0_0,  
    3915                                         "StringRule"); 
    3916                                 afterParserOrEnumRuleCall(); 
    3917                              
     4412                    if (state.failed) return current; 
     4413                    if ( state.backtracking==0 ) { 
     4414 
     4415                                if (current==null) { 
     4416                                    current = createModelElementForParent(grammarAccess.getAtomRule()); 
     4417                                } 
     4418                                        set( 
     4419                                                current,  
     4420                                                "atomStringRule", 
     4421                                        lv_atomStringRule_0_0,  
     4422                                        "StringRule"); 
     4423                                afterParserOrEnumRuleCall(); 
     4424                             
     4425                    } 
    39184426 
    39194427                    } 
     
    39264434                    break; 
    39274435                case 2 : 
    3928                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1500:6: ( (lv_atomRuleReference_1_0= ruleRuleReference ) ) 
    3929                     { 
    3930                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1500:6: ( (lv_atomRuleReference_1_0= ruleRuleReference ) ) 
    3931                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1501:1: (lv_atomRuleReference_1_0= ruleRuleReference ) 
    3932                     { 
    3933                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1501:1: (lv_atomRuleReference_1_0= ruleRuleReference ) 
    3934                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1502:3: lv_atomRuleReference_1_0= ruleRuleReference 
    3935                     { 
    3936                       
    3937                                 newCompositeNode(grammarAccess.getAtomAccess().getAtomRuleReferenceRuleReferenceParserRuleCall_1_0());  
    3938                              
    3939                     pushFollow(FOLLOW_ruleRuleReference_in_ruleAtom3141); 
     4436                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1519:6: ( (lv_atomRuleReference_1_0= ruleRuleReference ) ) 
     4437                    { 
     4438                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1519:6: ( (lv_atomRuleReference_1_0= ruleRuleReference ) ) 
     4439                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1520:1: (lv_atomRuleReference_1_0= ruleRuleReference ) 
     4440                    { 
     4441                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1520:1: (lv_atomRuleReference_1_0= ruleRuleReference ) 
     4442                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1521:3: lv_atomRuleReference_1_0= ruleRuleReference 
     4443                    { 
     4444                    if ( state.backtracking==0 ) { 
     4445                        
     4446                                newCompositeNode(grammarAccess.getAtomAccess().getAtomRuleReferenceRuleReferenceParserRuleCall_1_0());  
     4447                             
     4448                    } 
     4449                    pushFollow(FOLLOW_ruleRuleReference_in_ruleAtom3166); 
    39404450                    lv_atomRuleReference_1_0=ruleRuleReference(); 
    39414451 
    39424452                    state._fsp--; 
    3943  
    3944  
    3945                                 if (current==null) { 
    3946                                     current = createModelElementForParent(grammarAccess.getAtomRule()); 
    3947                                 } 
    3948                                         set( 
    3949                                                 current,  
    3950                                                 "atomRuleReference", 
    3951                                         lv_atomRuleReference_1_0,  
    3952                                         "RuleReference"); 
    3953                                 afterParserOrEnumRuleCall(); 
    3954                              
     4453                    if (state.failed) return current; 
     4454                    if ( state.backtracking==0 ) { 
     4455 
     4456                                if (current==null) { 
     4457                                    current = createModelElementForParent(grammarAccess.getAtomRule()); 
     4458                                } 
     4459                                        set( 
     4460                                                current,  
     4461                                                "atomRuleReference", 
     4462                                        lv_atomRuleReference_1_0,  
     4463                                        "RuleReference"); 
     4464                                afterParserOrEnumRuleCall(); 
     4465                             
     4466                    } 
    39554467 
    39564468                    } 
     
    39684480            } 
    39694481 
    3970              leaveRule();  
     4482            if ( state.backtracking==0 ) { 
     4483               leaveRule();  
     4484            } 
    39714485        } 
    39724486          
     
    39764490            }  
    39774491        finally { 
     4492            if ( state.backtracking>0 ) { memoize(input, 34, ruleAtom_StartIndex); } 
    39784493        } 
    39794494        return current; 
     
    39834498 
    39844499    // $ANTLR start "entryRuleRuleReference" 
    3985     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1526:1: entryRuleRuleReference returns [EObject current=null] : iv_ruleRuleReference= ruleRuleReference EOF ; 
     4500    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1545:1: entryRuleRuleReference returns [EObject current=null] : iv_ruleRuleReference= ruleRuleReference EOF ; 
    39864501    public final EObject entryRuleRuleReference() throws RecognitionException { 
    39874502        EObject current = null; 
    3988  
     4503        int entryRuleRuleReference_StartIndex = input.index(); 
    39894504        EObject iv_ruleRuleReference = null; 
    39904505 
    39914506 
    39924507        try { 
    3993             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1527:2: (iv_ruleRuleReference= ruleRuleReference EOF ) 
    3994             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1528:2: iv_ruleRuleReference= ruleRuleReference EOF 
    3995             { 
    3996              newCompositeNode(grammarAccess.getRuleReferenceRule());  
    3997             pushFollow(FOLLOW_ruleRuleReference_in_entryRuleRuleReference3177); 
     4508            if ( state.backtracking>0 && alreadyParsedRule(input, 35) ) { return current; } 
     4509            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1546:2: (iv_ruleRuleReference= ruleRuleReference EOF ) 
     4510            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1547:2: iv_ruleRuleReference= ruleRuleReference EOF 
     4511            { 
     4512            if ( state.backtracking==0 ) { 
     4513               newCompositeNode(grammarAccess.getRuleReferenceRule());  
     4514            } 
     4515            pushFollow(FOLLOW_ruleRuleReference_in_entryRuleRuleReference3202); 
    39984516            iv_ruleRuleReference=ruleRuleReference(); 
    39994517 
    40004518            state._fsp--; 
    4001  
    4002              current =iv_ruleRuleReference;  
    4003             match(input,EOF,FOLLOW_EOF_in_entryRuleRuleReference3187);  
     4519            if (state.failed) return current; 
     4520            if ( state.backtracking==0 ) { 
     4521               current =iv_ruleRuleReference;  
     4522            } 
     4523            match(input,EOF,FOLLOW_EOF_in_entryRuleRuleReference3212); if (state.failed) return current; 
    40044524 
    40054525            } 
     
    40124532            }  
    40134533        finally { 
     4534            if ( state.backtracking>0 ) { memoize(input, 35, entryRuleRuleReference_StartIndex); } 
    40144535        } 
    40154536        return current; 
     
    40194540 
    40204541    // $ANTLR start "ruleRuleReference" 
    4021     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1535:1: ruleRuleReference returns [EObject current=null] : ( (otherlv_0= RULE_ID ) ) ; 
     4542    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1554:1: ruleRuleReference returns [EObject current=null] : ( (otherlv_0= RULE_ID ) ) ; 
    40224543    public final EObject ruleRuleReference() throws RecognitionException { 
    40234544        EObject current = null; 
    4024  
     4545        int ruleRuleReference_StartIndex = input.index(); 
    40254546        Token otherlv_0=null; 
    40264547 
     
    40284549             
    40294550        try { 
    4030             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1538:28: ( ( (otherlv_0= RULE_ID ) ) ) 
    4031             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1539:1: ( (otherlv_0= RULE_ID ) ) 
    4032             { 
    4033             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1539:1: ( (otherlv_0= RULE_ID ) ) 
    4034             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1540:1: (otherlv_0= RULE_ID ) 
    4035             { 
    4036             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1540:1: (otherlv_0= RULE_ID ) 
    4037             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1541:3: otherlv_0= RULE_ID 
    4038             { 
    4039  
    4040                                 if (current==null) { 
    4041                             current = createModelElement(grammarAccess.getRuleReferenceRule()); 
    4042                         } 
    4043                      
    4044             otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRuleReference3231);  
    4045  
    4046                         newLeafNode(otherlv_0, grammarAccess.getRuleReferenceAccess().getRulerefRuleCrossReference_0());  
    4047                  
    4048  
    4049             } 
    4050  
    4051  
    4052             } 
    4053  
    4054  
    4055             } 
    4056  
    4057              leaveRule();  
     4551            if ( state.backtracking>0 && alreadyParsedRule(input, 36) ) { return current; } 
     4552            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1557:28: ( ( (otherlv_0= RULE_ID ) ) ) 
     4553            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1558:1: ( (otherlv_0= RULE_ID ) ) 
     4554            { 
     4555            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1558:1: ( (otherlv_0= RULE_ID ) ) 
     4556            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1559:1: (otherlv_0= RULE_ID ) 
     4557            { 
     4558            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1559:1: (otherlv_0= RULE_ID ) 
     4559            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1560:3: otherlv_0= RULE_ID 
     4560            { 
     4561            if ( state.backtracking==0 ) { 
     4562                
     4563                          /* */  
     4564                         
     4565            } 
     4566            if ( state.backtracking==0 ) { 
     4567 
     4568                                if (current==null) { 
     4569                            current = createModelElement(grammarAccess.getRuleReferenceRule()); 
     4570                        } 
     4571                       
     4572            } 
     4573            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRuleReference3260); if (state.failed) return current; 
     4574            if ( state.backtracking==0 ) { 
     4575 
     4576                        newLeafNode(otherlv_0, grammarAccess.getRuleReferenceAccess().getRulerefRuleCrossReference_0());  
     4577                 
     4578            } 
     4579 
     4580            } 
     4581 
     4582 
     4583            } 
     4584 
     4585 
     4586            } 
     4587 
     4588            if ( state.backtracking==0 ) { 
     4589               leaveRule();  
     4590            } 
    40584591        } 
    40594592          
     
    40634596            }  
    40644597        finally { 
     4598            if ( state.backtracking>0 ) { memoize(input, 36, ruleRuleReference_StartIndex); } 
    40654599        } 
    40664600        return current; 
     
    40704604 
    40714605    // $ANTLR start "entryRuleStringRule" 
    4072     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1560:1: entryRuleStringRule returns [EObject current=null] : iv_ruleStringRule= ruleStringRule EOF ; 
     4606    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1582:1: entryRuleStringRule returns [EObject current=null] : iv_ruleStringRule= ruleStringRule EOF ; 
    40734607    public final EObject entryRuleStringRule() throws RecognitionException { 
    40744608        EObject current = null; 
    4075  
     4609        int entryRuleStringRule_StartIndex = input.index(); 
    40764610        EObject iv_ruleStringRule = null; 
    40774611 
    40784612 
    40794613        try { 
    4080             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1561:2: (iv_ruleStringRule= ruleStringRule EOF ) 
    4081             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1562:2: iv_ruleStringRule= ruleStringRule EOF 
    4082             { 
    4083              newCompositeNode(grammarAccess.getStringRuleRule());  
    4084             pushFollow(FOLLOW_ruleStringRule_in_entryRuleStringRule3266); 
     4614            if ( state.backtracking>0 && alreadyParsedRule(input, 37) ) { return current; } 
     4615            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1583:2: (iv_ruleStringRule= ruleStringRule EOF ) 
     4616            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1584:2: iv_ruleStringRule= ruleStringRule EOF 
     4617            { 
     4618            if ( state.backtracking==0 ) { 
     4619               newCompositeNode(grammarAccess.getStringRuleRule());  
     4620            } 
     4621            pushFollow(FOLLOW_ruleStringRule_in_entryRuleStringRule3295); 
    40854622            iv_ruleStringRule=ruleStringRule(); 
    40864623 
    40874624            state._fsp--; 
    4088  
    4089              current =iv_ruleStringRule;  
    4090             match(input,EOF,FOLLOW_EOF_in_entryRuleStringRule3276);  
     4625            if (state.failed) return current; 
     4626            if ( state.backtracking==0 ) { 
     4627               current =iv_ruleStringRule;  
     4628            } 
     4629            match(input,EOF,FOLLOW_EOF_in_entryRuleStringRule3305); if (state.failed) return current; 
    40914630 
    40924631            } 
     
    40994638            }  
    41004639        finally { 
     4640            if ( state.backtracking>0 ) { memoize(input, 37, entryRuleStringRule_StartIndex); } 
    41014641        } 
    41024642        return current; 
     
    41064646 
    41074647    // $ANTLR start "ruleStringRule" 
    4108     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1569:1: ruleStringRule returns [EObject current=null] : ( ( (lv_literal_0_0= RULE_STRING ) ) | ( (lv_colon_1_0= RULE_COLON ) ) ) ; 
     4648    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1591:1: ruleStringRule returns [EObject current=null] : ( ( (lv_literal_0_0= RULE_STRING ) ) | ( (lv_colon_1_0= RULE_COLON ) ) ) ; 
    41094649    public final EObject ruleStringRule() throws RecognitionException { 
    41104650        EObject current = null; 
    4111  
     4651        int ruleStringRule_StartIndex = input.index(); 
    41124652        Token lv_literal_0_0=null; 
    41134653        Token lv_colon_1_0=null; 
     
    41164656             
    41174657        try { 
    4118             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1572:28: ( ( ( (lv_literal_0_0= RULE_STRING ) ) | ( (lv_colon_1_0= RULE_COLON ) ) ) ) 
    4119             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1573:1: ( ( (lv_literal_0_0= RULE_STRING ) ) | ( (lv_colon_1_0= RULE_COLON ) ) ) 
    4120             { 
    4121             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1573:1: ( ( (lv_literal_0_0= RULE_STRING ) ) | ( (lv_colon_1_0= RULE_COLON ) ) ) 
     4658            if ( state.backtracking>0 && alreadyParsedRule(input, 38) ) { return current; } 
     4659            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1594:28: ( ( ( (lv_literal_0_0= RULE_STRING ) ) | ( (lv_colon_1_0= RULE_COLON ) ) ) ) 
     4660            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1595:1: ( ( (lv_literal_0_0= RULE_STRING ) ) | ( (lv_colon_1_0= RULE_COLON ) ) ) 
     4661            { 
     4662            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1595:1: ( ( (lv_literal_0_0= RULE_STRING ) ) | ( (lv_colon_1_0= RULE_COLON ) ) ) 
    41224663            int alt35=2; 
    41234664            int LA35_0 = input.LA(1); 
     
    41304671            } 
    41314672            else { 
     4673                if (state.backtracking>0) {state.failed=true; return current;} 
    41324674                NoViableAltException nvae = 
    41334675                    new NoViableAltException("", 35, 0, input); 
     
    41374679            switch (alt35) { 
    41384680                case 1 : 
    4139                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1573:2: ( (lv_literal_0_0= RULE_STRING ) ) 
    4140                     { 
    4141                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1573:2: ( (lv_literal_0_0= RULE_STRING ) ) 
    4142                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1574:1: (lv_literal_0_0= RULE_STRING ) 
    4143                     { 
    4144                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1574:1: (lv_literal_0_0= RULE_STRING ) 
    4145                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1575:3: lv_literal_0_0= RULE_STRING 
    4146                     { 
    4147                     lv_literal_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleStringRule3318);  
    4148  
    4149                                         newLeafNode(lv_literal_0_0, grammarAccess.getStringRuleAccess().getLiteralSTRINGTerminalRuleCall_0_0());  
    4150                                  
    4151  
    4152                                 if (current==null) { 
    4153                                     current = createModelElement(grammarAccess.getStringRuleRule()); 
    4154                                 } 
    4155                                         setWithLastConsumed( 
    4156                                                 current,  
    4157                                                 "literal", 
    4158                                         lv_literal_0_0,  
    4159                                         "STRING"); 
    4160                              
     4681                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1595:2: ( (lv_literal_0_0= RULE_STRING ) ) 
     4682                    { 
     4683                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1595:2: ( (lv_literal_0_0= RULE_STRING ) ) 
     4684                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1596:1: (lv_literal_0_0= RULE_STRING ) 
     4685                    { 
     4686                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1596:1: (lv_literal_0_0= RULE_STRING ) 
     4687                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1597:3: lv_literal_0_0= RULE_STRING 
     4688                    { 
     4689                    lv_literal_0_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleStringRule3347); if (state.failed) return current; 
     4690                    if ( state.backtracking==0 ) { 
     4691 
     4692                                        newLeafNode(lv_literal_0_0, grammarAccess.getStringRuleAccess().getLiteralSTRINGTerminalRuleCall_0_0());  
     4693                                 
     4694                    } 
     4695                    if ( state.backtracking==0 ) { 
     4696 
     4697                                if (current==null) { 
     4698                                    current = createModelElement(grammarAccess.getStringRuleRule()); 
     4699                                } 
     4700                                        setWithLastConsumed( 
     4701                                                current,  
     4702                                                "literal", 
     4703                                        lv_literal_0_0,  
     4704                                        "STRING"); 
     4705                             
     4706                    } 
    41614707 
    41624708                    } 
     
    41694715                    break; 
    41704716                case 2 : 
    4171                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1592:6: ( (lv_colon_1_0= RULE_COLON ) ) 
    4172                     { 
    4173                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1592:6: ( (lv_colon_1_0= RULE_COLON ) ) 
    4174                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1593:1: (lv_colon_1_0= RULE_COLON ) 
    4175                     { 
    4176                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1593:1: (lv_colon_1_0= RULE_COLON ) 
    4177                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1594:3: lv_colon_1_0= RULE_COLON 
    4178                     { 
    4179                     lv_colon_1_0=(Token)match(input,RULE_COLON,FOLLOW_RULE_COLON_in_ruleStringRule3346);  
    4180  
    4181                                         newLeafNode(lv_colon_1_0, grammarAccess.getStringRuleAccess().getColonCOLONTerminalRuleCall_1_0());  
    4182                                  
    4183  
    4184                                 if (current==null) { 
    4185                                     current = createModelElement(grammarAccess.getStringRuleRule()); 
    4186                                 } 
    4187                                         setWithLastConsumed( 
    4188                                                 current,  
    4189                                                 "colon", 
    4190                                         lv_colon_1_0,  
    4191                                         "COLON"); 
    4192                              
     4717                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1614:6: ( (lv_colon_1_0= RULE_COLON ) ) 
     4718                    { 
     4719                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1614:6: ( (lv_colon_1_0= RULE_COLON ) ) 
     4720                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1615:1: (lv_colon_1_0= RULE_COLON ) 
     4721                    { 
     4722                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1615:1: (lv_colon_1_0= RULE_COLON ) 
     4723                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1616:3: lv_colon_1_0= RULE_COLON 
     4724                    { 
     4725                    lv_colon_1_0=(Token)match(input,RULE_COLON,FOLLOW_RULE_COLON_in_ruleStringRule3375); if (state.failed) return current; 
     4726                    if ( state.backtracking==0 ) { 
     4727 
     4728                                        newLeafNode(lv_colon_1_0, grammarAccess.getStringRuleAccess().getColonCOLONTerminalRuleCall_1_0());  
     4729                                 
     4730                    } 
     4731                    if ( state.backtracking==0 ) { 
     4732 
     4733                                if (current==null) { 
     4734                                    current = createModelElement(grammarAccess.getStringRuleRule()); 
     4735                                } 
     4736                                        setWithLastConsumed( 
     4737                                                current,  
     4738                                                "colon", 
     4739                                        lv_colon_1_0,  
     4740                                        "COLON"); 
     4741                             
     4742                    } 
    41934743 
    41944744                    } 
     
    42064756            } 
    42074757 
    4208              leaveRule();  
     4758            if ( state.backtracking==0 ) { 
     4759               leaveRule();  
     4760            } 
    42094761        } 
    42104762          
     
    42144766            }  
    42154767        finally { 
     4768            if ( state.backtracking>0 ) { memoize(input, 38, ruleStringRule_StartIndex); } 
    42164769        } 
    42174770        return current; 
     
    42214774 
    42224775    // $ANTLR start "entryRuleGroupedSequence" 
    4223     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1618:1: entryRuleGroupedSequence returns [EObject current=null] : iv_ruleGroupedSequence= ruleGroupedSequence EOF ; 
     4776    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1640:1: entryRuleGroupedSequence returns [EObject current=null] : iv_ruleGroupedSequence= ruleGroupedSequence EOF ; 
    42244777    public final EObject entryRuleGroupedSequence() throws RecognitionException { 
    42254778        EObject current = null; 
    4226  
     4779        int entryRuleGroupedSequence_StartIndex = input.index(); 
    42274780        EObject iv_ruleGroupedSequence = null; 
    42284781 
    42294782 
    42304783        try { 
    4231             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1619:2: (iv_ruleGroupedSequence= ruleGroupedSequence EOF ) 
    4232             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1620:2: iv_ruleGroupedSequence= ruleGroupedSequence EOF 
    4233             { 
    4234              newCompositeNode(grammarAccess.getGroupedSequenceRule());  
    4235             pushFollow(FOLLOW_ruleGroupedSequence_in_entryRuleGroupedSequence3387); 
     4784            if ( state.backtracking>0 && alreadyParsedRule(input, 39) ) { return current; } 
     4785            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1641:2: (iv_ruleGroupedSequence= ruleGroupedSequence EOF ) 
     4786            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1642:2: iv_ruleGroupedSequence= ruleGroupedSequence EOF 
     4787            { 
     4788            if ( state.backtracking==0 ) { 
     4789               newCompositeNode(grammarAccess.getGroupedSequenceRule());  
     4790            } 
     4791            pushFollow(FOLLOW_ruleGroupedSequence_in_entryRuleGroupedSequence3416); 
    42364792            iv_ruleGroupedSequence=ruleGroupedSequence(); 
    42374793 
    42384794            state._fsp--; 
    4239  
    4240              current =iv_ruleGroupedSequence;  
    4241             match(input,EOF,FOLLOW_EOF_in_entryRuleGroupedSequence3397);  
     4795            if (state.failed) return current; 
     4796            if ( state.backtracking==0 ) { 
     4797               current =iv_ruleGroupedSequence;  
     4798            } 
     4799            match(input,EOF,FOLLOW_EOF_in_entryRuleGroupedSequence3426); if (state.failed) return current; 
    42424800 
    42434801            } 
     
    42504808            }  
    42514809        finally { 
     4810            if ( state.backtracking>0 ) { memoize(input, 39, entryRuleGroupedSequence_StartIndex); } 
    42524811        } 
    42534812        return current; 
     
    42574816 
    42584817    // $ANTLR start "ruleGroupedSequence" 
    4259     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1627:1: ruleGroupedSequence returns [EObject current=null] : (otherlv_0= '(' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ')' ) ; 
     4818    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1649:1: ruleGroupedSequence returns [EObject current=null] : (otherlv_0= '(' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ')' ) ; 
    42604819    public final EObject ruleGroupedSequence() throws RecognitionException { 
    42614820        EObject current = null; 
    4262  
     4821        int ruleGroupedSequence_StartIndex = input.index(); 
    42634822        Token otherlv_0=null; 
    42644823        Token otherlv_2=null; 
     
    42694828             
    42704829        try { 
    4271             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1630:28: ( (otherlv_0= '(' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ')' ) ) 
    4272             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1631:1: (otherlv_0= '(' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ')' ) 
    4273             { 
    4274             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1631:1: (otherlv_0= '(' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ')' ) 
    4275             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1631:3: otherlv_0= '(' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ')' 
    4276             { 
    4277             otherlv_0=(Token)match(input,26,FOLLOW_26_in_ruleGroupedSequence3434);  
    4278  
    4279                         newLeafNode(otherlv_0, grammarAccess.getGroupedSequenceAccess().getLeftParenthesisKeyword_0()); 
    4280                  
    4281             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1635:1: ( (lv_definitionList_1_0= ruleDefinitionList ) ) 
    4282             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1636:1: (lv_definitionList_1_0= ruleDefinitionList ) 
    4283             { 
    4284             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1636:1: (lv_definitionList_1_0= ruleDefinitionList ) 
    4285             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1637:3: lv_definitionList_1_0= ruleDefinitionList 
    4286             { 
    4287               
    4288                         newCompositeNode(grammarAccess.getGroupedSequenceAccess().getDefinitionListDefinitionListParserRuleCall_1_0());  
    4289                      
    4290             pushFollow(FOLLOW_ruleDefinitionList_in_ruleGroupedSequence3455); 
     4830            if ( state.backtracking>0 && alreadyParsedRule(input, 40) ) { return current; } 
     4831            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1652:28: ( (otherlv_0= '(' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ')' ) ) 
     4832            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1653:1: (otherlv_0= '(' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ')' ) 
     4833            { 
     4834            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1653:1: (otherlv_0= '(' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ')' ) 
     4835            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1653:3: otherlv_0= '(' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ')' 
     4836            { 
     4837            otherlv_0=(Token)match(input,26,FOLLOW_26_in_ruleGroupedSequence3463); if (state.failed) return current; 
     4838            if ( state.backtracking==0 ) { 
     4839 
     4840                        newLeafNode(otherlv_0, grammarAccess.getGroupedSequenceAccess().getLeftParenthesisKeyword_0()); 
     4841                   
     4842            } 
     4843            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1657:1: ( (lv_definitionList_1_0= ruleDefinitionList ) ) 
     4844            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1658:1: (lv_definitionList_1_0= ruleDefinitionList ) 
     4845            { 
     4846            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1658:1: (lv_definitionList_1_0= ruleDefinitionList ) 
     4847            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1659:3: lv_definitionList_1_0= ruleDefinitionList 
     4848            { 
     4849            if ( state.backtracking==0 ) { 
     4850                
     4851                        newCompositeNode(grammarAccess.getGroupedSequenceAccess().getDefinitionListDefinitionListParserRuleCall_1_0());  
     4852                     
     4853            } 
     4854            pushFollow(FOLLOW_ruleDefinitionList_in_ruleGroupedSequence3484); 
    42914855            lv_definitionList_1_0=ruleDefinitionList(); 
    42924856 
    42934857            state._fsp--; 
    4294  
    4295  
    4296                         if (current==null) { 
    4297                             current = createModelElementForParent(grammarAccess.getGroupedSequenceRule()); 
    4298                         } 
    4299                                 add( 
    4300                                         current,  
    4301                                         "definitionList", 
    4302                                 lv_definitionList_1_0,  
    4303                                 "DefinitionList"); 
    4304                         afterParserOrEnumRuleCall(); 
    4305                      
    4306  
    4307             } 
    4308  
    4309  
    4310             } 
    4311  
    4312             otherlv_2=(Token)match(input,27,FOLLOW_27_in_ruleGroupedSequence3467);  
    4313  
    4314                         newLeafNode(otherlv_2, grammarAccess.getGroupedSequenceAccess().getRightParenthesisKeyword_2()); 
    4315                  
    4316  
    4317             } 
    4318  
    4319  
    4320             } 
    4321  
    4322              leaveRule();  
     4858            if (state.failed) return current; 
     4859            if ( state.backtracking==0 ) { 
     4860 
     4861                        if (current==null) { 
     4862                            current = createModelElementForParent(grammarAccess.getGroupedSequenceRule()); 
     4863                        } 
     4864                                add( 
     4865                                        current,  
     4866                                        "definitionList", 
     4867                                lv_definitionList_1_0,  
     4868                                "DefinitionList"); 
     4869                        afterParserOrEnumRuleCall(); 
     4870                     
     4871            } 
     4872 
     4873            } 
     4874 
     4875 
     4876            } 
     4877 
     4878            otherlv_2=(Token)match(input,27,FOLLOW_27_in_ruleGroupedSequence3496); if (state.failed) return current; 
     4879            if ( state.backtracking==0 ) { 
     4880 
     4881                        newLeafNode(otherlv_2, grammarAccess.getGroupedSequenceAccess().getRightParenthesisKeyword_2()); 
     4882                   
     4883            } 
     4884 
     4885            } 
     4886 
     4887 
     4888            } 
     4889 
     4890            if ( state.backtracking==0 ) { 
     4891               leaveRule();  
     4892            } 
    43234893        } 
    43244894          
     
    43284898            }  
    43294899        finally { 
     4900            if ( state.backtracking>0 ) { memoize(input, 40, ruleGroupedSequence_StartIndex); } 
    43304901        } 
    43314902        return current; 
     
    43354906 
    43364907    // $ANTLR start "entryRuleOptionalSequence" 
    4337     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1665:1: entryRuleOptionalSequence returns [EObject current=null] : iv_ruleOptionalSequence= ruleOptionalSequence EOF ; 
     4908    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1687:1: entryRuleOptionalSequence returns [EObject current=null] : iv_ruleOptionalSequence= ruleOptionalSequence EOF ; 
    43384909    public final EObject entryRuleOptionalSequence() throws RecognitionException { 
    43394910        EObject current = null; 
    4340  
     4911        int entryRuleOptionalSequence_StartIndex = input.index(); 
    43414912        EObject iv_ruleOptionalSequence = null; 
    43424913 
    43434914 
    43444915        try { 
    4345             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1666:2: (iv_ruleOptionalSequence= ruleOptionalSequence EOF ) 
    4346             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1667:2: iv_ruleOptionalSequence= ruleOptionalSequence EOF 
    4347             { 
    4348              newCompositeNode(grammarAccess.getOptionalSequenceRule());  
    4349             pushFollow(FOLLOW_ruleOptionalSequence_in_entryRuleOptionalSequence3503); 
     4916            if ( state.backtracking>0 && alreadyParsedRule(input, 41) ) { return current; } 
     4917            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1688:2: (iv_ruleOptionalSequence= ruleOptionalSequence EOF ) 
     4918            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1689:2: iv_ruleOptionalSequence= ruleOptionalSequence EOF 
     4919            { 
     4920            if ( state.backtracking==0 ) { 
     4921               newCompositeNode(grammarAccess.getOptionalSequenceRule());  
     4922            } 
     4923            pushFollow(FOLLOW_ruleOptionalSequence_in_entryRuleOptionalSequence3532); 
    43504924            iv_ruleOptionalSequence=ruleOptionalSequence(); 
    43514925 
    43524926            state._fsp--; 
    4353  
    4354              current =iv_ruleOptionalSequence;  
    4355             match(input,EOF,FOLLOW_EOF_in_entryRuleOptionalSequence3513);  
     4927            if (state.failed) return current; 
     4928            if ( state.backtracking==0 ) { 
     4929               current =iv_ruleOptionalSequence;  
     4930            } 
     4931            match(input,EOF,FOLLOW_EOF_in_entryRuleOptionalSequence3542); if (state.failed) return current; 
    43564932 
    43574933            } 
     
    43644940            }  
    43654941        finally { 
     4942            if ( state.backtracking>0 ) { memoize(input, 41, entryRuleOptionalSequence_StartIndex); } 
    43664943        } 
    43674944        return current; 
     
    43714948 
    43724949    // $ANTLR start "ruleOptionalSequence" 
    4373     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1674:1: ruleOptionalSequence returns [EObject current=null] : (otherlv_0= '[' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ']' ) ; 
     4950    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1696:1: ruleOptionalSequence returns [EObject current=null] : (otherlv_0= '[' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ']' ) ; 
    43744951    public final EObject ruleOptionalSequence() throws RecognitionException { 
    43754952        EObject current = null; 
    4376  
     4953        int ruleOptionalSequence_StartIndex = input.index(); 
    43774954        Token otherlv_0=null; 
    43784955        Token otherlv_2=null; 
     
    43834960             
    43844961        try { 
    4385             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1677:28: ( (otherlv_0= '[' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ']' ) ) 
    4386             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1678:1: (otherlv_0= '[' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ']' ) 
    4387             { 
    4388             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1678:1: (otherlv_0= '[' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ']' ) 
    4389             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1678:3: otherlv_0= '[' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ']' 
    4390             { 
    4391             otherlv_0=(Token)match(input,32,FOLLOW_32_in_ruleOptionalSequence3550);  
    4392  
    4393                         newLeafNode(otherlv_0, grammarAccess.getOptionalSequenceAccess().getLeftSquareBracketKeyword_0()); 
    4394                  
    4395             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1682:1: ( (lv_definitionList_1_0= ruleDefinitionList ) ) 
    4396             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1683:1: (lv_definitionList_1_0= ruleDefinitionList ) 
    4397             { 
    4398             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1683:1: (lv_definitionList_1_0= ruleDefinitionList ) 
    4399             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1684:3: lv_definitionList_1_0= ruleDefinitionList 
    4400             { 
    4401               
    4402                         newCompositeNode(grammarAccess.getOptionalSequenceAccess().getDefinitionListDefinitionListParserRuleCall_1_0());  
    4403                      
    4404             pushFollow(FOLLOW_ruleDefinitionList_in_ruleOptionalSequence3571); 
     4962            if ( state.backtracking>0 && alreadyParsedRule(input, 42) ) { return current; } 
     4963            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1699:28: ( (otherlv_0= '[' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ']' ) ) 
     4964            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1700:1: (otherlv_0= '[' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ']' ) 
     4965            { 
     4966            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1700:1: (otherlv_0= '[' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ']' ) 
     4967            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1700:3: otherlv_0= '[' ( (lv_definitionList_1_0= ruleDefinitionList ) ) otherlv_2= ']' 
     4968            { 
     4969            otherlv_0=(Token)match(input,32,FOLLOW_32_in_ruleOptionalSequence3579); if (state.failed) return current; 
     4970            if ( state.backtracking==0 ) { 
     4971 
     4972                        newLeafNode(otherlv_0, grammarAccess.getOptionalSequenceAccess().getLeftSquareBracketKeyword_0()); 
     4973                   
     4974            } 
     4975            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1704:1: ( (lv_definitionList_1_0= ruleDefinitionList ) ) 
     4976            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1705:1: (lv_definitionList_1_0= ruleDefinitionList ) 
     4977            { 
     4978            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1705:1: (lv_definitionList_1_0= ruleDefinitionList ) 
     4979            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1706:3: lv_definitionList_1_0= ruleDefinitionList 
     4980            { 
     4981            if ( state.backtracking==0 ) { 
     4982                
     4983                        newCompositeNode(grammarAccess.getOptionalSequenceAccess().getDefinitionListDefinitionListParserRuleCall_1_0());  
     4984                     
     4985            } 
     4986            pushFollow(FOLLOW_ruleDefinitionList_in_ruleOptionalSequence3600); 
    44054987            lv_definitionList_1_0=ruleDefinitionList(); 
    44064988 
    44074989            state._fsp--; 
    4408  
    4409  
    4410                         if (current==null) { 
    4411                             current = createModelElementForParent(grammarAccess.getOptionalSequenceRule()); 
    4412                         } 
    4413                                 add( 
    4414                                         current,  
    4415                                         "definitionList", 
    4416                                 lv_definitionList_1_0,  
    4417                                 "DefinitionList"); 
    4418                         afterParserOrEnumRuleCall(); 
    4419                      
    4420  
    4421             } 
    4422  
    4423  
    4424             } 
    4425  
    4426             otherlv_2=(Token)match(input,29,FOLLOW_29_in_ruleOptionalSequence3583);  
    4427  
    4428                         newLeafNode(otherlv_2, grammarAccess.getOptionalSequenceAccess().getRightSquareBracketKeyword_2()); 
    4429                  
    4430  
    4431             } 
    4432  
    4433  
    4434             } 
    4435  
    4436              leaveRule();  
     4990            if (state.failed) return current; 
     4991            if ( state.backtracking==0 ) { 
     4992 
     4993                        if (current==null) { 
     4994                            current = createModelElementForParent(grammarAccess.getOptionalSequenceRule()); 
     4995                        } 
     4996                                add( 
     4997                                        current,  
     4998                                        "definitionList", 
     4999                                lv_definitionList_1_0,  
     5000                                "DefinitionList"); 
     5001                        afterParserOrEnumRuleCall(); 
     5002                     
     5003            } 
     5004 
     5005            } 
     5006 
     5007 
     5008            } 
     5009 
     5010            otherlv_2=(Token)match(input,29,FOLLOW_29_in_ruleOptionalSequence3612); if (state.failed) return current; 
     5011            if ( state.backtracking==0 ) { 
     5012 
     5013                        newLeafNode(otherlv_2, grammarAccess.getOptionalSequenceAccess().getRightSquareBracketKeyword_2()); 
     5014                   
     5015            } 
     5016 
     5017            } 
     5018 
     5019 
     5020            } 
     5021 
     5022            if ( state.backtracking==0 ) { 
     5023               leaveRule();  
     5024            } 
    44375025        } 
    44385026          
     
    44425030            }  
    44435031        finally { 
     5032            if ( state.backtracking>0 ) { memoize(input, 42, ruleOptionalSequence_StartIndex); } 
    44445033        } 
    44455034        return current; 
     
    44495038 
    44505039    // $ANTLR start "entryRuleRepeatedSequence" 
    4451     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1712:1: entryRuleRepeatedSequence returns [EObject current=null] : iv_ruleRepeatedSequence= ruleRepeatedSequence EOF ; 
     5040    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1734:1: entryRuleRepeatedSequence returns [EObject current=null] : iv_ruleRepeatedSequence= ruleRepeatedSequence EOF ; 
    44525041    public final EObject entryRuleRepeatedSequence() throws RecognitionException { 
    44535042        EObject current = null; 
    4454  
     5043        int entryRuleRepeatedSequence_StartIndex = input.index(); 
    44555044        EObject iv_ruleRepeatedSequence = null; 
    44565045 
    44575046 
    44585047        try { 
    4459             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1713:2: (iv_ruleRepeatedSequence= ruleRepeatedSequence EOF ) 
    4460             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1714:2: iv_ruleRepeatedSequence= ruleRepeatedSequence EOF 
    4461             { 
    4462              newCompositeNode(grammarAccess.getRepeatedSequenceRule());  
    4463             pushFollow(FOLLOW_ruleRepeatedSequence_in_entryRuleRepeatedSequence3619); 
     5048            if ( state.backtracking>0 && alreadyParsedRule(input, 43) ) { return current; } 
     5049            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1735:2: (iv_ruleRepeatedSequence= ruleRepeatedSequence EOF ) 
     5050            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1736:2: iv_ruleRepeatedSequence= ruleRepeatedSequence EOF 
     5051            { 
     5052            if ( state.backtracking==0 ) { 
     5053               newCompositeNode(grammarAccess.getRepeatedSequenceRule());  
     5054            } 
     5055            pushFollow(FOLLOW_ruleRepeatedSequence_in_entryRuleRepeatedSequence3648); 
    44645056            iv_ruleRepeatedSequence=ruleRepeatedSequence(); 
    44655057 
    44665058            state._fsp--; 
    4467  
    4468              current =iv_ruleRepeatedSequence;  
    4469             match(input,EOF,FOLLOW_EOF_in_entryRuleRepeatedSequence3629);  
     5059            if (state.failed) return current; 
     5060            if ( state.backtracking==0 ) { 
     5061               current =iv_ruleRepeatedSequence;  
     5062            } 
     5063            match(input,EOF,FOLLOW_EOF_in_entryRuleRepeatedSequence3658); if (state.failed) return current; 
    44705064 
    44715065            } 
     
    44785072            }  
    44795073        finally { 
     5074            if ( state.backtracking>0 ) { memoize(input, 43, entryRuleRepeatedSequence_StartIndex); } 
    44805075        } 
    44815076        return current; 
     
    44855080 
    44865081    // $ANTLR start "ruleRepeatedSequence" 
    4487     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1721:1: ruleRepeatedSequence returns [EObject current=null] : (otherlv_0= '{' ( (lv_definitions_1_0= ruleDefinitionList ) ) otherlv_2= '}' ( (lv_morethanonce_3_0= '+' ) )? ) ; 
     5082    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1743:1: ruleRepeatedSequence returns [EObject current=null] : (otherlv_0= '{' ( (lv_definitions_1_0= ruleDefinitionList ) ) otherlv_2= '}' ( ( (lv_morethanonce_3_0= '+' ) )? | ( (lv_range_4_0= ruleRepeatRange ) )? ) ) ; 
    44885083    public final EObject ruleRepeatedSequence() throws RecognitionException { 
    44895084        EObject current = null; 
    4490  
     5085        int ruleRepeatedSequence_StartIndex = input.index(); 
    44915086        Token otherlv_0=null; 
    44925087        Token otherlv_2=null; 
     
    44945089        EObject lv_definitions_1_0 = null; 
    44955090 
     5091        EObject lv_range_4_0 = null; 
     5092 
    44965093 
    44975094         enterRule();  
    44985095             
    44995096        try { 
    4500             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1724:28: ( (otherlv_0= '{' ( (lv_definitions_1_0= ruleDefinitionList ) ) otherlv_2= '}' ( (lv_morethanonce_3_0= '+' ) )? ) ) 
    4501             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1725:1: (otherlv_0= '{' ( (lv_definitions_1_0= ruleDefinitionList ) ) otherlv_2= '}' ( (lv_morethanonce_3_0= '+' ) )? ) 
    4502             { 
    4503             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1725:1: (otherlv_0= '{' ( (lv_definitions_1_0= ruleDefinitionList ) ) otherlv_2= '}' ( (lv_morethanonce_3_0= '+' ) )? ) 
    4504             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1725:3: otherlv_0= '{' ( (lv_definitions_1_0= ruleDefinitionList ) ) otherlv_2= '}' ( (lv_morethanonce_3_0= '+' ) )? 
    4505             { 
    4506             otherlv_0=(Token)match(input,33,FOLLOW_33_in_ruleRepeatedSequence3666);  
    4507  
    4508                         newLeafNode(otherlv_0, grammarAccess.getRepeatedSequenceAccess().getLeftCurlyBracketKeyword_0()); 
    4509                  
    4510             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1729:1: ( (lv_definitions_1_0= ruleDefinitionList ) ) 
    4511             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1730:1: (lv_definitions_1_0= ruleDefinitionList ) 
    4512             { 
    4513             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1730:1: (lv_definitions_1_0= ruleDefinitionList ) 
    4514             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1731:3: lv_definitions_1_0= ruleDefinitionList 
    4515             { 
    4516               
    4517                         newCompositeNode(grammarAccess.getRepeatedSequenceAccess().getDefinitionsDefinitionListParserRuleCall_1_0());  
    4518                      
    4519             pushFollow(FOLLOW_ruleDefinitionList_in_ruleRepeatedSequence3687); 
     5097            if ( state.backtracking>0 && alreadyParsedRule(input, 44) ) { return current; } 
     5098            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1746:28: ( (otherlv_0= '{' ( (lv_definitions_1_0= ruleDefinitionList ) ) otherlv_2= '}' ( ( (lv_morethanonce_3_0= '+' ) )? | ( (lv_range_4_0= ruleRepeatRange ) )? ) ) ) 
     5099            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1747:1: (otherlv_0= '{' ( (lv_definitions_1_0= ruleDefinitionList ) ) otherlv_2= '}' ( ( (lv_morethanonce_3_0= '+' ) )? | ( (lv_range_4_0= ruleRepeatRange ) )? ) ) 
     5100            { 
     5101            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1747:1: (otherlv_0= '{' ( (lv_definitions_1_0= ruleDefinitionList ) ) otherlv_2= '}' ( ( (lv_morethanonce_3_0= '+' ) )? | ( (lv_range_4_0= ruleRepeatRange ) )? ) ) 
     5102            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1747:3: otherlv_0= '{' ( (lv_definitions_1_0= ruleDefinitionList ) ) otherlv_2= '}' ( ( (lv_morethanonce_3_0= '+' ) )? | ( (lv_range_4_0= ruleRepeatRange ) )? ) 
     5103            { 
     5104            otherlv_0=(Token)match(input,33,FOLLOW_33_in_ruleRepeatedSequence3695); if (state.failed) return current; 
     5105            if ( state.backtracking==0 ) { 
     5106 
     5107                        newLeafNode(otherlv_0, grammarAccess.getRepeatedSequenceAccess().getLeftCurlyBracketKeyword_0()); 
     5108                   
     5109            } 
     5110            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1751:1: ( (lv_definitions_1_0= ruleDefinitionList ) ) 
     5111            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1752:1: (lv_definitions_1_0= ruleDefinitionList ) 
     5112            { 
     5113            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1752:1: (lv_definitions_1_0= ruleDefinitionList ) 
     5114            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1753:3: lv_definitions_1_0= ruleDefinitionList 
     5115            { 
     5116            if ( state.backtracking==0 ) { 
     5117                
     5118                        newCompositeNode(grammarAccess.getRepeatedSequenceAccess().getDefinitionsDefinitionListParserRuleCall_1_0());  
     5119                     
     5120            } 
     5121            pushFollow(FOLLOW_ruleDefinitionList_in_ruleRepeatedSequence3716); 
    45205122            lv_definitions_1_0=ruleDefinitionList(); 
    45215123 
    45225124            state._fsp--; 
    4523  
    4524  
    4525                         if (current==null) { 
    4526                             current = createModelElementForParent(grammarAccess.getRepeatedSequenceRule()); 
    4527                         } 
    4528                                 add( 
    4529                                         current,  
    4530                                         "definitions", 
    4531                                 lv_definitions_1_0,  
    4532                                 "DefinitionList"); 
    4533                         afterParserOrEnumRuleCall(); 
    4534                      
    4535  
    4536             } 
    4537  
    4538  
    4539             } 
    4540  
    4541             otherlv_2=(Token)match(input,30,FOLLOW_30_in_ruleRepeatedSequence3699);  
    4542  
    4543                         newLeafNode(otherlv_2, grammarAccess.getRepeatedSequenceAccess().getRightCurlyBracketKeyword_2()); 
    4544                  
    4545             // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1751:1: ( (lv_morethanonce_3_0= '+' ) )? 
    4546             int alt36=2; 
    4547             int LA36_0 = input.LA(1); 
    4548  
    4549             if ( (LA36_0==35) ) { 
    4550                 alt36=1; 
    4551             } 
    4552             switch (alt36) { 
     5125            if (state.failed) return current; 
     5126            if ( state.backtracking==0 ) { 
     5127 
     5128                        if (current==null) { 
     5129                            current = createModelElementForParent(grammarAccess.getRepeatedSequenceRule()); 
     5130                        } 
     5131                                add( 
     5132                                        current,  
     5133                                        "definitions", 
     5134                                lv_definitions_1_0,  
     5135                                "DefinitionList"); 
     5136                        afterParserOrEnumRuleCall(); 
     5137                     
     5138            } 
     5139 
     5140            } 
     5141 
     5142 
     5143            } 
     5144 
     5145            otherlv_2=(Token)match(input,30,FOLLOW_30_in_ruleRepeatedSequence3728); if (state.failed) return current; 
     5146            if ( state.backtracking==0 ) { 
     5147 
     5148                        newLeafNode(otherlv_2, grammarAccess.getRepeatedSequenceAccess().getRightCurlyBracketKeyword_2()); 
     5149                   
     5150            } 
     5151            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1773:1: ( ( (lv_morethanonce_3_0= '+' ) )? | ( (lv_range_4_0= ruleRepeatRange ) )? ) 
     5152            int alt38=2; 
     5153            alt38 = dfa38.predict(input); 
     5154            switch (alt38) { 
    45535155                case 1 : 
    4554                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1752:1: (lv_morethanonce_3_0= '+' ) 
    4555                     { 
    4556                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1752:1: (lv_morethanonce_3_0= '+' ) 
    4557                     // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1753:3: lv_morethanonce_3_0= '+' 
    4558                     { 
    4559                     lv_morethanonce_3_0=(Token)match(input,35,FOLLOW_35_in_ruleRepeatedSequence3717);  
    4560  
    4561                             newLeafNode(lv_morethanonce_3_0, grammarAccess.getRepeatedSequenceAccess().getMorethanoncePlusSignKeyword_3_0()); 
    4562                          
    4563  
    4564                                 if (current==null) { 
    4565                                     current = createModelElement(grammarAccess.getRepeatedSequenceRule()); 
    4566                                 } 
    4567                                         setWithLastConsumed(current, "morethanonce", true, "+"); 
    4568                              
     5156                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1773:2: ( (lv_morethanonce_3_0= '+' ) )? 
     5157                    { 
     5158                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1773:2: ( (lv_morethanonce_3_0= '+' ) )? 
     5159                    int alt36=2; 
     5160                    int LA36_0 = input.LA(1); 
     5161 
     5162                    if ( (LA36_0==35) ) { 
     5163                        alt36=1; 
     5164                    } 
     5165                    switch (alt36) { 
     5166                        case 1 : 
     5167                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1774:1: (lv_morethanonce_3_0= '+' ) 
     5168                            { 
     5169                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1774:1: (lv_morethanonce_3_0= '+' ) 
     5170                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1775:3: lv_morethanonce_3_0= '+' 
     5171                            { 
     5172                            lv_morethanonce_3_0=(Token)match(input,35,FOLLOW_35_in_ruleRepeatedSequence3747); if (state.failed) return current; 
     5173                            if ( state.backtracking==0 ) { 
     5174 
     5175                                      newLeafNode(lv_morethanonce_3_0, grammarAccess.getRepeatedSequenceAccess().getMorethanoncePlusSignKeyword_3_0_0()); 
     5176                                   
     5177                            } 
     5178                            if ( state.backtracking==0 ) { 
     5179 
     5180                                        if (current==null) { 
     5181                                            current = createModelElement(grammarAccess.getRepeatedSequenceRule()); 
     5182                                        } 
     5183                                                setWithLastConsumed(current, "morethanonce", true, "+"); 
     5184                                     
     5185                            } 
     5186 
     5187                            } 
     5188 
     5189 
     5190                            } 
     5191                            break; 
    45695192 
    45705193                    } 
     
    45735196                    } 
    45745197                    break; 
    4575  
    4576             } 
    4577  
    4578  
    4579             } 
    4580  
    4581  
    4582             } 
    4583  
    4584              leaveRule();  
     5198                case 2 : 
     5199                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1789:6: ( (lv_range_4_0= ruleRepeatRange ) )? 
     5200                    { 
     5201                    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1789:6: ( (lv_range_4_0= ruleRepeatRange ) )? 
     5202                    int alt37=2; 
     5203                    int LA37_0 = input.LA(1); 
     5204 
     5205                    if ( (LA37_0==40) ) { 
     5206                        alt37=1; 
     5207                    } 
     5208                    switch (alt37) { 
     5209                        case 1 : 
     5210                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1790:1: (lv_range_4_0= ruleRepeatRange ) 
     5211                            { 
     5212                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1790:1: (lv_range_4_0= ruleRepeatRange ) 
     5213                            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1791:3: lv_range_4_0= ruleRepeatRange 
     5214                            { 
     5215                            if ( state.backtracking==0 ) { 
     5216                                
     5217                                        newCompositeNode(grammarAccess.getRepeatedSequenceAccess().getRangeRepeatRangeParserRuleCall_3_1_0());  
     5218                                     
     5219                            } 
     5220                            pushFollow(FOLLOW_ruleRepeatRange_in_ruleRepeatedSequence3788); 
     5221                            lv_range_4_0=ruleRepeatRange(); 
     5222 
     5223                            state._fsp--; 
     5224                            if (state.failed) return current; 
     5225                            if ( state.backtracking==0 ) { 
     5226 
     5227                                        if (current==null) { 
     5228                                            current = createModelElementForParent(grammarAccess.getRepeatedSequenceRule()); 
     5229                                        } 
     5230                                                set( 
     5231                                                        current,  
     5232                                                        "range", 
     5233                                                lv_range_4_0,  
     5234                                                "RepeatRange"); 
     5235                                        afterParserOrEnumRuleCall(); 
     5236                                     
     5237                            } 
     5238 
     5239                            } 
     5240 
     5241 
     5242                            } 
     5243                            break; 
     5244 
     5245                    } 
     5246 
     5247 
     5248                    } 
     5249                    break; 
     5250 
     5251            } 
     5252 
     5253 
     5254            } 
     5255 
     5256 
     5257            } 
     5258 
     5259            if ( state.backtracking==0 ) { 
     5260               leaveRule();  
     5261            } 
    45855262        } 
    45865263          
     
    45905267            }  
    45915268        finally { 
     5269            if ( state.backtracking>0 ) { memoize(input, 44, ruleRepeatedSequence_StartIndex); } 
    45925270        } 
    45935271        return current; 
     
    45955273    // $ANTLR end "ruleRepeatedSequence" 
    45965274 
     5275 
     5276    // $ANTLR start "entryRuleRepeatRange" 
     5277    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1815:1: entryRuleRepeatRange returns [EObject current=null] : iv_ruleRepeatRange= ruleRepeatRange EOF ; 
     5278    public final EObject entryRuleRepeatRange() throws RecognitionException { 
     5279        EObject current = null; 
     5280        int entryRuleRepeatRange_StartIndex = input.index(); 
     5281        EObject iv_ruleRepeatRange = null; 
     5282 
     5283 
     5284        try { 
     5285            if ( state.backtracking>0 && alreadyParsedRule(input, 45) ) { return current; } 
     5286            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1816:2: (iv_ruleRepeatRange= ruleRepeatRange EOF ) 
     5287            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1817:2: iv_ruleRepeatRange= ruleRepeatRange EOF 
     5288            { 
     5289            if ( state.backtracking==0 ) { 
     5290               newCompositeNode(grammarAccess.getRepeatRangeRule());  
     5291            } 
     5292            pushFollow(FOLLOW_ruleRepeatRange_in_entryRuleRepeatRange3826); 
     5293            iv_ruleRepeatRange=ruleRepeatRange(); 
     5294 
     5295            state._fsp--; 
     5296            if (state.failed) return current; 
     5297            if ( state.backtracking==0 ) { 
     5298               current =iv_ruleRepeatRange;  
     5299            } 
     5300            match(input,EOF,FOLLOW_EOF_in_entryRuleRepeatRange3836); if (state.failed) return current; 
     5301 
     5302            } 
     5303 
     5304        } 
     5305          
     5306            catch (RecognitionException re) {  
     5307                recover(input,re);  
     5308                appendSkippedTokens(); 
     5309            }  
     5310        finally { 
     5311            if ( state.backtracking>0 ) { memoize(input, 45, entryRuleRepeatRange_StartIndex); } 
     5312        } 
     5313        return current; 
     5314    } 
     5315    // $ANTLR end "entryRuleRepeatRange" 
     5316 
     5317 
     5318    // $ANTLR start "ruleRepeatRange" 
     5319    // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1824:1: ruleRepeatRange returns [EObject current=null] : (otherlv_0= '#' otherlv_1= '(' ( (lv_from_2_0= RULE_INT ) ) otherlv_3= ',' ( (lv_to_4_0= RULE_INT ) ) otherlv_5= ')' ) ; 
     5320    public final EObject ruleRepeatRange() throws RecognitionException { 
     5321        EObject current = null; 
     5322        int ruleRepeatRange_StartIndex = input.index(); 
     5323        Token otherlv_0=null; 
     5324        Token otherlv_1=null; 
     5325        Token lv_from_2_0=null; 
     5326        Token otherlv_3=null; 
     5327        Token lv_to_4_0=null; 
     5328        Token otherlv_5=null; 
     5329 
     5330         enterRule();  
     5331             
     5332        try { 
     5333            if ( state.backtracking>0 && alreadyParsedRule(input, 46) ) { return current; } 
     5334            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1827:28: ( (otherlv_0= '#' otherlv_1= '(' ( (lv_from_2_0= RULE_INT ) ) otherlv_3= ',' ( (lv_to_4_0= RULE_INT ) ) otherlv_5= ')' ) ) 
     5335            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1828:1: (otherlv_0= '#' otherlv_1= '(' ( (lv_from_2_0= RULE_INT ) ) otherlv_3= ',' ( (lv_to_4_0= RULE_INT ) ) otherlv_5= ')' ) 
     5336            { 
     5337            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1828:1: (otherlv_0= '#' otherlv_1= '(' ( (lv_from_2_0= RULE_INT ) ) otherlv_3= ',' ( (lv_to_4_0= RULE_INT ) ) otherlv_5= ')' ) 
     5338            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1828:3: otherlv_0= '#' otherlv_1= '(' ( (lv_from_2_0= RULE_INT ) ) otherlv_3= ',' ( (lv_to_4_0= RULE_INT ) ) otherlv_5= ')' 
     5339            { 
     5340            otherlv_0=(Token)match(input,40,FOLLOW_40_in_ruleRepeatRange3873); if (state.failed) return current; 
     5341            if ( state.backtracking==0 ) { 
     5342 
     5343                        newLeafNode(otherlv_0, grammarAccess.getRepeatRangeAccess().getNumberSignKeyword_0()); 
     5344                   
     5345            } 
     5346            otherlv_1=(Token)match(input,26,FOLLOW_26_in_ruleRepeatRange3885); if (state.failed) return current; 
     5347            if ( state.backtracking==0 ) { 
     5348 
     5349                        newLeafNode(otherlv_1, grammarAccess.getRepeatRangeAccess().getLeftParenthesisKeyword_1()); 
     5350                   
     5351            } 
     5352            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1836:1: ( (lv_from_2_0= RULE_INT ) ) 
     5353            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1837:1: (lv_from_2_0= RULE_INT ) 
     5354            { 
     5355            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1837:1: (lv_from_2_0= RULE_INT ) 
     5356            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1838:3: lv_from_2_0= RULE_INT 
     5357            { 
     5358            lv_from_2_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleRepeatRange3902); if (state.failed) return current; 
     5359            if ( state.backtracking==0 ) { 
     5360 
     5361                                newLeafNode(lv_from_2_0, grammarAccess.getRepeatRangeAccess().getFromINTTerminalRuleCall_2_0());  
     5362                         
     5363            } 
     5364            if ( state.backtracking==0 ) { 
     5365 
     5366                        if (current==null) { 
     5367                            current = createModelElement(grammarAccess.getRepeatRangeRule()); 
     5368                        } 
     5369                                setWithLastConsumed( 
     5370                                        current,  
     5371                                        "from", 
     5372                                lv_from_2_0,  
     5373                                "INT"); 
     5374                     
     5375            } 
     5376 
     5377            } 
     5378 
     5379 
     5380            } 
     5381 
     5382            otherlv_3=(Token)match(input,41,FOLLOW_41_in_ruleRepeatRange3919); if (state.failed) return current; 
     5383            if ( state.backtracking==0 ) { 
     5384 
     5385                        newLeafNode(otherlv_3, grammarAccess.getRepeatRangeAccess().getCommaKeyword_3()); 
     5386                   
     5387            } 
     5388            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1858:1: ( (lv_to_4_0= RULE_INT ) ) 
     5389            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1859:1: (lv_to_4_0= RULE_INT ) 
     5390            { 
     5391            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1859:1: (lv_to_4_0= RULE_INT ) 
     5392            // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1860:3: lv_to_4_0= RULE_INT 
     5393            { 
     5394            lv_to_4_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleRepeatRange3936); if (state.failed) return current; 
     5395            if ( state.backtracking==0 ) { 
     5396 
     5397                                newLeafNode(lv_to_4_0, grammarAccess.getRepeatRangeAccess().getToINTTerminalRuleCall_4_0());  
     5398                         
     5399            } 
     5400            if ( state.backtracking==0 ) { 
     5401 
     5402                        if (current==null) { 
     5403                            current = createModelElement(grammarAccess.getRepeatRangeRule()); 
     5404                        } 
     5405                                setWithLastConsumed( 
     5406                                        current,  
     5407                                        "to", 
     5408                                lv_to_4_0,  
     5409                                "INT"); 
     5410                     
     5411            } 
     5412 
     5413            } 
     5414 
     5415 
     5416            } 
     5417 
     5418            otherlv_5=(Token)match(input,27,FOLLOW_27_in_ruleRepeatRange3953); if (state.failed) return current; 
     5419            if ( state.backtracking==0 ) { 
     5420 
     5421                        newLeafNode(otherlv_5, grammarAccess.getRepeatRangeAccess().getRightParenthesisKeyword_5()); 
     5422                   
     5423            } 
     5424 
     5425            } 
     5426 
     5427 
     5428            } 
     5429 
     5430            if ( state.backtracking==0 ) { 
     5431               leaveRule();  
     5432            } 
     5433        } 
     5434          
     5435            catch (RecognitionException re) {  
     5436                recover(input,re);  
     5437                appendSkippedTokens(); 
     5438            }  
     5439        finally { 
     5440            if ( state.backtracking>0 ) { memoize(input, 46, ruleRepeatRange_StartIndex); } 
     5441        } 
     5442        return current; 
     5443    } 
     5444    // $ANTLR end "ruleRepeatRange" 
     5445 
     5446    // $ANTLR start synpred52_InternalEbnf 
     5447    public final void synpred52_InternalEbnf_fragment() throws RecognitionException {    
     5448        Token lv_morethanonce_3_0=null; 
     5449 
     5450        // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1773:2: ( ( (lv_morethanonce_3_0= '+' ) )? ) 
     5451        // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1773:2: ( (lv_morethanonce_3_0= '+' ) )? 
     5452        { 
     5453        // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1773:2: ( (lv_morethanonce_3_0= '+' ) )? 
     5454        int alt47=2; 
     5455        int LA47_0 = input.LA(1); 
     5456 
     5457        if ( (LA47_0==35) ) { 
     5458            alt47=1; 
     5459        } 
     5460        switch (alt47) { 
     5461            case 1 : 
     5462                // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1774:1: (lv_morethanonce_3_0= '+' ) 
     5463                { 
     5464                // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1774:1: (lv_morethanonce_3_0= '+' ) 
     5465                // ../de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/parser/antlr/internal/InternalEbnf.g:1775:3: lv_morethanonce_3_0= '+' 
     5466                { 
     5467                lv_morethanonce_3_0=(Token)match(input,35,FOLLOW_35_in_synpred52_InternalEbnf3747); if (state.failed) return ; 
     5468 
     5469                } 
     5470 
     5471 
     5472                } 
     5473                break; 
     5474 
     5475        } 
     5476 
     5477 
     5478        } 
     5479    } 
     5480    // $ANTLR end synpred52_InternalEbnf 
     5481 
    45975482    // Delegated rules 
    45985483 
     5484    public final boolean synpred52_InternalEbnf() { 
     5485        state.backtracking++; 
     5486        int start = input.mark(); 
     5487        try { 
     5488            synpred52_InternalEbnf_fragment(); // can never throw exception 
     5489        } catch (RecognitionException re) { 
     5490            System.err.println("impossible: "+re); 
     5491        } 
     5492        boolean success = !state.failed; 
     5493        input.rewind(start); 
     5494        state.backtracking--; 
     5495        state.failed=false; 
     5496        return success; 
     5497    } 
     5498 
    45995499 
    46005500    protected DFA22 dfa22 = new DFA22(this); 
     5501    protected DFA38 dfa38 = new DFA38(this); 
    46015502    static final String DFA22_eotS = 
    46025503        "\17\uffff"; 
     
    46625563        } 
    46635564        public String getDescription() { 
    4664             return "()* loopback of 880:1: ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )*"; 
     5565            return "()* loopback of 890:1: ( ( (lv_elements_8_0= ruleAtom ) ) | otherlv_9= ')' | otherlv_10= ']' | otherlv_11= '}' | otherlv_12= '|' | otherlv_13= '(' | otherlv_14= '[' | otherlv_15= '{' | otherlv_16= '*' | otherlv_17= '+' )*"; 
     5566        } 
     5567    } 
     5568    static final String DFA38_eotS = 
     5569        "\21\uffff"; 
     5570    static final String DFA38_eofS = 
     5571        "\1\4\20\uffff"; 
     5572    static final String DFA38_minS = 
     5573        "\1\4\1\uffff\16\0\1\uffff"; 
     5574    static final String DFA38_maxS = 
     5575        "\1\50\1\uffff\16\0\1\uffff"; 
     5576    static final String DFA38_acceptS = 
     5577        "\1\uffff\1\1\16\uffff\1\2"; 
     5578    static final String DFA38_specialS = 
     5579        "\2\uffff\1\0\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14"+ 
     5580        "\1\15\1\uffff}>"; 
     5581    static final String[] DFA38_transitionS = { 
     5582            "\1\7\1\5\1\13\1\6\1\uffff\1\14\5\uffff\1\3\12\uffff\1\15\1\10"+ 
     5583            "\1\uffff\1\11\1\12\1\2\1\16\1\17\1\uffff\1\1\4\uffff\1\20", 
     5584            "", 
     5585            "\1\uffff", 
     5586            "\1\uffff", 
     5587            "\1\uffff", 
     5588            "\1\uffff", 
     5589            "\1\uffff", 
     5590            "\1\uffff", 
     5591            "\1\uffff", 
     5592            "\1\uffff", 
     5593            "\1\uffff", 
     5594            "\1\uffff", 
     5595            "\1\uffff", 
     5596            "\1\uffff", 
     5597            "\1\uffff", 
     5598            "\1\uffff", 
     5599            "" 
     5600    }; 
     5601 
     5602    static final short[] DFA38_eot = DFA.unpackEncodedString(DFA38_eotS); 
     5603    static final short[] DFA38_eof = DFA.unpackEncodedString(DFA38_eofS); 
     5604    static final char[] DFA38_min = DFA.unpackEncodedStringToUnsignedChars(DFA38_minS); 
     5605    static final char[] DFA38_max = DFA.unpackEncodedStringToUnsignedChars(DFA38_maxS); 
     5606    static final short[] DFA38_accept = DFA.unpackEncodedString(DFA38_acceptS); 
     5607    static final short[] DFA38_special = DFA.unpackEncodedString(DFA38_specialS); 
     5608    static final short[][] DFA38_transition; 
     5609 
     5610    static { 
     5611        int numStates = DFA38_transitionS.length; 
     5612        DFA38_transition = new short[numStates][]; 
     5613        for (int i=0; i<numStates; i++) { 
     5614            DFA38_transition[i] = DFA.unpackEncodedString(DFA38_transitionS[i]); 
     5615        } 
     5616    } 
     5617 
     5618    class DFA38 extends DFA { 
     5619 
     5620        public DFA38(BaseRecognizer recognizer) { 
     5621            this.recognizer = recognizer; 
     5622            this.decisionNumber = 38; 
     5623            this.eot = DFA38_eot; 
     5624            this.eof = DFA38_eof; 
     5625            this.min = DFA38_min; 
     5626            this.max = DFA38_max; 
     5627            this.accept = DFA38_accept; 
     5628            this.special = DFA38_special; 
     5629            this.transition = DFA38_transition; 
     5630        } 
     5631        public String getDescription() { 
     5632            return "1773:1: ( ( (lv_morethanonce_3_0= '+' ) )? | ( (lv_range_4_0= ruleRepeatRange ) )? )"; 
     5633        } 
     5634        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException { 
     5635            TokenStream input = (TokenStream)_input; 
     5636                int _s = s; 
     5637            switch ( s ) { 
     5638                    case 0 :  
     5639                        int LA38_2 = input.LA(1); 
     5640 
     5641                          
     5642                        int index38_2 = input.index(); 
     5643                        input.rewind(); 
     5644                        s = -1; 
     5645                        if ( (synpred52_InternalEbnf()) ) {s = 1;} 
     5646 
     5647                        else if ( (true) ) {s = 16;} 
     5648 
     5649                          
     5650                        input.seek(index38_2); 
     5651                        if ( s>=0 ) return s; 
     5652                        break; 
     5653                    case 1 :  
     5654                        int LA38_3 = input.LA(1); 
     5655 
     5656                          
     5657                        int index38_3 = input.index(); 
     5658                        input.rewind(); 
     5659                        s = -1; 
     5660                        if ( (synpred52_InternalEbnf()) ) {s = 1;} 
     5661 
     5662                        else if ( (true) ) {s = 16;} 
     5663 
     5664                          
     5665                        input.seek(index38_3); 
     5666                        if ( s>=0 ) return s; 
     5667                        break; 
     5668                    case 2 :  
     5669                        int LA38_4 = input.LA(1); 
     5670 
     5671                          
     5672                        int index38_4 = input.index(); 
     5673                        input.rewind(); 
     5674                        s = -1; 
     5675                        if ( (synpred52_InternalEbnf()) ) {s = 1;} 
     5676 
     5677                        else if ( (true) ) {s = 16;} 
     5678 
     5679                          
     5680                        input.seek(index38_4); 
     5681                        if ( s>=0 ) return s; 
     5682                        break; 
     5683                    case 3 :  
     5684                        int LA38_5 = input.LA(1); 
     5685 
     5686                          
     5687                        int index38_5 = input.index(); 
     5688                        input.rewind(); 
     5689                        s = -1; 
     5690                        if ( (synpred52_InternalEbnf()) ) {s = 1;} 
     5691 
     5692                        else if ( (true) ) {s = 16;} 
     5693 
     5694                          
     5695                        input.seek(index38_5); 
     5696                        if ( s>=0 ) return s; 
     5697                        break; 
     5698                    case 4 :  
     5699                        int LA38_6 = input.LA(1); 
     5700 
     5701                          
     5702                        int index38_6 = input.index(); 
     5703                        input.rewind(); 
     5704                        s = -1; 
     5705                        if ( (synpred52_InternalEbnf()) ) {s = 1;} 
     5706 
     5707                        else if ( (true) ) {s = 16;} 
     5708 
     5709                          
     5710                        input.seek(index38_6); 
     5711                        if ( s>=0 ) return s; 
     5712                        break; 
     5713                    case 5 :  
     5714                        int LA38_7 = input.LA(1); 
     5715 
     5716                          
     5717                        int index38_7 = input.index(); 
     5718                        input.rewind(); 
     5719                        s = -1; 
     5720                        if ( (synpred52_InternalEbnf()) ) {s = 1;} 
     5721 
     5722                        else if ( (true) ) {s = 16;} 
     5723 
     5724                          
     5725                        input.seek(index38_7); 
     5726                        if ( s>=0 ) return s; 
     5727                        break; 
     5728                    case 6 :  
     5729                        int LA38_8 = input.LA(1); 
     5730 
     5731                          
     5732                        int index38_8 = input.index(); 
     5733                        input.rewind(); 
     5734                        s = -1; 
     5735                        if ( (synpred52_InternalEbnf()) ) {s = 1;} 
     5736 
     5737                        else if ( (true) ) {s = 16;} 
     5738 
     5739                          
     5740                        input.seek(index38_8); 
     5741                        if ( s>=0 ) return s; 
     5742                        break; 
     5743                    case 7 :  
     5744                        int LA38_9 = input.LA(1); 
     5745 
     5746                          
     5747                        int index38_9 = input.index(); 
     5748                        input.rewind(); 
     5749                        s = -1; 
     5750                        if ( (synpred52_InternalEbnf()) ) {s = 1;} 
     5751 
     5752                        else if ( (true) ) {s = 16;} 
     5753 
     5754                          
     5755                        input.seek(index38_9); 
     5756                        if ( s>=0 ) return s; 
     5757                        break; 
     5758                    case 8 :  
     5759                        int LA38_10 = input.LA(1); 
     5760 
     5761                          
     5762                        int index38_10 = input.index(); 
     5763                        input.rewind(); 
     5764                        s = -1; 
     5765                        if ( (synpred52_InternalEbnf()) ) {s = 1;} 
     5766 
     5767                        else if ( (true) ) {s = 16;} 
     5768 
     5769                          
     5770                        input.seek(index38_10); 
     5771                        if ( s>=0 ) return s; 
     5772                        break; 
     5773                    case 9 :  
     5774                        int LA38_11 = input.LA(1); 
     5775 
     5776                          
     5777                        int index38_11 = input.index(); 
     5778                        input.rewind(); 
     5779                        s = -1; 
     5780                        if ( (synpred52_InternalEbnf()) ) {s = 1;} 
     5781 
     5782                        else if ( (true) ) {s = 16;} 
     5783 
     5784                          
     5785                        input.seek(index38_11); 
     5786                        if ( s>=0 ) return s; 
     5787                        break; 
     5788                    case 10 :  
     5789                        int LA38_12 = input.LA(1); 
     5790 
     5791                          
     5792                        int index38_12 = input.index(); 
     5793                        input.rewind(); 
     5794                        s = -1; 
     5795                        if ( (synpred52_InternalEbnf()) ) {s = 1;} 
     5796 
     5797                        else if ( (true) ) {s = 16;} 
     5798 
     5799                          
     5800                        input.seek(index38_12); 
     5801                        if ( s>=0 ) return s; 
     5802                        break; 
     5803                    case 11 :  
     5804                        int LA38_13 = input.LA(1); 
     5805 
     5806                          
     5807                        int index38_13 = input.index(); 
     5808                        input.rewind(); 
     5809                        s = -1; 
     5810                        if ( (synpred52_InternalEbnf()) ) {s = 1;} 
     5811 
     5812                        else if ( (true) ) {s = 16;} 
     5813 
     5814                          
     5815                        input.seek(index38_13); 
     5816                        if ( s>=0 ) return s; 
     5817                        break; 
     5818                    case 12 :  
     5819                        int LA38_14 = input.LA(1); 
     5820 
     5821                          
     5822                        int index38_14 = input.index(); 
     5823                        input.rewind(); 
     5824                        s = -1; 
     5825                        if ( (synpred52_InternalEbnf()) ) {s = 1;} 
     5826 
     5827                        else if ( (true) ) {s = 16;} 
     5828 
     5829                          
     5830                        input.seek(index38_14); 
     5831                        if ( s>=0 ) return s; 
     5832                        break; 
     5833                    case 13 :  
     5834                        int LA38_15 = input.LA(1); 
     5835 
     5836                          
     5837                        int index38_15 = input.index(); 
     5838                        input.rewind(); 
     5839                        s = -1; 
     5840                        if ( (synpred52_InternalEbnf()) ) {s = 1;} 
     5841 
     5842                        else if ( (true) ) {s = 16;} 
     5843 
     5844                          
     5845                        input.seek(index38_15); 
     5846                        if ( s>=0 ) return s; 
     5847                        break; 
     5848            } 
     5849            if (state.backtracking>0) {state.failed=true; return -1;} 
     5850            NoViableAltException nvae = 
     5851                new NoViableAltException(getDescription(), 38, _s, input); 
     5852            error(nvae); 
     5853            throw nvae; 
    46655854        } 
    46665855    } 
    46675856  
    46685857 
    4669     public static final BitSet FOLLOW_ruleEtsiBnf_in_entryRuleEtsiBnf75 = new BitSet(new long[]{0x0000000000000000L}); 
    4670     public static final BitSet FOLLOW_EOF_in_entryRuleEtsiBnf85 = new BitSet(new long[]{0x0000000000000002L}); 
    4671     public static final BitSet FOLLOW_13_in_ruleEtsiBnf123 = new BitSet(new long[]{0x0000000000000010L}); 
    4672     public static final BitSet FOLLOW_RULE_ID_in_ruleEtsiBnf140 = new BitSet(new long[]{0x000000000000C000L}); 
    4673     public static final BitSet FOLLOW_14_in_ruleEtsiBnf164 = new BitSet(new long[]{0x0000000000008000L}); 
    4674     public static final BitSet FOLLOW_15_in_ruleEtsiBnf190 = new BitSet(new long[]{0x00000000000400B0L}); 
    4675     public static final BitSet FOLLOW_ruleImportSection_in_ruleEtsiBnf211 = new BitSet(new long[]{0x00000000000400B0L}); 
    4676     public static final BitSet FOLLOW_ruleBnfEntry_in_ruleEtsiBnf233 = new BitSet(new long[]{0x00000000000400B2L}); 
    4677     public static final BitSet FOLLOW_16_in_ruleEtsiBnf261 = new BitSet(new long[]{0x0000000000008000L}); 
    4678     public static final BitSet FOLLOW_15_in_ruleEtsiBnf286 = new BitSet(new long[]{0x00000000000400B2L}); 
    4679     public static final BitSet FOLLOW_ruleImportSection_in_ruleEtsiBnf307 = new BitSet(new long[]{0x00000000000400B2L}); 
    4680     public static final BitSet FOLLOW_ruleDeltaEntry_in_ruleEtsiBnf329 = new BitSet(new long[]{0x00000000000400B2L}); 
    4681     public static final BitSet FOLLOW_17_in_ruleEtsiBnf356 = new BitSet(new long[]{0x0000000000008000L}); 
    4682     public static final BitSet FOLLOW_15_in_ruleEtsiBnf381 = new BitSet(new long[]{0x000000D000040022L}); 
    4683     public static final BitSet FOLLOW_ruleImportSection_in_ruleEtsiBnf402 = new BitSet(new long[]{0x000000D000000022L}); 
    4684     public static final BitSet FOLLOW_ruleMergeEntry_in_ruleEtsiBnf424 = new BitSet(new long[]{0x000000D000000022L}); 
    4685     public static final BitSet FOLLOW_ruleImportSection_in_entryRuleImportSection462 = new BitSet(new long[]{0x0000000000000000L}); 
    4686     public static final BitSet FOLLOW_EOF_in_entryRuleImportSection472 = new BitSet(new long[]{0x0000000000000002L}); 
    4687     public static final BitSet FOLLOW_ruleImport_in_ruleImportSection517 = new BitSet(new long[]{0x0000000000040002L}); 
    4688     public static final BitSet FOLLOW_ruleBnfEntry_in_entryRuleBnfEntry553 = new BitSet(new long[]{0x0000000000000000L}); 
    4689     public static final BitSet FOLLOW_EOF_in_entryRuleBnfEntry563 = new BitSet(new long[]{0x0000000000000002L}); 
    4690     public static final BitSet FOLLOW_ruleSectionHeading_in_ruleBnfEntry609 = new BitSet(new long[]{0x0000000000000002L}); 
    4691     public static final BitSet FOLLOW_ruleRule_in_ruleBnfEntry636 = new BitSet(new long[]{0x0000000000000002L}); 
    4692     public static final BitSet FOLLOW_ruleDeltaEntry_in_entryRuleDeltaEntry672 = new BitSet(new long[]{0x0000000000000000L}); 
    4693     public static final BitSet FOLLOW_EOF_in_entryRuleDeltaEntry682 = new BitSet(new long[]{0x0000000000000002L}); 
    4694     public static final BitSet FOLLOW_ruleRule_in_ruleDeltaEntry728 = new BitSet(new long[]{0x0000000000000002L}); 
    4695     public static final BitSet FOLLOW_ruleSectionHeading_in_ruleDeltaEntry755 = new BitSet(new long[]{0x0000000000000002L}); 
    4696     public static final BitSet FOLLOW_ruleExtRule_in_ruleDeltaEntry782 = new BitSet(new long[]{0x0000000000000002L}); 
    4697     public static final BitSet FOLLOW_ruleMergeEntry_in_entryRuleMergeEntry818 = new BitSet(new long[]{0x0000000000000000L}); 
    4698     public static final BitSet FOLLOW_EOF_in_entryRuleMergeEntry828 = new BitSet(new long[]{0x0000000000000002L}); 
    4699     public static final BitSet FOLLOW_ruleSectionHeading_in_ruleMergeEntry874 = new BitSet(new long[]{0x0000000000000002L}); 
    4700     public static final BitSet FOLLOW_ruleMergeRule_in_ruleMergeEntry901 = new BitSet(new long[]{0x0000000000000002L}); 
    4701     public static final BitSet FOLLOW_ruleSectionHeading_in_entryRuleSectionHeading937 = new BitSet(new long[]{0x0000000000000000L}); 
    4702     public static final BitSet FOLLOW_EOF_in_entryRuleSectionHeading947 = new BitSet(new long[]{0x0000000000000002L}); 
    4703     public static final BitSet FOLLOW_RULE_SECTIONHEADER_in_ruleSectionHeading998 = new BitSet(new long[]{0x0000000000000002L}); 
    4704     public static final BitSet FOLLOW_ruleImport_in_entryRuleImport1039 = new BitSet(new long[]{0x0000000000000000L}); 
    4705     public static final BitSet FOLLOW_EOF_in_entryRuleImport1049 = new BitSet(new long[]{0x0000000000000002L}); 
    4706     public static final BitSet FOLLOW_18_in_ruleImport1086 = new BitSet(new long[]{0x0000000000000040L}); 
    4707     public static final BitSet FOLLOW_RULE_STRING_in_ruleImport1103 = new BitSet(new long[]{0x0000000000888000L}); 
    4708     public static final BitSet FOLLOW_19_in_ruleImport1121 = new BitSet(new long[]{0x0000000000700000L}); 
    4709     public static final BitSet FOLLOW_20_in_ruleImport1140 = new BitSet(new long[]{0x0000000000808000L}); 
    4710     public static final BitSet FOLLOW_21_in_ruleImport1177 = new BitSet(new long[]{0x0000000000808000L}); 
    4711     public static final BitSet FOLLOW_22_in_ruleImport1214 = new BitSet(new long[]{0x0000000000808000L}); 
    4712     public static final BitSet FOLLOW_23_in_ruleImport1243 = new BitSet(new long[]{0x0000000000000010L}); 
    4713     public static final BitSet FOLLOW_RULE_ID_in_ruleImport1260 = new BitSet(new long[]{0x0000000000008000L}); 
    4714     public static final BitSet FOLLOW_15_in_ruleImport1279 = new BitSet(new long[]{0x0000000000000002L}); 
    4715     public static final BitSet FOLLOW_ruleRule_in_entryRuleRule1315 = new BitSet(new long[]{0x0000000000000000L}); 
    4716     public static final BitSet FOLLOW_EOF_in_entryRuleRule1325 = new BitSet(new long[]{0x0000000000000002L}); 
    4717     public static final BitSet FOLLOW_RULE_INT_in_ruleRule1368 = new BitSet(new long[]{0x0000000001000010L}); 
    4718     public static final BitSet FOLLOW_RULE_ID_in_ruleRule1390 = new BitSet(new long[]{0x0000000001000000L}); 
    4719     public static final BitSet FOLLOW_24_in_ruleRule1408 = new BitSet(new long[]{0x0000000000000010L}); 
    4720     public static final BitSet FOLLOW_RULE_ID_in_ruleRule1427 = new BitSet(new long[]{0x0000000002000000L}); 
    4721     public static final BitSet FOLLOW_25_in_ruleRule1444 = new BitSet(new long[]{0x0000000304008252L}); 
    4722     public static final BitSet FOLLOW_ruleDefinitionList_in_ruleRule1465 = new BitSet(new long[]{0x0000000000008002L}); 
    4723     public static final BitSet FOLLOW_15_in_ruleRule1479 = new BitSet(new long[]{0x0000000000000002L}); 
    4724     public static final BitSet FOLLOW_ruleExtRule_in_entryRuleExtRule1517 = new BitSet(new long[]{0x0000000000000000L}); 
    4725     public static final BitSet FOLLOW_EOF_in_entryRuleExtRule1527 = new BitSet(new long[]{0x0000000000000002L}); 
    4726     public static final BitSet FOLLOW_RULE_INT_in_ruleExtRule1570 = new BitSet(new long[]{0x0000000001000010L}); 
    4727     public static final BitSet FOLLOW_RULE_ID_in_ruleExtRule1592 = new BitSet(new long[]{0x0000000001000000L}); 
    4728     public static final BitSet FOLLOW_24_in_ruleExtRule1610 = new BitSet(new long[]{0x0000000000000010L}); 
    4729     public static final BitSet FOLLOW_RULE_ID_in_ruleExtRule1629 = new BitSet(new long[]{0x0000000004000000L}); 
    4730     public static final BitSet FOLLOW_26_in_ruleExtRule1647 = new BitSet(new long[]{0x0000000000000080L}); 
    4731     public static final BitSet FOLLOW_RULE_INT_in_ruleExtRule1664 = new BitSet(new long[]{0x0000000008000000L}); 
    4732     public static final BitSet FOLLOW_27_in_ruleExtRule1681 = new BitSet(new long[]{0x0000000010000000L}); 
    4733     public static final BitSet FOLLOW_28_in_ruleExtRule1694 = new BitSet(new long[]{0x0000000FEC008252L}); 
    4734     public static final BitSet FOLLOW_ruleAtom_in_ruleExtRule1716 = new BitSet(new long[]{0x0000000FEC008252L}); 
    4735     public static final BitSet FOLLOW_27_in_ruleExtRule1734 = new BitSet(new long[]{0x0000000FEC008252L}); 
    4736     public static final BitSet FOLLOW_29_in_ruleExtRule1752 = new BitSet(new long[]{0x0000000FEC008252L}); 
    4737     public static final BitSet FOLLOW_30_in_ruleExtRule1770 = new BitSet(new long[]{0x0000000FEC008252L}); 
    4738     public static final BitSet FOLLOW_31_in_ruleExtRule1788 = new BitSet(new long[]{0x0000000FEC008252L}); 
    4739     public static final BitSet FOLLOW_26_in_ruleExtRule1806 = new BitSet(new long[]{0x0000000FEC008252L}); 
    4740     public static final BitSet FOLLOW_32_in_ruleExtRule1824 = new BitSet(new long[]{0x0000000FEC008252L}); 
    4741     public static final BitSet FOLLOW_33_in_ruleExtRule1842 = new BitSet(new long[]{0x0000000FEC008252L}); 
    4742     public static final BitSet FOLLOW_34_in_ruleExtRule1860 = new BitSet(new long[]{0x0000000FEC008252L}); 
    4743     public static final BitSet FOLLOW_35_in_ruleExtRule1878 = new BitSet(new long[]{0x0000000FEC008252L}); 
    4744     public static final BitSet FOLLOW_15_in_ruleExtRule1893 = new BitSet(new long[]{0x0000000000000002L}); 
    4745     public static final BitSet FOLLOW_ruleMergeRule_in_entryRuleMergeRule1931 = new BitSet(new long[]{0x0000000000000000L}); 
    4746     public static final BitSet FOLLOW_EOF_in_entryRuleMergeRule1941 = new BitSet(new long[]{0x0000000000000002L}); 
    4747     public static final BitSet FOLLOW_ruleGlobalCombinator_in_ruleMergeRule1988 = new BitSet(new long[]{0x0000000000000002L}); 
    4748     public static final BitSet FOLLOW_ruleRuleCombinator_in_ruleMergeRule2015 = new BitSet(new long[]{0x0000000000000002L}); 
    4749     public static final BitSet FOLLOW_ruleHookCombinator_in_ruleMergeRule2042 = new BitSet(new long[]{0x0000000000000002L}); 
    4750     public static final BitSet FOLLOW_ruleGlobalCombinator_in_entryRuleGlobalCombinator2077 = new BitSet(new long[]{0x0000000000000000L}); 
    4751     public static final BitSet FOLLOW_EOF_in_entryRuleGlobalCombinator2087 = new BitSet(new long[]{0x0000000000000002L}); 
    4752     public static final BitSet FOLLOW_36_in_ruleGlobalCombinator2125 = new BitSet(new long[]{0x0000002000000000L}); 
    4753     public static final BitSet FOLLOW_37_in_ruleGlobalCombinator2137 = new BitSet(new long[]{0x0000000000000100L}); 
    4754     public static final BitSet FOLLOW_RULE_LOGIC_in_ruleGlobalCombinator2155 = new BitSet(new long[]{0x0000000000008002L}); 
    4755     public static final BitSet FOLLOW_15_in_ruleGlobalCombinator2173 = new BitSet(new long[]{0x0000000000000002L}); 
    4756     public static final BitSet FOLLOW_ruleRuleCombinator_in_entryRuleRuleCombinator2211 = new BitSet(new long[]{0x0000000000000000L}); 
    4757     public static final BitSet FOLLOW_EOF_in_entryRuleRuleCombinator2221 = new BitSet(new long[]{0x0000000000000002L}); 
    4758     public static final BitSet FOLLOW_38_in_ruleRuleCombinator2259 = new BitSet(new long[]{0x0000002000000000L}); 
    4759     public static final BitSet FOLLOW_37_in_ruleRuleCombinator2271 = new BitSet(new long[]{0x0000000000000010L}); 
    4760     public static final BitSet FOLLOW_RULE_ID_in_ruleRuleCombinator2288 = new BitSet(new long[]{0x0000000000000100L}); 
    4761     public static final BitSet FOLLOW_RULE_LOGIC_in_ruleRuleCombinator2311 = new BitSet(new long[]{0x0000000004008002L}); 
    4762     public static final BitSet FOLLOW_26_in_ruleRuleCombinator2329 = new BitSet(new long[]{0x0000000000000040L}); 
    4763     public static final BitSet FOLLOW_RULE_STRING_in_ruleRuleCombinator2346 = new BitSet(new long[]{0x0000000008000000L}); 
    4764     public static final BitSet FOLLOW_27_in_ruleRuleCombinator2363 = new BitSet(new long[]{0x0000000004008002L}); 
    4765     public static final BitSet FOLLOW_15_in_ruleRuleCombinator2378 = new BitSet(new long[]{0x0000000000000002L}); 
    4766     public static final BitSet FOLLOW_ruleHookCombinator_in_entryRuleHookCombinator2416 = new BitSet(new long[]{0x0000000000000000L}); 
    4767     public static final BitSet FOLLOW_EOF_in_entryRuleHookCombinator2426 = new BitSet(new long[]{0x0000000000000002L}); 
    4768     public static final BitSet FOLLOW_39_in_ruleHookCombinator2463 = new BitSet(new long[]{0x0000002000000000L}); 
    4769     public static final BitSet FOLLOW_37_in_ruleHookCombinator2475 = new BitSet(new long[]{0x0000000000000010L}); 
    4770     public static final BitSet FOLLOW_RULE_ID_in_ruleHookCombinator2492 = new BitSet(new long[]{0x0000000004000000L}); 
    4771     public static final BitSet FOLLOW_26_in_ruleHookCombinator2509 = new BitSet(new long[]{0x0000000000000080L}); 
    4772     public static final BitSet FOLLOW_RULE_INT_in_ruleHookCombinator2526 = new BitSet(new long[]{0x0000000008000000L}); 
    4773     public static final BitSet FOLLOW_27_in_ruleHookCombinator2543 = new BitSet(new long[]{0x0000000004000100L}); 
    4774     public static final BitSet FOLLOW_RULE_LOGIC_in_ruleHookCombinator2560 = new BitSet(new long[]{0x0000000004000000L}); 
    4775     public static final BitSet FOLLOW_26_in_ruleHookCombinator2579 = new BitSet(new long[]{0x0000000000000040L}); 
    4776     public static final BitSet FOLLOW_RULE_STRING_in_ruleHookCombinator2596 = new BitSet(new long[]{0x0000000008000000L}); 
    4777     public static final BitSet FOLLOW_27_in_ruleHookCombinator2613 = new BitSet(new long[]{0x0000000004008002L}); 
    4778     public static final BitSet FOLLOW_15_in_ruleHookCombinator2628 = new BitSet(new long[]{0x0000000000000002L}); 
    4779     public static final BitSet FOLLOW_ruleDefinitionList_in_entryRuleDefinitionList2666 = new BitSet(new long[]{0x0000000000000000L}); 
    4780     public static final BitSet FOLLOW_EOF_in_entryRuleDefinitionList2676 = new BitSet(new long[]{0x0000000000000002L}); 
    4781     public static final BitSet FOLLOW_ruleSingleDefinition_in_ruleDefinitionList2722 = new BitSet(new long[]{0x0000000080000002L}); 
    4782     public static final BitSet FOLLOW_31_in_ruleDefinitionList2735 = new BitSet(new long[]{0x0000000304000250L}); 
    4783     public static final BitSet FOLLOW_ruleSingleDefinition_in_ruleDefinitionList2756 = new BitSet(new long[]{0x0000000080000002L}); 
    4784     public static final BitSet FOLLOW_ruleSingleDefinition_in_entryRuleSingleDefinition2794 = new BitSet(new long[]{0x0000000000000000L}); 
    4785     public static final BitSet FOLLOW_EOF_in_entryRuleSingleDefinition2804 = new BitSet(new long[]{0x0000000000000002L}); 
    4786     public static final BitSet FOLLOW_ruleTerm_in_ruleSingleDefinition2849 = new BitSet(new long[]{0x0000000304000252L}); 
    4787     public static final BitSet FOLLOW_ruleTerm_in_entryRuleTerm2885 = new BitSet(new long[]{0x0000000000000000L}); 
    4788     public static final BitSet FOLLOW_EOF_in_entryRuleTerm2895 = new BitSet(new long[]{0x0000000000000002L}); 
    4789     public static final BitSet FOLLOW_ruleAtom_in_ruleTerm2941 = new BitSet(new long[]{0x0000000000000002L}); 
    4790     public static final BitSet FOLLOW_ruleGroupedSequence_in_ruleTerm2968 = new BitSet(new long[]{0x0000000000000002L}); 
    4791     public static final BitSet FOLLOW_ruleOptionalSequence_in_ruleTerm2995 = new BitSet(new long[]{0x0000000000000002L}); 
    4792     public static final BitSet FOLLOW_ruleRepeatedSequence_in_ruleTerm3022 = new BitSet(new long[]{0x0000000000000002L}); 
    4793     public static final BitSet FOLLOW_ruleAtom_in_entryRuleAtom3058 = new BitSet(new long[]{0x0000000000000000L}); 
    4794     public static final BitSet FOLLOW_EOF_in_entryRuleAtom3068 = new BitSet(new long[]{0x0000000000000002L}); 
    4795     public static final BitSet FOLLOW_ruleStringRule_in_ruleAtom3114 = new BitSet(new long[]{0x0000000000000002L}); 
    4796     public static final BitSet FOLLOW_ruleRuleReference_in_ruleAtom3141 = new BitSet(new long[]{0x0000000000000002L}); 
    4797     public static final BitSet FOLLOW_ruleRuleReference_in_entryRuleRuleReference3177 = new BitSet(new long[]{0x0000000000000000L}); 
    4798     public static final BitSet FOLLOW_EOF_in_entryRuleRuleReference3187 = new BitSet(new long[]{0x0000000000000002L}); 
    4799     public static final BitSet FOLLOW_RULE_ID_in_ruleRuleReference3231 = new BitSet(new long[]{0x0000000000000002L}); 
    4800     public static final BitSet FOLLOW_ruleStringRule_in_entryRuleStringRule3266 = new BitSet(new long[]{0x0000000000000000L}); 
    4801     public static final BitSet FOLLOW_EOF_in_entryRuleStringRule3276 = new BitSet(new long[]{0x0000000000000002L}); 
    4802     public static final BitSet FOLLOW_RULE_STRING_in_ruleStringRule3318 = new BitSet(new long[]{0x0000000000000002L}); 
    4803     public static final BitSet FOLLOW_RULE_COLON_in_ruleStringRule3346 = new BitSet(new long[]{0x0000000000000002L}); 
    4804     public static final BitSet FOLLOW_ruleGroupedSequence_in_entryRuleGroupedSequence3387 = new BitSet(new long[]{0x0000000000000000L}); 
    4805     public static final BitSet FOLLOW_EOF_in_entryRuleGroupedSequence3397 = new BitSet(new long[]{0x0000000000000002L}); 
    4806     public static final BitSet FOLLOW_26_in_ruleGroupedSequence3434 = new BitSet(new long[]{0x0000000304000250L}); 
    4807     public static final BitSet FOLLOW_ruleDefinitionList_in_ruleGroupedSequence3455 = new BitSet(new long[]{0x0000000008000000L}); 
    4808     public static final BitSet FOLLOW_27_in_ruleGroupedSequence3467 = new BitSet(new long[]{0x0000000000000002L}); 
    4809     public static final BitSet FOLLOW_ruleOptionalSequence_in_entryRuleOptionalSequence3503 = new BitSet(new long[]{0x0000000000000000L}); 
    4810     public static final BitSet FOLLOW_EOF_in_entryRuleOptionalSequence3513 = new BitSet(new long[]{0x0000000000000002L}); 
    4811     public static final BitSet FOLLOW_32_in_ruleOptionalSequence3550 = new BitSet(new long[]{0x0000000304000250L}); 
    4812     public static final BitSet FOLLOW_ruleDefinitionList_in_ruleOptionalSequence3571 = new BitSet(new long[]{0x0000000020000000L}); 
    4813     public static final BitSet FOLLOW_29_in_ruleOptionalSequence3583 = new BitSet(new long[]{0x0000000000000002L}); 
    4814     public static final BitSet FOLLOW_ruleRepeatedSequence_in_entryRuleRepeatedSequence3619 = new BitSet(new long[]{0x0000000000000000L}); 
    4815     public static final BitSet FOLLOW_EOF_in_entryRuleRepeatedSequence3629 = new BitSet(new long[]{0x0000000000000002L}); 
    4816     public static final BitSet FOLLOW_33_in_ruleRepeatedSequence3666 = new BitSet(new long[]{0x0000000304000250L}); 
    4817     public static final BitSet FOLLOW_ruleDefinitionList_in_ruleRepeatedSequence3687 = new BitSet(new long[]{0x0000000040000000L}); 
    4818     public static final BitSet FOLLOW_30_in_ruleRepeatedSequence3699 = new BitSet(new long[]{0x0000000800000002L}); 
    4819     public static final BitSet FOLLOW_35_in_ruleRepeatedSequence3717 = new BitSet(new long[]{0x0000000000000002L}); 
     5858    public static final BitSet FOLLOW_ruleEtsiBnf_in_entryRuleEtsiBnf88 = new BitSet(new long[]{0x0000000000000000L}); 
     5859    public static final BitSet FOLLOW_EOF_in_entryRuleEtsiBnf98 = new BitSet(new long[]{0x0000000000000002L}); 
     5860    public static final BitSet FOLLOW_13_in_ruleEtsiBnf136 = new BitSet(new long[]{0x0000000000000010L}); 
     5861    public static final BitSet FOLLOW_RULE_ID_in_ruleEtsiBnf153 = new BitSet(new long[]{0x000000000000C000L}); 
     5862    public static final BitSet FOLLOW_14_in_ruleEtsiBnf177 = new BitSet(new long[]{0x0000000000008000L}); 
     5863    public static final BitSet FOLLOW_15_in_ruleEtsiBnf203 = new BitSet(new long[]{0x00000000000400B0L}); 
     5864    public static final BitSet FOLLOW_ruleImportSection_in_ruleEtsiBnf224 = new BitSet(new long[]{0x00000000000400B0L}); 
     5865    public static final BitSet FOLLOW_ruleBnfEntry_in_ruleEtsiBnf246 = new BitSet(new long[]{0x00000000000400B2L}); 
     5866    public static final BitSet FOLLOW_16_in_ruleEtsiBnf274 = new BitSet(new long[]{0x0000000000008000L}); 
     5867    public static final BitSet FOLLOW_15_in_ruleEtsiBnf299 = new BitSet(new long[]{0x00000000000400B2L}); 
     5868    public static final BitSet FOLLOW_ruleImportSection_in_ruleEtsiBnf320 = new BitSet(new long[]{0x00000000000400B2L}); 
     5869    public static final BitSet FOLLOW_ruleDeltaEntry_in_ruleEtsiBnf342 = new BitSet(new long[]{0x00000000000400B2L}); 
     5870    public static final BitSet FOLLOW_17_in_ruleEtsiBnf369 = new BitSet(new long[]{0x0000000000008000L}); 
     5871    public static final BitSet FOLLOW_15_in_ruleEtsiBnf394 = new BitSet(new long[]{0x000000D000040022L}); 
     5872    public static final BitSet FOLLOW_ruleImportSection_in_ruleEtsiBnf415 = new BitSet(new long[]{0x000000D000000022L}); 
     5873    public static final BitSet FOLLOW_ruleMergeEntry_in_ruleEtsiBnf437 = new BitSet(new long[]{0x000000D000000022L}); 
     5874    public static final BitSet FOLLOW_ruleImportSection_in_entryRuleImportSection475 = new BitSet(new long[]{0x0000000000000000L}); 
     5875    public static final BitSet FOLLOW_EOF_in_entryRuleImportSection485 = new BitSet(new long[]{0x0000000000000002L}); 
     5876    public static final BitSet FOLLOW_ruleImport_in_ruleImportSection530 = new BitSet(new long[]{0x0000000000040002L}); 
     5877    public static final BitSet FOLLOW_ruleBnfEntry_in_entryRuleBnfEntry566 = new BitSet(new long[]{0x0000000000000000L}); 
     5878    public static final BitSet FOLLOW_EOF_in_entryRuleBnfEntry576 = new BitSet(new long[]{0x0000000000000002L}); 
     5879    public static final BitSet FOLLOW_ruleSectionHeading_in_ruleBnfEntry622 = new BitSet(new long[]{0x0000000000000002L}); 
     5880    public static final BitSet FOLLOW_ruleRule_in_ruleBnfEntry649 = new BitSet(new long[]{0x0000000000000002L}); 
     5881    public static final BitSet FOLLOW_ruleDeltaEntry_in_entryRuleDeltaEntry685 = new BitSet(new long[]{0x0000000000000000L}); 
     5882    public static final BitSet FOLLOW_EOF_in_entryRuleDeltaEntry695 = new BitSet(new long[]{0x0000000000000002L}); 
     5883    public static final BitSet FOLLOW_ruleRule_in_ruleDeltaEntry741 = new BitSet(new long[]{0x0000000000000002L}); 
     5884    public static final BitSet FOLLOW_ruleSectionHeading_in_ruleDeltaEntry768 = new BitSet(new long[]{0x0000000000000002L}); 
     5885    public static final BitSet FOLLOW_ruleExtRule_in_ruleDeltaEntry795 = new BitSet(new long[]{0x0000000000000002L}); 
     5886    public static final BitSet FOLLOW_ruleMergeEntry_in_entryRuleMergeEntry831 = new BitSet(new long[]{0x0000000000000000L}); 
     5887    public static final BitSet FOLLOW_EOF_in_entryRuleMergeEntry841 = new BitSet(new long[]{0x0000000000000002L}); 
     5888    public static final BitSet FOLLOW_ruleSectionHeading_in_ruleMergeEntry887 = new BitSet(new long[]{0x0000000000000002L}); 
     5889    public static final BitSet FOLLOW_ruleMergeRule_in_ruleMergeEntry914 = new BitSet(new long[]{0x0000000000000002L}); 
     5890    public static final BitSet FOLLOW_ruleSectionHeading_in_entryRuleSectionHeading950 = new BitSet(new long[]{0x0000000000000000L}); 
     5891    public static final BitSet FOLLOW_EOF_in_entryRuleSectionHeading960 = new BitSet(new long[]{0x0000000000000002L}); 
     5892    public static final BitSet FOLLOW_RULE_SECTIONHEADER_in_ruleSectionHeading1014 = new BitSet(new long[]{0x0000000000000002L}); 
     5893    public static final BitSet FOLLOW_ruleImport_in_entryRuleImport1055 = new BitSet(new long[]{0x0000000000000000L}); 
     5894    public static final BitSet FOLLOW_EOF_in_entryRuleImport1065 = new BitSet(new long[]{0x0000000000000002L}); 
     5895    public static final BitSet FOLLOW_18_in_ruleImport1102 = new BitSet(new long[]{0x0000000000000040L}); 
     5896    public static final BitSet FOLLOW_RULE_STRING_in_ruleImport1119 = new BitSet(new long[]{0x0000000000888000L}); 
     5897    public static final BitSet FOLLOW_19_in_ruleImport1137 = new BitSet(new long[]{0x0000000000700000L}); 
     5898    public static final BitSet FOLLOW_20_in_ruleImport1156 = new BitSet(new long[]{0x0000000000808000L}); 
     5899    public static final BitSet FOLLOW_21_in_ruleImport1193 = new BitSet(new long[]{0x0000000000808000L}); 
     5900    public static final BitSet FOLLOW_22_in_ruleImport1230 = new BitSet(new long[]{0x0000000000808000L}); 
     5901    public static final BitSet FOLLOW_23_in_ruleImport1259 = new BitSet(new long[]{0x0000000000000010L}); 
     5902    public static final BitSet FOLLOW_RULE_ID_in_ruleImport1276 = new BitSet(new long[]{0x0000000000008000L}); 
     5903    public static final BitSet FOLLOW_15_in_ruleImport1295 = new BitSet(new long[]{0x0000000000000002L}); 
     5904    public static final BitSet FOLLOW_ruleRule_in_entryRuleRule1331 = new BitSet(new long[]{0x0000000000000000L}); 
     5905    public static final BitSet FOLLOW_EOF_in_entryRuleRule1341 = new BitSet(new long[]{0x0000000000000002L}); 
     5906    public static final BitSet FOLLOW_RULE_INT_in_ruleRule1384 = new BitSet(new long[]{0x0000000001000010L}); 
     5907    public static final BitSet FOLLOW_RULE_ID_in_ruleRule1406 = new BitSet(new long[]{0x0000000001000000L}); 
     5908    public static final BitSet FOLLOW_24_in_ruleRule1424 = new BitSet(new long[]{0x0000000000000010L}); 
     5909    public static final BitSet FOLLOW_RULE_ID_in_ruleRule1443 = new BitSet(new long[]{0x0000000002000000L}); 
     5910    public static final BitSet FOLLOW_25_in_ruleRule1460 = new BitSet(new long[]{0x0000000304008252L}); 
     5911    public static final BitSet FOLLOW_ruleDefinitionList_in_ruleRule1481 = new BitSet(new long[]{0x0000000000008002L}); 
     5912    public static final BitSet FOLLOW_15_in_ruleRule1495 = new BitSet(new long[]{0x0000000000000002L}); 
     5913    public static final BitSet FOLLOW_ruleExtRule_in_entryRuleExtRule1533 = new BitSet(new long[]{0x0000000000000000L}); 
     5914    public static final BitSet FOLLOW_EOF_in_entryRuleExtRule1543 = new BitSet(new long[]{0x0000000000000002L}); 
     5915    public static final BitSet FOLLOW_RULE_INT_in_ruleExtRule1586 = new BitSet(new long[]{0x0000000001000010L}); 
     5916    public static final BitSet FOLLOW_RULE_ID_in_ruleExtRule1608 = new BitSet(new long[]{0x0000000001000000L}); 
     5917    public static final BitSet FOLLOW_24_in_ruleExtRule1626 = new BitSet(new long[]{0x0000000000000010L}); 
     5918    public static final BitSet FOLLOW_RULE_ID_in_ruleExtRule1645 = new BitSet(new long[]{0x0000000004000000L}); 
     5919    public static final BitSet FOLLOW_26_in_ruleExtRule1663 = new BitSet(new long[]{0x0000000000000080L}); 
     5920    public static final BitSet FOLLOW_RULE_INT_in_ruleExtRule1680 = new BitSet(new long[]{0x0000000008000000L}); 
     5921    public static final BitSet FOLLOW_27_in_ruleExtRule1697 = new BitSet(new long[]{0x0000000010000000L}); 
     5922    public static final BitSet FOLLOW_28_in_ruleExtRule1710 = new BitSet(new long[]{0x0000000FEC008252L}); 
     5923    public static final BitSet FOLLOW_ruleAtom_in_ruleExtRule1732 = new BitSet(new long[]{0x0000000FEC008252L}); 
     5924    public static final BitSet FOLLOW_27_in_ruleExtRule1750 = new BitSet(new long[]{0x0000000FEC008252L}); 
     5925    public static final BitSet FOLLOW_29_in_ruleExtRule1768 = new BitSet(new long[]{0x0000000FEC008252L}); 
     5926    public static final BitSet FOLLOW_30_in_ruleExtRule1786 = new BitSet(new long[]{0x0000000FEC008252L}); 
     5927    public static final BitSet FOLLOW_31_in_ruleExtRule1804 = new BitSet(new long[]{0x0000000FEC008252L}); 
     5928    public static final BitSet FOLLOW_26_in_ruleExtRule1822 = new BitSet(new long[]{0x0000000FEC008252L}); 
     5929    public static final BitSet FOLLOW_32_in_ruleExtRule1840 = new BitSet(new long[]{0x0000000FEC008252L}); 
     5930    public static final BitSet FOLLOW_33_in_ruleExtRule1858 = new BitSet(new long[]{0x0000000FEC008252L}); 
     5931    public static final BitSet FOLLOW_34_in_ruleExtRule1876 = new BitSet(new long[]{0x0000000FEC008252L}); 
     5932    public static final BitSet FOLLOW_35_in_ruleExtRule1894 = new BitSet(new long[]{0x0000000FEC008252L}); 
     5933    public static final BitSet FOLLOW_15_in_ruleExtRule1909 = new BitSet(new long[]{0x0000000000000002L}); 
     5934    public static final BitSet FOLLOW_ruleMergeRule_in_entryRuleMergeRule1947 = new BitSet(new long[]{0x0000000000000000L}); 
     5935    public static final BitSet FOLLOW_EOF_in_entryRuleMergeRule1957 = new BitSet(new long[]{0x0000000000000002L}); 
     5936    public static final BitSet FOLLOW_ruleGlobalCombinator_in_ruleMergeRule2007 = new BitSet(new long[]{0x0000000000000002L}); 
     5937    public static final BitSet FOLLOW_ruleRuleCombinator_in_ruleMergeRule2037 = new BitSet(new long[]{0x0000000000000002L}); 
     5938    public static final BitSet FOLLOW_ruleHookCombinator_in_ruleMergeRule2067 = new BitSet(new long[]{0x0000000000000002L}); 
     5939    public static final BitSet FOLLOW_ruleGlobalCombinator_in_entryRuleGlobalCombinator2102 = new BitSet(new long[]{0x0000000000000000L}); 
     5940    public static final BitSet FOLLOW_EOF_in_entryRuleGlobalCombinator2112 = new BitSet(new long[]{0x0000000000000002L}); 
     5941    public static final BitSet FOLLOW_36_in_ruleGlobalCombinator2150 = new BitSet(new long[]{0x0000002000000000L}); 
     5942    public static final BitSet FOLLOW_37_in_ruleGlobalCombinator2162 = new BitSet(new long[]{0x0000000000000100L}); 
     5943    public static final BitSet FOLLOW_RULE_LOGIC_in_ruleGlobalCombinator2180 = new BitSet(new long[]{0x0000000000008002L}); 
     5944    public static final BitSet FOLLOW_15_in_ruleGlobalCombinator2198 = new BitSet(new long[]{0x0000000000000002L}); 
     5945    public static final BitSet FOLLOW_ruleRuleCombinator_in_entryRuleRuleCombinator2236 = new BitSet(new long[]{0x0000000000000000L}); 
     5946    public static final BitSet FOLLOW_EOF_in_entryRuleRuleCombinator2246 = new BitSet(new long[]{0x0000000000000002L}); 
     5947    public static final BitSet FOLLOW_38_in_ruleRuleCombinator2284 = new BitSet(new long[]{0x0000002000000000L}); 
     5948    public static final BitSet FOLLOW_37_in_ruleRuleCombinator2296 = new BitSet(new long[]{0x0000000000000010L}); 
     5949    public static final BitSet FOLLOW_RULE_ID_in_ruleRuleCombinator2313 = new BitSet(new long[]{0x0000000000000100L}); 
     5950    public static final BitSet FOLLOW_RULE_LOGIC_in_ruleRuleCombinator2336 = new BitSet(new long[]{0x0000000004008002L}); 
     5951    public static final BitSet FOLLOW_26_in_ruleRuleCombinator2354 = new BitSet(new long[]{0x0000000000000040L}); 
     5952    public static final BitSet FOLLOW_RULE_STRING_in_ruleRuleCombinator2371 = new BitSet(new long[]{0x0000000008000000L}); 
     5953    public static final BitSet FOLLOW_27_in_ruleRuleCombinator2388 = new BitSet(new long[]{0x0000000004008002L}); 
     5954    public static final BitSet FOLLOW_15_in_ruleRuleCombinator2403 = new BitSet(new long[]{0x0000000000000002L}); 
     5955    public static final BitSet FOLLOW_ruleHookCombinator_in_entryRuleHookCombinator2441 = new BitSet(new long[]{0x0000000000000000L}); 
     5956    public static final BitSet FOLLOW_EOF_in_entryRuleHookCombinator2451 = new BitSet(new long[]{0x0000000000000002L}); 
     5957    public static final BitSet FOLLOW_39_in_ruleHookCombinator2488 = new BitSet(new long[]{0x0000002000000000L}); 
     5958    public static final BitSet FOLLOW_37_in_ruleHookCombinator2500 = new BitSet(new long[]{0x0000000000000010L}); 
     5959    public static final BitSet FOLLOW_RULE_ID_in_ruleHookCombinator2517 = new BitSet(new long[]{0x0000000004000000L}); 
     5960    public static final BitSet FOLLOW_26_in_ruleHookCombinator2534 = new BitSet(new long[]{0x0000000000000080L}); 
     5961    public static final BitSet FOLLOW_RULE_INT_in_ruleHookCombinator2551 = new BitSet(new long[]{0x0000000008000000L}); 
     5962    public static final BitSet FOLLOW_27_in_ruleHookCombinator2568 = new BitSet(new long[]{0x0000000004000100L}); 
     5963    public static final BitSet FOLLOW_RULE_LOGIC_in_ruleHookCombinator2585 = new BitSet(new long[]{0x0000000004000000L}); 
     5964    public static final BitSet FOLLOW_26_in_ruleHookCombinator2604 = new BitSet(new long[]{0x0000000000000040L}); 
     5965    public static final BitSet FOLLOW_RULE_STRING_in_ruleHookCombinator2621 = new BitSet(new long[]{0x0000000008000000L}); 
     5966    public static final BitSet FOLLOW_27_in_ruleHookCombinator2638 = new BitSet(new long[]{0x0000000004008002L}); 
     5967    public static final BitSet FOLLOW_15_in_ruleHookCombinator2653 = new BitSet(new long[]{0x0000000000000002L}); 
     5968    public static final BitSet FOLLOW_ruleDefinitionList_in_entryRuleDefinitionList2691 = new BitSet(new long[]{0x0000000000000000L}); 
     5969    public static final BitSet FOLLOW_EOF_in_entryRuleDefinitionList2701 = new BitSet(new long[]{0x0000000000000002L}); 
     5970    public static final BitSet FOLLOW_ruleSingleDefinition_in_ruleDefinitionList2747 = new BitSet(new long[]{0x0000000080000002L}); 
     5971    public static final BitSet FOLLOW_31_in_ruleDefinitionList2760 = new BitSet(new long[]{0x0000000304000250L}); 
     5972    public static final BitSet FOLLOW_ruleSingleDefinition_in_ruleDefinitionList2781 = new BitSet(new long[]{0x0000000080000002L}); 
     5973    public static final BitSet FOLLOW_ruleSingleDefinition_in_entryRuleSingleDefinition2819 = new BitSet(new long[]{0x0000000000000000L}); 
     5974    public static final BitSet FOLLOW_EOF_in_entryRuleSingleDefinition2829 = new BitSet(new long[]{0x0000000000000002L}); 
     5975    public static final BitSet FOLLOW_ruleTerm_in_ruleSingleDefinition2874 = new BitSet(new long[]{0x0000000304000252L}); 
     5976    public static final BitSet FOLLOW_ruleTerm_in_entryRuleTerm2910 = new BitSet(new long[]{0x0000000000000000L}); 
     5977    public static final BitSet FOLLOW_EOF_in_entryRuleTerm2920 = new BitSet(new long[]{0x0000000000000002L}); 
     5978    public static final BitSet FOLLOW_ruleAtom_in_ruleTerm2966 = new BitSet(new long[]{0x0000000000000002L}); 
     5979    public static final BitSet FOLLOW_ruleGroupedSequence_in_ruleTerm2993 = new BitSet(new long[]{0x0000000000000002L}); 
     5980    public static final BitSet FOLLOW_ruleOptionalSequence_in_ruleTerm3020 = new BitSet(new long[]{0x0000000000000002L}); 
     5981    public static final BitSet FOLLOW_ruleRepeatedSequence_in_ruleTerm3047 = new BitSet(new long[]{0x0000000000000002L}); 
     5982    public static final BitSet FOLLOW_ruleAtom_in_entryRuleAtom3083 = new BitSet(new long[]{0x0000000000000000L}); 
     5983    public static final BitSet FOLLOW_EOF_in_entryRuleAtom3093 = new BitSet(new long[]{0x0000000000000002L}); 
     5984    public static final BitSet FOLLOW_ruleStringRule_in_ruleAtom3139 = new BitSet(new long[]{0x0000000000000002L}); 
     5985    public static final BitSet FOLLOW_ruleRuleReference_in_ruleAtom3166 = new BitSet(new long[]{0x0000000000000002L}); 
     5986    public static final BitSet FOLLOW_ruleRuleReference_in_entryRuleRuleReference3202 = new BitSet(new long[]{0x0000000000000000L}); 
     5987    public static final BitSet FOLLOW_EOF_in_entryRuleRuleReference3212 = new BitSet(new long[]{0x0000000000000002L}); 
     5988    public static final BitSet FOLLOW_RULE_ID_in_ruleRuleReference3260 = new BitSet(new long[]{0x0000000000000002L}); 
     5989    public static final BitSet FOLLOW_ruleStringRule_in_entryRuleStringRule3295 = new BitSet(new long[]{0x0000000000000000L}); 
     5990    public static final BitSet FOLLOW_EOF_in_entryRuleStringRule3305 = new BitSet(new long[]{0x0000000000000002L}); 
     5991    public static final BitSet FOLLOW_RULE_STRING_in_ruleStringRule3347 = new BitSet(new long[]{0x0000000000000002L}); 
     5992    public static final BitSet FOLLOW_RULE_COLON_in_ruleStringRule3375 = new BitSet(new long[]{0x0000000000000002L}); 
     5993    public static final BitSet FOLLOW_ruleGroupedSequence_in_entryRuleGroupedSequence3416 = new BitSet(new long[]{0x0000000000000000L}); 
     5994    public static final BitSet FOLLOW_EOF_in_entryRuleGroupedSequence3426 = new BitSet(new long[]{0x0000000000000002L}); 
     5995    public static final BitSet FOLLOW_26_in_ruleGroupedSequence3463 = new BitSet(new long[]{0x0000000304000250L}); 
     5996    public static final BitSet FOLLOW_ruleDefinitionList_in_ruleGroupedSequence3484 = new BitSet(new long[]{0x0000000008000000L}); 
     5997    public static final BitSet FOLLOW_27_in_ruleGroupedSequence3496 = new BitSet(new long[]{0x0000000000000002L}); 
     5998    public static final BitSet FOLLOW_ruleOptionalSequence_in_entryRuleOptionalSequence3532 = new BitSet(new long[]{0x0000000000000000L}); 
     5999    public static final BitSet FOLLOW_EOF_in_entryRuleOptionalSequence3542 = new BitSet(new long[]{0x0000000000000002L}); 
     6000    public static final BitSet FOLLOW_32_in_ruleOptionalSequence3579 = new BitSet(new long[]{0x0000000304000250L}); 
     6001    public static final BitSet FOLLOW_ruleDefinitionList_in_ruleOptionalSequence3600 = new BitSet(new long[]{0x0000000020000000L}); 
     6002    public static final BitSet FOLLOW_29_in_ruleOptionalSequence3612 = new BitSet(new long[]{0x0000000000000002L}); 
     6003    public static final BitSet FOLLOW_ruleRepeatedSequence_in_entryRuleRepeatedSequence3648 = new BitSet(new long[]{0x0000000000000000L}); 
     6004    public static final BitSet FOLLOW_EOF_in_entryRuleRepeatedSequence3658 = new BitSet(new long[]{0x0000000000000002L}); 
     6005    public static final BitSet FOLLOW_33_in_ruleRepeatedSequence3695 = new BitSet(new long[]{0x0000000304000250L}); 
     6006    public static final BitSet FOLLOW_ruleDefinitionList_in_ruleRepeatedSequence3716 = new BitSet(new long[]{0x0000000040000000L}); 
     6007    public static final BitSet FOLLOW_30_in_ruleRepeatedSequence3728 = new BitSet(new long[]{0x0000010800000002L}); 
     6008    public static final BitSet FOLLOW_35_in_ruleRepeatedSequence3747 = new BitSet(new long[]{0x0000000000000002L}); 
     6009    public static final BitSet FOLLOW_ruleRepeatRange_in_ruleRepeatedSequence3788 = new BitSet(new long[]{0x0000000000000002L}); 
     6010    public static final BitSet FOLLOW_ruleRepeatRange_in_entryRuleRepeatRange3826 = new BitSet(new long[]{0x0000000000000000L}); 
     6011    public static final BitSet FOLLOW_EOF_in_entryRuleRepeatRange3836 = new BitSet(new long[]{0x0000000000000002L}); 
     6012    public static final BitSet FOLLOW_40_in_ruleRepeatRange3873 = new BitSet(new long[]{0x0000000004000000L}); 
     6013    public static final BitSet FOLLOW_26_in_ruleRepeatRange3885 = new BitSet(new long[]{0x0000000000000080L}); 
     6014    public static final BitSet FOLLOW_RULE_INT_in_ruleRepeatRange3902 = new BitSet(new long[]{0x0000020000000000L}); 
     6015    public static final BitSet FOLLOW_41_in_ruleRepeatRange3919 = new BitSet(new long[]{0x0000000000000080L}); 
     6016    public static final BitSet FOLLOW_RULE_INT_in_ruleRepeatRange3936 = new BitSet(new long[]{0x0000000008000000L}); 
     6017    public static final BitSet FOLLOW_27_in_ruleRepeatRange3953 = new BitSet(new long[]{0x0000000000000002L}); 
     6018    public static final BitSet FOLLOW_35_in_synpred52_InternalEbnf3747 = new BitSet(new long[]{0x0000000000000002L}); 
    48206019 
    48216020} 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/serializer/EbnfSemanticSequencer.java

    r88 r95  
    1717import de.ugoe.cs.swe.bnftools.ebnf.MergeEntry; 
    1818import de.ugoe.cs.swe.bnftools.ebnf.OptionalSequence; 
     19import de.ugoe.cs.swe.bnftools.ebnf.RepeatRange; 
    1920import de.ugoe.cs.swe.bnftools.ebnf.RepeatedSequence; 
    2021import de.ugoe.cs.swe.bnftools.ebnf.Rule; 
     
    126127                                } 
    127128                                else break; 
     129                        case EbnfPackage.REPEAT_RANGE: 
     130                                if(context == grammarAccess.getRepeatRangeRule()) { 
     131                                        sequence_RepeatRange(context, (RepeatRange) semanticObject);  
     132                                        return;  
     133                                } 
     134                                else break; 
    128135                        case EbnfPackage.REPEATED_SEQUENCE: 
    129136                                if(context == grammarAccess.getRepeatedSequenceRule()) { 
     
    309316        /** 
    310317         * Constraint: 
    311          *     (definitions+=DefinitionList morethanonce?='+'?) 
     318         *     (from=INT to=INT) 
     319         */ 
     320        protected void sequence_RepeatRange(EObject context, RepeatRange semanticObject) { 
     321                if(errorAcceptor != null) { 
     322                        if(transientValues.isValueTransient(semanticObject, EbnfPackage.Literals.REPEAT_RANGE__FROM) == ValueTransient.YES) 
     323                                errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, EbnfPackage.Literals.REPEAT_RANGE__FROM)); 
     324                        if(transientValues.isValueTransient(semanticObject, EbnfPackage.Literals.REPEAT_RANGE__TO) == ValueTransient.YES) 
     325                                errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, EbnfPackage.Literals.REPEAT_RANGE__TO)); 
     326                } 
     327                INodesForEObjectProvider nodes = createNodeProvider(semanticObject); 
     328                SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes); 
     329                feeder.accept(grammarAccess.getRepeatRangeAccess().getFromINTTerminalRuleCall_2_0(), semanticObject.getFrom()); 
     330                feeder.accept(grammarAccess.getRepeatRangeAccess().getToINTTerminalRuleCall_4_0(), semanticObject.getTo()); 
     331                feeder.finish(); 
     332        } 
     333         
     334         
     335        /** 
     336         * Constraint: 
     337         *     (definitions+=DefinitionList (morethanonce?='+'? | range=RepeatRange?)) 
    312338         */ 
    313339        protected void sequence_RepeatedSequence(EObject context, RepeatedSequence semanticObject) { 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/serializer/EbnfSyntacticSequencer.java

    r88 r95  
    7676         * Syntax: 
    7777         *     ( 
    78              '{' |  
    7978             '}' |  
    80              '[' |  
     79             '*' |  
    8180             ']' |  
    82              '*' |  
    83              '+' |  
    8481             '|' |  
    8582             '(' |  
    86              ')' 
     83             '{' |  
     84             '+' |  
     85             ')' |  
     86             '[' 
    8787         )* 
    8888         */ 
  • v2/trunk/de.ugoe.cs.swe.bnftools.ebnf/src-gen/de/ugoe/cs/swe/bnftools/services/EbnfGrammarAccess.java

    r88 r95  
    985985                private final RuleCall cDefinitionsDefinitionListParserRuleCall_1_0 = (RuleCall)cDefinitionsAssignment_1.eContents().get(0); 
    986986                private final Keyword cRightCurlyBracketKeyword_2 = (Keyword)cGroup.eContents().get(2); 
    987                 private final Assignment cMorethanonceAssignment_3 = (Assignment)cGroup.eContents().get(3); 
    988                 private final Keyword cMorethanoncePlusSignKeyword_3_0 = (Keyword)cMorethanonceAssignment_3.eContents().get(0); 
     987                private final Alternatives cAlternatives_3 = (Alternatives)cGroup.eContents().get(3); 
     988                private final Assignment cMorethanonceAssignment_3_0 = (Assignment)cAlternatives_3.eContents().get(0); 
     989                private final Keyword cMorethanoncePlusSignKeyword_3_0_0 = (Keyword)cMorethanonceAssignment_3_0.eContents().get(0); 
     990                private final Assignment cRangeAssignment_3_1 = (Assignment)cAlternatives_3.eContents().get(1); 
     991                private final RuleCall cRangeRepeatRangeParserRuleCall_3_1_0 = (RuleCall)cRangeAssignment_3_1.eContents().get(0); 
    989992                 
    990993                //RepeatedSequence: 
    991                 //      "{" definitions+=DefinitionList "}" morethanonce?="+"?; 
    992                 public ParserRule getRule() { return rule; } 
    993  
    994                 //"{" definitions+=DefinitionList "}" morethanonce?="+"? 
     994                //      "{" definitions+=DefinitionList "}" (morethanonce?="+"? | range=RepeatRange?); 
     995                public ParserRule getRule() { return rule; } 
     996 
     997                //"{" definitions+=DefinitionList "}" (morethanonce?="+"? | range=RepeatRange?) 
    995998                public Group getGroup() { return cGroup; } 
    996999 
     
    10071010                public Keyword getRightCurlyBracketKeyword_2() { return cRightCurlyBracketKeyword_2; } 
    10081011 
     1012                //morethanonce?="+"? | range=RepeatRange? 
     1013                public Alternatives getAlternatives_3() { return cAlternatives_3; } 
     1014 
    10091015                //morethanonce?="+"? 
    1010                 public Assignment getMorethanonceAssignment_3() { return cMorethanonceAssignment_3; } 
     1016                public Assignment getMorethanonceAssignment_3_0() { return cMorethanonceAssignment_3_0; } 
    10111017 
    10121018                //"+" 
    1013                 public Keyword getMorethanoncePlusSignKeyword_3_0() { return cMorethanoncePlusSignKeyword_3_0; } 
     1019                public Keyword getMorethanoncePlusSignKeyword_3_0_0() { return cMorethanoncePlusSignKeyword_3_0_0; } 
     1020 
     1021                //range=RepeatRange? 
     1022                public Assignment getRangeAssignment_3_1() { return cRangeAssignment_3_1; } 
     1023 
     1024                //RepeatRange 
     1025                public RuleCall getRangeRepeatRangeParserRuleCall_3_1_0() { return cRangeRepeatRangeParserRuleCall_3_1_0; } 
     1026        } 
     1027 
     1028        public class RepeatRangeElements extends AbstractParserRuleElementFinder { 
     1029                private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "RepeatRange"); 
     1030                private final Group cGroup = (Group)rule.eContents().get(1); 
     1031                private final Keyword cNumberSignKeyword_0 = (Keyword)cGroup.eContents().get(0); 
     1032                private final Keyword cLeftParenthesisKeyword_1 = (Keyword)cGroup.eContents().get(1); 
     1033                private final Assignment cFromAssignment_2 = (Assignment)cGroup.eContents().get(2); 
     1034                private final RuleCall cFromINTTerminalRuleCall_2_0 = (RuleCall)cFromAssignment_2.eContents().get(0); 
     1035                private final Keyword cCommaKeyword_3 = (Keyword)cGroup.eContents().get(3); 
     1036                private final Assignment cToAssignment_4 = (Assignment)cGroup.eContents().get(4); 
     1037                private final RuleCall cToINTTerminalRuleCall_4_0 = (RuleCall)cToAssignment_4.eContents().get(0); 
     1038                private final Keyword cRightParenthesisKeyword_5 = (Keyword)cGroup.eContents().get(5); 
     1039                 
     1040                //RepeatRange: 
     1041                //      "#" "(" from=INT "," to=INT ")"; 
     1042                public ParserRule getRule() { return rule; } 
     1043 
     1044                //"#" "(" from=INT "," to=INT ")" 
     1045                public Group getGroup() { return cGroup; } 
     1046 
     1047                //"#" 
     1048                public Keyword getNumberSignKeyword_0() { return cNumberSignKeyword_0; } 
     1049 
     1050                //"(" 
     1051                public Keyword getLeftParenthesisKeyword_1() { return cLeftParenthesisKeyword_1; } 
     1052 
     1053                //from=INT 
     1054                public Assignment getFromAssignment_2() { return cFromAssignment_2; } 
     1055 
     1056                //INT 
     1057                public RuleCall getFromINTTerminalRuleCall_2_0() { return cFromINTTerminalRuleCall_2_0; } 
     1058 
     1059                //"," 
     1060                public Keyword getCommaKeyword_3() { return cCommaKeyword_3; } 
     1061 
     1062                //to=INT 
     1063                public Assignment getToAssignment_4() { return cToAssignment_4; } 
     1064 
     1065                //INT 
     1066                public RuleCall getToINTTerminalRuleCall_4_0() { return cToINTTerminalRuleCall_4_0; } 
     1067 
     1068                //")" 
     1069                public Keyword getRightParenthesisKeyword_5() { return cRightParenthesisKeyword_5; } 
    10141070        } 
    10151071         
     
    10371093        private OptionalSequenceElements pOptionalSequence; 
    10381094        private RepeatedSequenceElements pRepeatedSequence; 
     1095        private RepeatRangeElements pRepeatRange; 
    10391096        private TerminalRule tID; 
    10401097        private TerminalRule tINT; 
     
    12991356 
    13001357        //RepeatedSequence: 
    1301         //      "{" definitions+=DefinitionList "}" morethanonce?="+"?; 
     1358        //      "{" definitions+=DefinitionList "}" (morethanonce?="+"? | range=RepeatRange?); 
    13021359        public RepeatedSequenceElements getRepeatedSequenceAccess() { 
    13031360                return (pRepeatedSequence != null) ? pRepeatedSequence : (pRepeatedSequence = new RepeatedSequenceElements()); 
     
    13061363        public ParserRule getRepeatedSequenceRule() { 
    13071364                return getRepeatedSequenceAccess().getRule(); 
     1365        } 
     1366 
     1367        //RepeatRange: 
     1368        //      "#" "(" from=INT "," to=INT ")"; 
     1369        public RepeatRangeElements getRepeatRangeAccess() { 
     1370                return (pRepeatRange != null) ? pRepeatRange : (pRepeatRange = new RepeatRangeElements()); 
     1371        } 
     1372         
     1373        public ParserRule getRepeatRangeRule() { 
     1374                return getRepeatRangeAccess().getRule(); 
    13081375        } 
    13091376 
Note: See TracChangeset for help on using the changeset viewer.