Search in sources :

Example 6 with AntlrDatatypeRuleToken

use of org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken in project n4js by eclipse.

the class InternalN4MFParser method ruleProjectDescription.

// $ANTLR end "entryRuleProjectDescription"
// $ANTLR start "ruleProjectDescription"
// InternalN4MFParser.g:72:1: ruleProjectDescription returns [EObject current=null] : ( ( ( ( ({...}? => ( ({...}? => (otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_projectDependencies_22_0= ruleProjectDependencies ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_implementedProjects_26_0= ruleImplementedProjects ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_initModules_27_0= ruleInitModules ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_execModule_28_0= ruleExecModule ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => ( (lv_testedProjects_52_0= ruleTestedProjects ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) ) ) ) ) ) )+ {...}?) ) ) ;
public final EObject ruleProjectDescription() throws RecognitionException {
    EObject current = null;
    Token otherlv_1 = null;
    Token otherlv_2 = null;
    Token otherlv_4 = null;
    Token otherlv_5 = null;
    Token otherlv_7 = null;
    Token otherlv_8 = null;
    Token otherlv_10 = null;
    Token otherlv_11 = null;
    Token otherlv_13 = null;
    Token otherlv_14 = null;
    Token lv_vendorName_15_0 = null;
    Token otherlv_16 = null;
    Token otherlv_17 = null;
    Token lv_mainModule_18_0 = null;
    Token otherlv_23 = null;
    Token otherlv_24 = null;
    Token otherlv_29 = null;
    Token otherlv_30 = null;
    Token lv_outputPath_31_0 = null;
    Token otherlv_32 = null;
    Token otherlv_33 = null;
    Token lv_libraryPaths_34_0 = null;
    Token otherlv_35 = null;
    Token lv_libraryPaths_36_0 = null;
    Token otherlv_37 = null;
    Token otherlv_38 = null;
    Token otherlv_39 = null;
    Token lv_resourcePaths_40_0 = null;
    Token otherlv_41 = null;
    Token lv_resourcePaths_42_0 = null;
    Token otherlv_43 = null;
    Token otherlv_44 = null;
    Token otherlv_45 = null;
    Token otherlv_47 = null;
    Token otherlv_48 = null;
    Token otherlv_49 = null;
    Token otherlv_51 = null;
    Token otherlv_53 = null;
    Token otherlv_54 = null;
    AntlrDatatypeRuleToken lv_projectId_3_0 = null;
    Enumerator lv_projectType_6_0 = null;
    EObject lv_projectVersion_9_0 = null;
    AntlrDatatypeRuleToken lv_declaredVendorId_12_0 = null;
    EObject lv_extendedRuntimeEnvironment_19_0 = null;
    EObject lv_providedRuntimeLibraries_20_0 = null;
    EObject lv_requiredRuntimeLibraries_21_0 = null;
    EObject lv_projectDependencies_22_0 = null;
    AntlrDatatypeRuleToken lv_implementationId_25_0 = null;
    EObject lv_implementedProjects_26_0 = null;
    EObject lv_initModules_27_0 = null;
    EObject lv_execModule_28_0 = null;
    EObject lv_sourceFragment_46_0 = null;
    EObject lv_moduleFilters_50_0 = null;
    EObject lv_testedProjects_52_0 = null;
    Enumerator lv_moduleLoader_55_0 = null;
    enterRule();
    try {
        // InternalN4MFParser.g:78:2: ( ( ( ( ( ({...}? => ( ({...}? => (otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_projectDependencies_22_0= ruleProjectDependencies ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_implementedProjects_26_0= ruleImplementedProjects ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_initModules_27_0= ruleInitModules ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_execModule_28_0= ruleExecModule ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => ( (lv_testedProjects_52_0= ruleTestedProjects ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) ) ) ) ) ) )+ {...}?) ) ) )
        // InternalN4MFParser.g:79:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_projectDependencies_22_0= ruleProjectDependencies ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_implementedProjects_26_0= ruleImplementedProjects ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_initModules_27_0= ruleInitModules ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_execModule_28_0= ruleExecModule ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => ( (lv_testedProjects_52_0= ruleTestedProjects ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) ) ) ) ) ) )+ {...}?) ) )
        {
            // InternalN4MFParser.g:79:2: ( ( ( ( ({...}? => ( ({...}? => (otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_projectDependencies_22_0= ruleProjectDependencies ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_implementedProjects_26_0= ruleImplementedProjects ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_initModules_27_0= ruleInitModules ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_execModule_28_0= ruleExecModule ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => ( (lv_testedProjects_52_0= ruleTestedProjects ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) ) ) ) ) ) )+ {...}?) ) )
            // InternalN4MFParser.g:80:3: ( ( ( ({...}? => ( ({...}? => (otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_projectDependencies_22_0= ruleProjectDependencies ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_implementedProjects_26_0= ruleImplementedProjects ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_initModules_27_0= ruleInitModules ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_execModule_28_0= ruleExecModule ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => ( (lv_testedProjects_52_0= ruleTestedProjects ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) ) ) ) ) ) )+ {...}?) )
            {
                // InternalN4MFParser.g:80:3: ( ( ( ({...}? => ( ({...}? => (otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_projectDependencies_22_0= ruleProjectDependencies ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_implementedProjects_26_0= ruleImplementedProjects ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_initModules_27_0= ruleInitModules ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_execModule_28_0= ruleExecModule ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => ( (lv_testedProjects_52_0= ruleTestedProjects ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) ) ) ) ) ) )+ {...}?) )
                // InternalN4MFParser.g:81:4: ( ( ({...}? => ( ({...}? => (otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_projectDependencies_22_0= ruleProjectDependencies ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_implementedProjects_26_0= ruleImplementedProjects ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_initModules_27_0= ruleInitModules ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_execModule_28_0= ruleExecModule ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => ( (lv_testedProjects_52_0= ruleTestedProjects ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) ) ) ) ) ) )+ {...}?)
                {
                    getUnorderedGroupHelper().enter(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                    // InternalN4MFParser.g:84:4: ( ( ({...}? => ( ({...}? => (otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_projectDependencies_22_0= ruleProjectDependencies ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_implementedProjects_26_0= ruleImplementedProjects ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_initModules_27_0= ruleInitModules ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_execModule_28_0= ruleExecModule ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => ( (lv_testedProjects_52_0= ruleTestedProjects ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) ) ) ) ) ) )+ {...}?)
                    // InternalN4MFParser.g:85:5: ( ({...}? => ( ({...}? => (otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_projectDependencies_22_0= ruleProjectDependencies ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_implementedProjects_26_0= ruleImplementedProjects ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_initModules_27_0= ruleInitModules ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_execModule_28_0= ruleExecModule ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => ( (lv_testedProjects_52_0= ruleTestedProjects ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) ) ) ) ) ) )+ {...}?
                    {
                        // InternalN4MFParser.g:85:5: ( ({...}? => ( ({...}? => (otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_projectDependencies_22_0= ruleProjectDependencies ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_implementedProjects_26_0= ruleImplementedProjects ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_initModules_27_0= ruleInitModules ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_execModule_28_0= ruleExecModule ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => (otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket ) ) ) ) | ({...}? => ( ({...}? => ( (lv_testedProjects_52_0= ruleTestedProjects ) ) ) ) ) | ({...}? => ( ({...}? => (otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) ) ) ) ) ) )+
                        int cnt5 = 0;
                        loop5: do {
                            int alt5 = 22;
                            alt5 = dfa5.predict(input);
                            switch(alt5) {
                                case 1:
                                    // InternalN4MFParser.g:86:3: ({...}? => ( ({...}? => (otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) ) ) ) ) )
                                    {
                                        // InternalN4MFParser.g:86:3: ({...}? => ( ({...}? => (otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) ) ) ) ) )
                                        // InternalN4MFParser.g:87:4: {...}? => ( ({...}? => (otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) ) ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 0)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 0)");
                                            }
                                            // InternalN4MFParser.g:87:112: ( ({...}? => (otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) ) ) ) )
                                            // InternalN4MFParser.g:88:5: ({...}? => (otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) ) ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 0);
                                                // InternalN4MFParser.g:91:8: ({...}? => (otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) ) ) )
                                                // InternalN4MFParser.g:91:9: {...}? => (otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) ) )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:91:18: (otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) ) )
                                                    // InternalN4MFParser.g:91:19: otherlv_1= ProjectId otherlv_2= Colon ( (lv_projectId_3_0= ruleN4mfIdentifier ) )
                                                    {
                                                        otherlv_1 = (Token) match(input, ProjectId, FOLLOW_3);
                                                        newLeafNode(otherlv_1, grammarAccess.getProjectDescriptionAccess().getProjectIdKeyword_0_0());
                                                        otherlv_2 = (Token) match(input, Colon, FOLLOW_4);
                                                        newLeafNode(otherlv_2, grammarAccess.getProjectDescriptionAccess().getColonKeyword_0_1());
                                                        // InternalN4MFParser.g:99:8: ( (lv_projectId_3_0= ruleN4mfIdentifier ) )
                                                        // InternalN4MFParser.g:100:9: (lv_projectId_3_0= ruleN4mfIdentifier )
                                                        {
                                                            // InternalN4MFParser.g:100:9: (lv_projectId_3_0= ruleN4mfIdentifier )
                                                            // InternalN4MFParser.g:101:10: lv_projectId_3_0= ruleN4mfIdentifier
                                                            {
                                                                newCompositeNode(grammarAccess.getProjectDescriptionAccess().getProjectIdN4mfIdentifierParserRuleCall_0_2_0());
                                                                pushFollow(FOLLOW_5);
                                                                lv_projectId_3_0 = ruleN4mfIdentifier();
                                                                state._fsp--;
                                                                if (current == null) {
                                                                    current = createModelElementForParent(grammarAccess.getProjectDescriptionRule());
                                                                }
                                                                set(current, "projectId", lv_projectId_3_0, "org.eclipse.n4js.n4mf.N4MF.N4mfIdentifier");
                                                                afterParserOrEnumRuleCall();
                                                            }
                                                        }
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 2:
                                    // InternalN4MFParser.g:124:3: ({...}? => ( ({...}? => (otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) ) ) ) ) )
                                    {
                                        // InternalN4MFParser.g:124:3: ({...}? => ( ({...}? => (otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) ) ) ) ) )
                                        // InternalN4MFParser.g:125:4: {...}? => ( ({...}? => (otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) ) ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 1)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 1)");
                                            }
                                            // InternalN4MFParser.g:125:112: ( ({...}? => (otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) ) ) ) )
                                            // InternalN4MFParser.g:126:5: ({...}? => (otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) ) ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 1);
                                                // InternalN4MFParser.g:129:8: ({...}? => (otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) ) ) )
                                                // InternalN4MFParser.g:129:9: {...}? => (otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) ) )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:129:18: (otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) ) )
                                                    // InternalN4MFParser.g:129:19: otherlv_4= ProjectType otherlv_5= Colon ( (lv_projectType_6_0= ruleProjectType ) )
                                                    {
                                                        otherlv_4 = (Token) match(input, ProjectType, FOLLOW_3);
                                                        newLeafNode(otherlv_4, grammarAccess.getProjectDescriptionAccess().getProjectTypeKeyword_1_0());
                                                        otherlv_5 = (Token) match(input, Colon, FOLLOW_6);
                                                        newLeafNode(otherlv_5, grammarAccess.getProjectDescriptionAccess().getColonKeyword_1_1());
                                                        // InternalN4MFParser.g:137:8: ( (lv_projectType_6_0= ruleProjectType ) )
                                                        // InternalN4MFParser.g:138:9: (lv_projectType_6_0= ruleProjectType )
                                                        {
                                                            // InternalN4MFParser.g:138:9: (lv_projectType_6_0= ruleProjectType )
                                                            // InternalN4MFParser.g:139:10: lv_projectType_6_0= ruleProjectType
                                                            {
                                                                newCompositeNode(grammarAccess.getProjectDescriptionAccess().getProjectTypeProjectTypeEnumRuleCall_1_2_0());
                                                                pushFollow(FOLLOW_5);
                                                                lv_projectType_6_0 = ruleProjectType();
                                                                state._fsp--;
                                                                if (current == null) {
                                                                    current = createModelElementForParent(grammarAccess.getProjectDescriptionRule());
                                                                }
                                                                set(current, "projectType", lv_projectType_6_0, "org.eclipse.n4js.n4mf.N4MF.ProjectType");
                                                                afterParserOrEnumRuleCall();
                                                            }
                                                        }
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 3:
                                    // InternalN4MFParser.g:162:3: ({...}? => ( ({...}? => (otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) ) ) ) ) )
                                    {
                                        // InternalN4MFParser.g:162:3: ({...}? => ( ({...}? => (otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) ) ) ) ) )
                                        // InternalN4MFParser.g:163:4: {...}? => ( ({...}? => (otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) ) ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 2)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 2)");
                                            }
                                            // InternalN4MFParser.g:163:112: ( ({...}? => (otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) ) ) ) )
                                            // InternalN4MFParser.g:164:5: ({...}? => (otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) ) ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 2);
                                                // InternalN4MFParser.g:167:8: ({...}? => (otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) ) ) )
                                                // InternalN4MFParser.g:167:9: {...}? => (otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) ) )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:167:18: (otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) ) )
                                                    // InternalN4MFParser.g:167:19: otherlv_7= ProjectVersion otherlv_8= Colon ( (lv_projectVersion_9_0= ruleDeclaredVersion ) )
                                                    {
                                                        otherlv_7 = (Token) match(input, ProjectVersion, FOLLOW_3);
                                                        newLeafNode(otherlv_7, grammarAccess.getProjectDescriptionAccess().getProjectVersionKeyword_2_0());
                                                        otherlv_8 = (Token) match(input, Colon, FOLLOW_7);
                                                        newLeafNode(otherlv_8, grammarAccess.getProjectDescriptionAccess().getColonKeyword_2_1());
                                                        // InternalN4MFParser.g:175:8: ( (lv_projectVersion_9_0= ruleDeclaredVersion ) )
                                                        // InternalN4MFParser.g:176:9: (lv_projectVersion_9_0= ruleDeclaredVersion )
                                                        {
                                                            // InternalN4MFParser.g:176:9: (lv_projectVersion_9_0= ruleDeclaredVersion )
                                                            // InternalN4MFParser.g:177:10: lv_projectVersion_9_0= ruleDeclaredVersion
                                                            {
                                                                newCompositeNode(grammarAccess.getProjectDescriptionAccess().getProjectVersionDeclaredVersionParserRuleCall_2_2_0());
                                                                pushFollow(FOLLOW_5);
                                                                lv_projectVersion_9_0 = ruleDeclaredVersion();
                                                                state._fsp--;
                                                                if (current == null) {
                                                                    current = createModelElementForParent(grammarAccess.getProjectDescriptionRule());
                                                                }
                                                                set(current, "projectVersion", lv_projectVersion_9_0, "org.eclipse.n4js.n4mf.N4MF.DeclaredVersion");
                                                                afterParserOrEnumRuleCall();
                                                            }
                                                        }
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 4:
                                    // InternalN4MFParser.g:200:3: ({...}? => ( ({...}? => (otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) ) ) ) ) )
                                    {
                                        // InternalN4MFParser.g:200:3: ({...}? => ( ({...}? => (otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) ) ) ) ) )
                                        // InternalN4MFParser.g:201:4: {...}? => ( ({...}? => (otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) ) ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 3)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 3)");
                                            }
                                            // InternalN4MFParser.g:201:112: ( ({...}? => (otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) ) ) ) )
                                            // InternalN4MFParser.g:202:5: ({...}? => (otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) ) ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 3);
                                                // InternalN4MFParser.g:205:8: ({...}? => (otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) ) ) )
                                                // InternalN4MFParser.g:205:9: {...}? => (otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) ) )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:205:18: (otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) ) )
                                                    // InternalN4MFParser.g:205:19: otherlv_10= VendorId otherlv_11= Colon ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) )
                                                    {
                                                        otherlv_10 = (Token) match(input, VendorId, FOLLOW_3);
                                                        newLeafNode(otherlv_10, grammarAccess.getProjectDescriptionAccess().getVendorIdKeyword_3_0());
                                                        otherlv_11 = (Token) match(input, Colon, FOLLOW_4);
                                                        newLeafNode(otherlv_11, grammarAccess.getProjectDescriptionAccess().getColonKeyword_3_1());
                                                        // InternalN4MFParser.g:213:8: ( (lv_declaredVendorId_12_0= ruleN4mfIdentifier ) )
                                                        // InternalN4MFParser.g:214:9: (lv_declaredVendorId_12_0= ruleN4mfIdentifier )
                                                        {
                                                            // InternalN4MFParser.g:214:9: (lv_declaredVendorId_12_0= ruleN4mfIdentifier )
                                                            // InternalN4MFParser.g:215:10: lv_declaredVendorId_12_0= ruleN4mfIdentifier
                                                            {
                                                                newCompositeNode(grammarAccess.getProjectDescriptionAccess().getDeclaredVendorIdN4mfIdentifierParserRuleCall_3_2_0());
                                                                pushFollow(FOLLOW_5);
                                                                lv_declaredVendorId_12_0 = ruleN4mfIdentifier();
                                                                state._fsp--;
                                                                if (current == null) {
                                                                    current = createModelElementForParent(grammarAccess.getProjectDescriptionRule());
                                                                }
                                                                set(current, "declaredVendorId", lv_declaredVendorId_12_0, "org.eclipse.n4js.n4mf.N4MF.N4mfIdentifier");
                                                                afterParserOrEnumRuleCall();
                                                            }
                                                        }
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 5:
                                    // InternalN4MFParser.g:238:3: ({...}? => ( ({...}? => (otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) ) ) ) ) )
                                    {
                                        // InternalN4MFParser.g:238:3: ({...}? => ( ({...}? => (otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) ) ) ) ) )
                                        // InternalN4MFParser.g:239:4: {...}? => ( ({...}? => (otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) ) ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 4)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 4)");
                                            }
                                            // InternalN4MFParser.g:239:112: ( ({...}? => (otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) ) ) ) )
                                            // InternalN4MFParser.g:240:5: ({...}? => (otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) ) ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 4);
                                                // InternalN4MFParser.g:243:8: ({...}? => (otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) ) ) )
                                                // InternalN4MFParser.g:243:9: {...}? => (otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) ) )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:243:18: (otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) ) )
                                                    // InternalN4MFParser.g:243:19: otherlv_13= VendorName otherlv_14= Colon ( (lv_vendorName_15_0= RULE_STRING ) )
                                                    {
                                                        otherlv_13 = (Token) match(input, VendorName, FOLLOW_3);
                                                        newLeafNode(otherlv_13, grammarAccess.getProjectDescriptionAccess().getVendorNameKeyword_4_0());
                                                        otherlv_14 = (Token) match(input, Colon, FOLLOW_8);
                                                        newLeafNode(otherlv_14, grammarAccess.getProjectDescriptionAccess().getColonKeyword_4_1());
                                                        // InternalN4MFParser.g:251:8: ( (lv_vendorName_15_0= RULE_STRING ) )
                                                        // InternalN4MFParser.g:252:9: (lv_vendorName_15_0= RULE_STRING )
                                                        {
                                                            // InternalN4MFParser.g:252:9: (lv_vendorName_15_0= RULE_STRING )
                                                            // InternalN4MFParser.g:253:10: lv_vendorName_15_0= RULE_STRING
                                                            {
                                                                lv_vendorName_15_0 = (Token) match(input, RULE_STRING, FOLLOW_5);
                                                                newLeafNode(lv_vendorName_15_0, grammarAccess.getProjectDescriptionAccess().getVendorNameSTRINGTerminalRuleCall_4_2_0());
                                                                if (current == null) {
                                                                    current = createModelElement(grammarAccess.getProjectDescriptionRule());
                                                                }
                                                                setWithLastConsumed(current, "vendorName", lv_vendorName_15_0, "org.eclipse.xtext.common.Terminals.STRING");
                                                            }
                                                        }
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 6:
                                    // InternalN4MFParser.g:275:3: ({...}? => ( ({...}? => (otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) ) ) ) ) )
                                    {
                                        // InternalN4MFParser.g:275:3: ({...}? => ( ({...}? => (otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) ) ) ) ) )
                                        // InternalN4MFParser.g:276:4: {...}? => ( ({...}? => (otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) ) ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 5)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 5)");
                                            }
                                            // InternalN4MFParser.g:276:112: ( ({...}? => (otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) ) ) ) )
                                            // InternalN4MFParser.g:277:5: ({...}? => (otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) ) ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 5);
                                                // InternalN4MFParser.g:280:8: ({...}? => (otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) ) ) )
                                                // InternalN4MFParser.g:280:9: {...}? => (otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) ) )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:280:18: (otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) ) )
                                                    // InternalN4MFParser.g:280:19: otherlv_16= MainModule otherlv_17= Colon ( (lv_mainModule_18_0= RULE_STRING ) )
                                                    {
                                                        otherlv_16 = (Token) match(input, MainModule, FOLLOW_3);
                                                        newLeafNode(otherlv_16, grammarAccess.getProjectDescriptionAccess().getMainModuleKeyword_5_0());
                                                        otherlv_17 = (Token) match(input, Colon, FOLLOW_8);
                                                        newLeafNode(otherlv_17, grammarAccess.getProjectDescriptionAccess().getColonKeyword_5_1());
                                                        // InternalN4MFParser.g:288:8: ( (lv_mainModule_18_0= RULE_STRING ) )
                                                        // InternalN4MFParser.g:289:9: (lv_mainModule_18_0= RULE_STRING )
                                                        {
                                                            // InternalN4MFParser.g:289:9: (lv_mainModule_18_0= RULE_STRING )
                                                            // InternalN4MFParser.g:290:10: lv_mainModule_18_0= RULE_STRING
                                                            {
                                                                lv_mainModule_18_0 = (Token) match(input, RULE_STRING, FOLLOW_5);
                                                                newLeafNode(lv_mainModule_18_0, grammarAccess.getProjectDescriptionAccess().getMainModuleSTRINGTerminalRuleCall_5_2_0());
                                                                if (current == null) {
                                                                    current = createModelElement(grammarAccess.getProjectDescriptionRule());
                                                                }
                                                                setWithLastConsumed(current, "mainModule", lv_mainModule_18_0, "org.eclipse.xtext.common.Terminals.STRING");
                                                            }
                                                        }
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 7:
                                    // InternalN4MFParser.g:312:3: ({...}? => ( ({...}? => ( (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment ) ) ) ) )
                                    {
                                        // InternalN4MFParser.g:312:3: ({...}? => ( ({...}? => ( (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment ) ) ) ) )
                                        // InternalN4MFParser.g:313:4: {...}? => ( ({...}? => ( (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment ) ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 6)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 6)");
                                            }
                                            // InternalN4MFParser.g:313:112: ( ({...}? => ( (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment ) ) ) )
                                            // InternalN4MFParser.g:314:5: ({...}? => ( (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment ) ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 6);
                                                // InternalN4MFParser.g:317:8: ({...}? => ( (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment ) ) )
                                                // InternalN4MFParser.g:317:9: {...}? => ( (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment ) )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:317:18: ( (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment ) )
                                                    // InternalN4MFParser.g:317:19: (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment )
                                                    {
                                                        // InternalN4MFParser.g:317:19: (lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment )
                                                        // InternalN4MFParser.g:318:9: lv_extendedRuntimeEnvironment_19_0= ruleExtendedRuntimeEnvironment
                                                        {
                                                            newCompositeNode(grammarAccess.getProjectDescriptionAccess().getExtendedRuntimeEnvironmentExtendedRuntimeEnvironmentParserRuleCall_6_0());
                                                            pushFollow(FOLLOW_5);
                                                            lv_extendedRuntimeEnvironment_19_0 = ruleExtendedRuntimeEnvironment();
                                                            state._fsp--;
                                                            if (current == null) {
                                                                current = createModelElementForParent(grammarAccess.getProjectDescriptionRule());
                                                            }
                                                            set(current, "extendedRuntimeEnvironment", lv_extendedRuntimeEnvironment_19_0, "org.eclipse.n4js.n4mf.N4MF.ExtendedRuntimeEnvironment");
                                                            afterParserOrEnumRuleCall();
                                                        }
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 8:
                                    // InternalN4MFParser.g:340:3: ({...}? => ( ({...}? => ( (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries ) ) ) ) )
                                    {
                                        // InternalN4MFParser.g:340:3: ({...}? => ( ({...}? => ( (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries ) ) ) ) )
                                        // InternalN4MFParser.g:341:4: {...}? => ( ({...}? => ( (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries ) ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 7)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 7)");
                                            }
                                            // InternalN4MFParser.g:341:112: ( ({...}? => ( (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries ) ) ) )
                                            // InternalN4MFParser.g:342:5: ({...}? => ( (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries ) ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 7);
                                                // InternalN4MFParser.g:345:8: ({...}? => ( (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries ) ) )
                                                // InternalN4MFParser.g:345:9: {...}? => ( (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries ) )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:345:18: ( (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries ) )
                                                    // InternalN4MFParser.g:345:19: (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries )
                                                    {
                                                        // InternalN4MFParser.g:345:19: (lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries )
                                                        // InternalN4MFParser.g:346:9: lv_providedRuntimeLibraries_20_0= ruleProvidedRuntimeLibraries
                                                        {
                                                            newCompositeNode(grammarAccess.getProjectDescriptionAccess().getProvidedRuntimeLibrariesProvidedRuntimeLibrariesParserRuleCall_7_0());
                                                            pushFollow(FOLLOW_5);
                                                            lv_providedRuntimeLibraries_20_0 = ruleProvidedRuntimeLibraries();
                                                            state._fsp--;
                                                            if (current == null) {
                                                                current = createModelElementForParent(grammarAccess.getProjectDescriptionRule());
                                                            }
                                                            set(current, "providedRuntimeLibraries", lv_providedRuntimeLibraries_20_0, "org.eclipse.n4js.n4mf.N4MF.ProvidedRuntimeLibraries");
                                                            afterParserOrEnumRuleCall();
                                                        }
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 9:
                                    // InternalN4MFParser.g:368:3: ({...}? => ( ({...}? => ( (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries ) ) ) ) )
                                    {
                                        // InternalN4MFParser.g:368:3: ({...}? => ( ({...}? => ( (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries ) ) ) ) )
                                        // InternalN4MFParser.g:369:4: {...}? => ( ({...}? => ( (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries ) ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 8)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 8)");
                                            }
                                            // InternalN4MFParser.g:369:112: ( ({...}? => ( (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries ) ) ) )
                                            // InternalN4MFParser.g:370:5: ({...}? => ( (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries ) ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 8);
                                                // InternalN4MFParser.g:373:8: ({...}? => ( (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries ) ) )
                                                // InternalN4MFParser.g:373:9: {...}? => ( (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries ) )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:373:18: ( (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries ) )
                                                    // InternalN4MFParser.g:373:19: (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries )
                                                    {
                                                        // InternalN4MFParser.g:373:19: (lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries )
                                                        // InternalN4MFParser.g:374:9: lv_requiredRuntimeLibraries_21_0= ruleRequiredRuntimeLibraries
                                                        {
                                                            newCompositeNode(grammarAccess.getProjectDescriptionAccess().getRequiredRuntimeLibrariesRequiredRuntimeLibrariesParserRuleCall_8_0());
                                                            pushFollow(FOLLOW_5);
                                                            lv_requiredRuntimeLibraries_21_0 = ruleRequiredRuntimeLibraries();
                                                            state._fsp--;
                                                            if (current == null) {
                                                                current = createModelElementForParent(grammarAccess.getProjectDescriptionRule());
                                                            }
                                                            set(current, "requiredRuntimeLibraries", lv_requiredRuntimeLibraries_21_0, "org.eclipse.n4js.n4mf.N4MF.RequiredRuntimeLibraries");
                                                            afterParserOrEnumRuleCall();
                                                        }
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 10:
                                    // InternalN4MFParser.g:396:3: ({...}? => ( ({...}? => ( (lv_projectDependencies_22_0= ruleProjectDependencies ) ) ) ) )
                                    {
                                        // InternalN4MFParser.g:396:3: ({...}? => ( ({...}? => ( (lv_projectDependencies_22_0= ruleProjectDependencies ) ) ) ) )
                                        // InternalN4MFParser.g:397:4: {...}? => ( ({...}? => ( (lv_projectDependencies_22_0= ruleProjectDependencies ) ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 9)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 9)");
                                            }
                                            // InternalN4MFParser.g:397:112: ( ({...}? => ( (lv_projectDependencies_22_0= ruleProjectDependencies ) ) ) )
                                            // InternalN4MFParser.g:398:5: ({...}? => ( (lv_projectDependencies_22_0= ruleProjectDependencies ) ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 9);
                                                // InternalN4MFParser.g:401:8: ({...}? => ( (lv_projectDependencies_22_0= ruleProjectDependencies ) ) )
                                                // InternalN4MFParser.g:401:9: {...}? => ( (lv_projectDependencies_22_0= ruleProjectDependencies ) )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:401:18: ( (lv_projectDependencies_22_0= ruleProjectDependencies ) )
                                                    // InternalN4MFParser.g:401:19: (lv_projectDependencies_22_0= ruleProjectDependencies )
                                                    {
                                                        // InternalN4MFParser.g:401:19: (lv_projectDependencies_22_0= ruleProjectDependencies )
                                                        // InternalN4MFParser.g:402:9: lv_projectDependencies_22_0= ruleProjectDependencies
                                                        {
                                                            newCompositeNode(grammarAccess.getProjectDescriptionAccess().getProjectDependenciesProjectDependenciesParserRuleCall_9_0());
                                                            pushFollow(FOLLOW_5);
                                                            lv_projectDependencies_22_0 = ruleProjectDependencies();
                                                            state._fsp--;
                                                            if (current == null) {
                                                                current = createModelElementForParent(grammarAccess.getProjectDescriptionRule());
                                                            }
                                                            set(current, "projectDependencies", lv_projectDependencies_22_0, "org.eclipse.n4js.n4mf.N4MF.ProjectDependencies");
                                                            afterParserOrEnumRuleCall();
                                                        }
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 11:
                                    // InternalN4MFParser.g:424:3: ({...}? => ( ({...}? => (otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) ) ) ) ) )
                                    {
                                        // InternalN4MFParser.g:424:3: ({...}? => ( ({...}? => (otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) ) ) ) ) )
                                        // InternalN4MFParser.g:425:4: {...}? => ( ({...}? => (otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) ) ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 10)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 10)");
                                            }
                                            // InternalN4MFParser.g:425:113: ( ({...}? => (otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) ) ) ) )
                                            // InternalN4MFParser.g:426:5: ({...}? => (otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) ) ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 10);
                                                // InternalN4MFParser.g:429:8: ({...}? => (otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) ) ) )
                                                // InternalN4MFParser.g:429:9: {...}? => (otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) ) )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:429:18: (otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) ) )
                                                    // InternalN4MFParser.g:429:19: otherlv_23= ImplementationId otherlv_24= Colon ( (lv_implementationId_25_0= ruleN4mfIdentifier ) )
                                                    {
                                                        otherlv_23 = (Token) match(input, ImplementationId, FOLLOW_3);
                                                        newLeafNode(otherlv_23, grammarAccess.getProjectDescriptionAccess().getImplementationIdKeyword_10_0());
                                                        otherlv_24 = (Token) match(input, Colon, FOLLOW_4);
                                                        newLeafNode(otherlv_24, grammarAccess.getProjectDescriptionAccess().getColonKeyword_10_1());
                                                        // InternalN4MFParser.g:437:8: ( (lv_implementationId_25_0= ruleN4mfIdentifier ) )
                                                        // InternalN4MFParser.g:438:9: (lv_implementationId_25_0= ruleN4mfIdentifier )
                                                        {
                                                            // InternalN4MFParser.g:438:9: (lv_implementationId_25_0= ruleN4mfIdentifier )
                                                            // InternalN4MFParser.g:439:10: lv_implementationId_25_0= ruleN4mfIdentifier
                                                            {
                                                                newCompositeNode(grammarAccess.getProjectDescriptionAccess().getImplementationIdN4mfIdentifierParserRuleCall_10_2_0());
                                                                pushFollow(FOLLOW_5);
                                                                lv_implementationId_25_0 = ruleN4mfIdentifier();
                                                                state._fsp--;
                                                                if (current == null) {
                                                                    current = createModelElementForParent(grammarAccess.getProjectDescriptionRule());
                                                                }
                                                                set(current, "implementationId", lv_implementationId_25_0, "org.eclipse.n4js.n4mf.N4MF.N4mfIdentifier");
                                                                afterParserOrEnumRuleCall();
                                                            }
                                                        }
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 12:
                                    // InternalN4MFParser.g:462:3: ({...}? => ( ({...}? => ( (lv_implementedProjects_26_0= ruleImplementedProjects ) ) ) ) )
                                    {
                                        // InternalN4MFParser.g:462:3: ({...}? => ( ({...}? => ( (lv_implementedProjects_26_0= ruleImplementedProjects ) ) ) ) )
                                        // InternalN4MFParser.g:463:4: {...}? => ( ({...}? => ( (lv_implementedProjects_26_0= ruleImplementedProjects ) ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 11)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 11)");
                                            }
                                            // InternalN4MFParser.g:463:113: ( ({...}? => ( (lv_implementedProjects_26_0= ruleImplementedProjects ) ) ) )
                                            // InternalN4MFParser.g:464:5: ({...}? => ( (lv_implementedProjects_26_0= ruleImplementedProjects ) ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 11);
                                                // InternalN4MFParser.g:467:8: ({...}? => ( (lv_implementedProjects_26_0= ruleImplementedProjects ) ) )
                                                // InternalN4MFParser.g:467:9: {...}? => ( (lv_implementedProjects_26_0= ruleImplementedProjects ) )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:467:18: ( (lv_implementedProjects_26_0= ruleImplementedProjects ) )
                                                    // InternalN4MFParser.g:467:19: (lv_implementedProjects_26_0= ruleImplementedProjects )
                                                    {
                                                        // InternalN4MFParser.g:467:19: (lv_implementedProjects_26_0= ruleImplementedProjects )
                                                        // InternalN4MFParser.g:468:9: lv_implementedProjects_26_0= ruleImplementedProjects
                                                        {
                                                            newCompositeNode(grammarAccess.getProjectDescriptionAccess().getImplementedProjectsImplementedProjectsParserRuleCall_11_0());
                                                            pushFollow(FOLLOW_5);
                                                            lv_implementedProjects_26_0 = ruleImplementedProjects();
                                                            state._fsp--;
                                                            if (current == null) {
                                                                current = createModelElementForParent(grammarAccess.getProjectDescriptionRule());
                                                            }
                                                            set(current, "implementedProjects", lv_implementedProjects_26_0, "org.eclipse.n4js.n4mf.N4MF.ImplementedProjects");
                                                            afterParserOrEnumRuleCall();
                                                        }
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 13:
                                    // InternalN4MFParser.g:490:3: ({...}? => ( ({...}? => ( (lv_initModules_27_0= ruleInitModules ) ) ) ) )
                                    {
                                        // InternalN4MFParser.g:490:3: ({...}? => ( ({...}? => ( (lv_initModules_27_0= ruleInitModules ) ) ) ) )
                                        // InternalN4MFParser.g:491:4: {...}? => ( ({...}? => ( (lv_initModules_27_0= ruleInitModules ) ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 12)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 12)");
                                            }
                                            // InternalN4MFParser.g:491:113: ( ({...}? => ( (lv_initModules_27_0= ruleInitModules ) ) ) )
                                            // InternalN4MFParser.g:492:5: ({...}? => ( (lv_initModules_27_0= ruleInitModules ) ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 12);
                                                // InternalN4MFParser.g:495:8: ({...}? => ( (lv_initModules_27_0= ruleInitModules ) ) )
                                                // InternalN4MFParser.g:495:9: {...}? => ( (lv_initModules_27_0= ruleInitModules ) )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:495:18: ( (lv_initModules_27_0= ruleInitModules ) )
                                                    // InternalN4MFParser.g:495:19: (lv_initModules_27_0= ruleInitModules )
                                                    {
                                                        // InternalN4MFParser.g:495:19: (lv_initModules_27_0= ruleInitModules )
                                                        // InternalN4MFParser.g:496:9: lv_initModules_27_0= ruleInitModules
                                                        {
                                                            newCompositeNode(grammarAccess.getProjectDescriptionAccess().getInitModulesInitModulesParserRuleCall_12_0());
                                                            pushFollow(FOLLOW_5);
                                                            lv_initModules_27_0 = ruleInitModules();
                                                            state._fsp--;
                                                            if (current == null) {
                                                                current = createModelElementForParent(grammarAccess.getProjectDescriptionRule());
                                                            }
                                                            set(current, "initModules", lv_initModules_27_0, "org.eclipse.n4js.n4mf.N4MF.InitModules");
                                                            afterParserOrEnumRuleCall();
                                                        }
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 14:
                                    // InternalN4MFParser.g:518:3: ({...}? => ( ({...}? => ( (lv_execModule_28_0= ruleExecModule ) ) ) ) )
                                    {
                                        // InternalN4MFParser.g:518:3: ({...}? => ( ({...}? => ( (lv_execModule_28_0= ruleExecModule ) ) ) ) )
                                        // InternalN4MFParser.g:519:4: {...}? => ( ({...}? => ( (lv_execModule_28_0= ruleExecModule ) ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 13)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 13)");
                                            }
                                            // InternalN4MFParser.g:519:113: ( ({...}? => ( (lv_execModule_28_0= ruleExecModule ) ) ) )
                                            // InternalN4MFParser.g:520:5: ({...}? => ( (lv_execModule_28_0= ruleExecModule ) ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 13);
                                                // InternalN4MFParser.g:523:8: ({...}? => ( (lv_execModule_28_0= ruleExecModule ) ) )
                                                // InternalN4MFParser.g:523:9: {...}? => ( (lv_execModule_28_0= ruleExecModule ) )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:523:18: ( (lv_execModule_28_0= ruleExecModule ) )
                                                    // InternalN4MFParser.g:523:19: (lv_execModule_28_0= ruleExecModule )
                                                    {
                                                        // InternalN4MFParser.g:523:19: (lv_execModule_28_0= ruleExecModule )
                                                        // InternalN4MFParser.g:524:9: lv_execModule_28_0= ruleExecModule
                                                        {
                                                            newCompositeNode(grammarAccess.getProjectDescriptionAccess().getExecModuleExecModuleParserRuleCall_13_0());
                                                            pushFollow(FOLLOW_5);
                                                            lv_execModule_28_0 = ruleExecModule();
                                                            state._fsp--;
                                                            if (current == null) {
                                                                current = createModelElementForParent(grammarAccess.getProjectDescriptionRule());
                                                            }
                                                            set(current, "execModule", lv_execModule_28_0, "org.eclipse.n4js.n4mf.N4MF.ExecModule");
                                                            afterParserOrEnumRuleCall();
                                                        }
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 15:
                                    // InternalN4MFParser.g:546:3: ({...}? => ( ({...}? => (otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) ) ) ) ) )
                                    {
                                        // InternalN4MFParser.g:546:3: ({...}? => ( ({...}? => (otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) ) ) ) ) )
                                        // InternalN4MFParser.g:547:4: {...}? => ( ({...}? => (otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) ) ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 14)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 14)");
                                            }
                                            // InternalN4MFParser.g:547:113: ( ({...}? => (otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) ) ) ) )
                                            // InternalN4MFParser.g:548:5: ({...}? => (otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) ) ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 14);
                                                // InternalN4MFParser.g:551:8: ({...}? => (otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) ) ) )
                                                // InternalN4MFParser.g:551:9: {...}? => (otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) ) )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:551:18: (otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) ) )
                                                    // InternalN4MFParser.g:551:19: otherlv_29= Output otherlv_30= Colon ( (lv_outputPath_31_0= RULE_STRING ) )
                                                    {
                                                        otherlv_29 = (Token) match(input, Output, FOLLOW_3);
                                                        newLeafNode(otherlv_29, grammarAccess.getProjectDescriptionAccess().getOutputKeyword_14_0());
                                                        otherlv_30 = (Token) match(input, Colon, FOLLOW_8);
                                                        newLeafNode(otherlv_30, grammarAccess.getProjectDescriptionAccess().getColonKeyword_14_1());
                                                        // InternalN4MFParser.g:559:8: ( (lv_outputPath_31_0= RULE_STRING ) )
                                                        // InternalN4MFParser.g:560:9: (lv_outputPath_31_0= RULE_STRING )
                                                        {
                                                            // InternalN4MFParser.g:560:9: (lv_outputPath_31_0= RULE_STRING )
                                                            // InternalN4MFParser.g:561:10: lv_outputPath_31_0= RULE_STRING
                                                            {
                                                                lv_outputPath_31_0 = (Token) match(input, RULE_STRING, FOLLOW_5);
                                                                newLeafNode(lv_outputPath_31_0, grammarAccess.getProjectDescriptionAccess().getOutputPathSTRINGTerminalRuleCall_14_2_0());
                                                                if (current == null) {
                                                                    current = createModelElement(grammarAccess.getProjectDescriptionRule());
                                                                }
                                                                setWithLastConsumed(current, "outputPath", lv_outputPath_31_0, "org.eclipse.xtext.common.Terminals.STRING");
                                                            }
                                                        }
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 16:
                                    // InternalN4MFParser.g:583:3: ({...}? => ( ({...}? => (otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket ) ) ) )
                                    {
                                        // InternalN4MFParser.g:583:3: ({...}? => ( ({...}? => (otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket ) ) ) )
                                        // InternalN4MFParser.g:584:4: {...}? => ( ({...}? => (otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 15)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 15)");
                                            }
                                            // InternalN4MFParser.g:584:113: ( ({...}? => (otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket ) ) )
                                            // InternalN4MFParser.g:585:5: ({...}? => (otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 15);
                                                // InternalN4MFParser.g:588:8: ({...}? => (otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket ) )
                                                // InternalN4MFParser.g:588:9: {...}? => (otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:588:18: (otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket )
                                                    // InternalN4MFParser.g:588:19: otherlv_32= Libraries otherlv_33= LeftCurlyBracket ( (lv_libraryPaths_34_0= RULE_STRING ) ) (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )* otherlv_37= RightCurlyBracket
                                                    {
                                                        otherlv_32 = (Token) match(input, Libraries, FOLLOW_9);
                                                        newLeafNode(otherlv_32, grammarAccess.getProjectDescriptionAccess().getLibrariesKeyword_15_0());
                                                        otherlv_33 = (Token) match(input, LeftCurlyBracket, FOLLOW_8);
                                                        newLeafNode(otherlv_33, grammarAccess.getProjectDescriptionAccess().getLeftCurlyBracketKeyword_15_1());
                                                        // InternalN4MFParser.g:596:8: ( (lv_libraryPaths_34_0= RULE_STRING ) )
                                                        // InternalN4MFParser.g:597:9: (lv_libraryPaths_34_0= RULE_STRING )
                                                        {
                                                            // InternalN4MFParser.g:597:9: (lv_libraryPaths_34_0= RULE_STRING )
                                                            // InternalN4MFParser.g:598:10: lv_libraryPaths_34_0= RULE_STRING
                                                            {
                                                                lv_libraryPaths_34_0 = (Token) match(input, RULE_STRING, FOLLOW_10);
                                                                newLeafNode(lv_libraryPaths_34_0, grammarAccess.getProjectDescriptionAccess().getLibraryPathsSTRINGTerminalRuleCall_15_2_0());
                                                                if (current == null) {
                                                                    current = createModelElement(grammarAccess.getProjectDescriptionRule());
                                                                }
                                                                addWithLastConsumed(current, "libraryPaths", lv_libraryPaths_34_0, "org.eclipse.xtext.common.Terminals.STRING");
                                                            }
                                                        }
                                                        // InternalN4MFParser.g:614:8: (otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) ) )*
                                                        loop1: do {
                                                            int alt1 = 2;
                                                            int LA1_0 = input.LA(1);
                                                            if ((LA1_0 == Comma)) {
                                                                alt1 = 1;
                                                            }
                                                            switch(alt1) {
                                                                case 1:
                                                                    // InternalN4MFParser.g:615:9: otherlv_35= Comma ( (lv_libraryPaths_36_0= RULE_STRING ) )
                                                                    {
                                                                        otherlv_35 = (Token) match(input, Comma, FOLLOW_8);
                                                                        newLeafNode(otherlv_35, grammarAccess.getProjectDescriptionAccess().getCommaKeyword_15_3_0());
                                                                        // InternalN4MFParser.g:619:9: ( (lv_libraryPaths_36_0= RULE_STRING ) )
                                                                        // InternalN4MFParser.g:620:10: (lv_libraryPaths_36_0= RULE_STRING )
                                                                        {
                                                                            // InternalN4MFParser.g:620:10: (lv_libraryPaths_36_0= RULE_STRING )
                                                                            // InternalN4MFParser.g:621:11: lv_libraryPaths_36_0= RULE_STRING
                                                                            {
                                                                                lv_libraryPaths_36_0 = (Token) match(input, RULE_STRING, FOLLOW_10);
                                                                                newLeafNode(lv_libraryPaths_36_0, grammarAccess.getProjectDescriptionAccess().getLibraryPathsSTRINGTerminalRuleCall_15_3_1_0());
                                                                                if (current == null) {
                                                                                    current = createModelElement(grammarAccess.getProjectDescriptionRule());
                                                                                }
                                                                                addWithLastConsumed(current, "libraryPaths", lv_libraryPaths_36_0, "org.eclipse.xtext.common.Terminals.STRING");
                                                                            }
                                                                        }
                                                                    }
                                                                    break;
                                                                default:
                                                                    break loop1;
                                                            }
                                                        } while (true);
                                                        otherlv_37 = (Token) match(input, RightCurlyBracket, FOLLOW_5);
                                                        newLeafNode(otherlv_37, grammarAccess.getProjectDescriptionAccess().getRightCurlyBracketKeyword_15_4());
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 17:
                                    // InternalN4MFParser.g:648:3: ({...}? => ( ({...}? => (otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket ) ) ) )
                                    {
                                        // InternalN4MFParser.g:648:3: ({...}? => ( ({...}? => (otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket ) ) ) )
                                        // InternalN4MFParser.g:649:4: {...}? => ( ({...}? => (otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 16)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 16)");
                                            }
                                            // InternalN4MFParser.g:649:113: ( ({...}? => (otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket ) ) )
                                            // InternalN4MFParser.g:650:5: ({...}? => (otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 16);
                                                // InternalN4MFParser.g:653:8: ({...}? => (otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket ) )
                                                // InternalN4MFParser.g:653:9: {...}? => (otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:653:18: (otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket )
                                                    // InternalN4MFParser.g:653:19: otherlv_38= Resources otherlv_39= LeftCurlyBracket ( (lv_resourcePaths_40_0= RULE_STRING ) ) (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )* otherlv_43= RightCurlyBracket
                                                    {
                                                        otherlv_38 = (Token) match(input, Resources, FOLLOW_9);
                                                        newLeafNode(otherlv_38, grammarAccess.getProjectDescriptionAccess().getResourcesKeyword_16_0());
                                                        otherlv_39 = (Token) match(input, LeftCurlyBracket, FOLLOW_8);
                                                        newLeafNode(otherlv_39, grammarAccess.getProjectDescriptionAccess().getLeftCurlyBracketKeyword_16_1());
                                                        // InternalN4MFParser.g:661:8: ( (lv_resourcePaths_40_0= RULE_STRING ) )
                                                        // InternalN4MFParser.g:662:9: (lv_resourcePaths_40_0= RULE_STRING )
                                                        {
                                                            // InternalN4MFParser.g:662:9: (lv_resourcePaths_40_0= RULE_STRING )
                                                            // InternalN4MFParser.g:663:10: lv_resourcePaths_40_0= RULE_STRING
                                                            {
                                                                lv_resourcePaths_40_0 = (Token) match(input, RULE_STRING, FOLLOW_10);
                                                                newLeafNode(lv_resourcePaths_40_0, grammarAccess.getProjectDescriptionAccess().getResourcePathsSTRINGTerminalRuleCall_16_2_0());
                                                                if (current == null) {
                                                                    current = createModelElement(grammarAccess.getProjectDescriptionRule());
                                                                }
                                                                addWithLastConsumed(current, "resourcePaths", lv_resourcePaths_40_0, "org.eclipse.xtext.common.Terminals.STRING");
                                                            }
                                                        }
                                                        // InternalN4MFParser.g:679:8: (otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) ) )*
                                                        loop2: do {
                                                            int alt2 = 2;
                                                            int LA2_0 = input.LA(1);
                                                            if ((LA2_0 == Comma)) {
                                                                alt2 = 1;
                                                            }
                                                            switch(alt2) {
                                                                case 1:
                                                                    // InternalN4MFParser.g:680:9: otherlv_41= Comma ( (lv_resourcePaths_42_0= RULE_STRING ) )
                                                                    {
                                                                        otherlv_41 = (Token) match(input, Comma, FOLLOW_8);
                                                                        newLeafNode(otherlv_41, grammarAccess.getProjectDescriptionAccess().getCommaKeyword_16_3_0());
                                                                        // InternalN4MFParser.g:684:9: ( (lv_resourcePaths_42_0= RULE_STRING ) )
                                                                        // InternalN4MFParser.g:685:10: (lv_resourcePaths_42_0= RULE_STRING )
                                                                        {
                                                                            // InternalN4MFParser.g:685:10: (lv_resourcePaths_42_0= RULE_STRING )
                                                                            // InternalN4MFParser.g:686:11: lv_resourcePaths_42_0= RULE_STRING
                                                                            {
                                                                                lv_resourcePaths_42_0 = (Token) match(input, RULE_STRING, FOLLOW_10);
                                                                                newLeafNode(lv_resourcePaths_42_0, grammarAccess.getProjectDescriptionAccess().getResourcePathsSTRINGTerminalRuleCall_16_3_1_0());
                                                                                if (current == null) {
                                                                                    current = createModelElement(grammarAccess.getProjectDescriptionRule());
                                                                                }
                                                                                addWithLastConsumed(current, "resourcePaths", lv_resourcePaths_42_0, "org.eclipse.xtext.common.Terminals.STRING");
                                                                            }
                                                                        }
                                                                    }
                                                                    break;
                                                                default:
                                                                    break loop2;
                                                            }
                                                        } while (true);
                                                        otherlv_43 = (Token) match(input, RightCurlyBracket, FOLLOW_5);
                                                        newLeafNode(otherlv_43, grammarAccess.getProjectDescriptionAccess().getRightCurlyBracketKeyword_16_4());
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 18:
                                    // InternalN4MFParser.g:713:3: ({...}? => ( ({...}? => (otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket ) ) ) )
                                    {
                                        // InternalN4MFParser.g:713:3: ({...}? => ( ({...}? => (otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket ) ) ) )
                                        // InternalN4MFParser.g:714:4: {...}? => ( ({...}? => (otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 17)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 17)");
                                            }
                                            // InternalN4MFParser.g:714:113: ( ({...}? => (otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket ) ) )
                                            // InternalN4MFParser.g:715:5: ({...}? => (otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 17);
                                                // InternalN4MFParser.g:718:8: ({...}? => (otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket ) )
                                                // InternalN4MFParser.g:718:9: {...}? => (otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:718:18: (otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket )
                                                    // InternalN4MFParser.g:718:19: otherlv_44= Sources otherlv_45= LeftCurlyBracket ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+ otherlv_47= RightCurlyBracket
                                                    {
                                                        otherlv_44 = (Token) match(input, Sources, FOLLOW_9);
                                                        newLeafNode(otherlv_44, grammarAccess.getProjectDescriptionAccess().getSourcesKeyword_17_0());
                                                        otherlv_45 = (Token) match(input, LeftCurlyBracket, FOLLOW_11);
                                                        newLeafNode(otherlv_45, grammarAccess.getProjectDescriptionAccess().getLeftCurlyBracketKeyword_17_1());
                                                        // InternalN4MFParser.g:726:8: ( (lv_sourceFragment_46_0= ruleSourceFragment ) )+
                                                        int cnt3 = 0;
                                                        loop3: do {
                                                            int alt3 = 2;
                                                            int LA3_0 = input.LA(1);
                                                            if ((LA3_0 == External || LA3_0 == Source || LA3_0 == Test)) {
                                                                alt3 = 1;
                                                            }
                                                            switch(alt3) {
                                                                case 1:
                                                                    // InternalN4MFParser.g:727:9: (lv_sourceFragment_46_0= ruleSourceFragment )
                                                                    {
                                                                        // InternalN4MFParser.g:727:9: (lv_sourceFragment_46_0= ruleSourceFragment )
                                                                        // InternalN4MFParser.g:728:10: lv_sourceFragment_46_0= ruleSourceFragment
                                                                        {
                                                                            newCompositeNode(grammarAccess.getProjectDescriptionAccess().getSourceFragmentSourceFragmentParserRuleCall_17_2_0());
                                                                            pushFollow(FOLLOW_12);
                                                                            lv_sourceFragment_46_0 = ruleSourceFragment();
                                                                            state._fsp--;
                                                                            if (current == null) {
                                                                                current = createModelElementForParent(grammarAccess.getProjectDescriptionRule());
                                                                            }
                                                                            add(current, "sourceFragment", lv_sourceFragment_46_0, "org.eclipse.n4js.n4mf.N4MF.SourceFragment");
                                                                            afterParserOrEnumRuleCall();
                                                                        }
                                                                    }
                                                                    break;
                                                                default:
                                                                    if (cnt3 >= 1)
                                                                        break loop3;
                                                                    EarlyExitException eee = new EarlyExitException(3, input);
                                                                    throw eee;
                                                            }
                                                            cnt3++;
                                                        } while (true);
                                                        otherlv_47 = (Token) match(input, RightCurlyBracket, FOLLOW_5);
                                                        newLeafNode(otherlv_47, grammarAccess.getProjectDescriptionAccess().getRightCurlyBracketKeyword_17_3());
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 19:
                                    // InternalN4MFParser.g:755:3: ({...}? => ( ({...}? => (otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket ) ) ) )
                                    {
                                        // InternalN4MFParser.g:755:3: ({...}? => ( ({...}? => (otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket ) ) ) )
                                        // InternalN4MFParser.g:756:4: {...}? => ( ({...}? => (otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 18)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 18)");
                                            }
                                            // InternalN4MFParser.g:756:113: ( ({...}? => (otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket ) ) )
                                            // InternalN4MFParser.g:757:5: ({...}? => (otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 18);
                                                // InternalN4MFParser.g:760:8: ({...}? => (otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket ) )
                                                // InternalN4MFParser.g:760:9: {...}? => (otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:760:18: (otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket )
                                                    // InternalN4MFParser.g:760:19: otherlv_48= ModuleFilters otherlv_49= LeftCurlyBracket ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+ otherlv_51= RightCurlyBracket
                                                    {
                                                        otherlv_48 = (Token) match(input, ModuleFilters, FOLLOW_9);
                                                        newLeafNode(otherlv_48, grammarAccess.getProjectDescriptionAccess().getModuleFiltersKeyword_18_0());
                                                        otherlv_49 = (Token) match(input, LeftCurlyBracket, FOLLOW_13);
                                                        newLeafNode(otherlv_49, grammarAccess.getProjectDescriptionAccess().getLeftCurlyBracketKeyword_18_1());
                                                        // InternalN4MFParser.g:768:8: ( (lv_moduleFilters_50_0= ruleModuleFilter ) )+
                                                        int cnt4 = 0;
                                                        loop4: do {
                                                            int alt4 = 2;
                                                            int LA4_0 = input.LA(1);
                                                            if ((LA4_0 == NoModuleWrap || LA4_0 == NoValidate)) {
                                                                alt4 = 1;
                                                            }
                                                            switch(alt4) {
                                                                case 1:
                                                                    // InternalN4MFParser.g:769:9: (lv_moduleFilters_50_0= ruleModuleFilter )
                                                                    {
                                                                        // InternalN4MFParser.g:769:9: (lv_moduleFilters_50_0= ruleModuleFilter )
                                                                        // InternalN4MFParser.g:770:10: lv_moduleFilters_50_0= ruleModuleFilter
                                                                        {
                                                                            newCompositeNode(grammarAccess.getProjectDescriptionAccess().getModuleFiltersModuleFilterParserRuleCall_18_2_0());
                                                                            pushFollow(FOLLOW_14);
                                                                            lv_moduleFilters_50_0 = ruleModuleFilter();
                                                                            state._fsp--;
                                                                            if (current == null) {
                                                                                current = createModelElementForParent(grammarAccess.getProjectDescriptionRule());
                                                                            }
                                                                            add(current, "moduleFilters", lv_moduleFilters_50_0, "org.eclipse.n4js.n4mf.N4MF.ModuleFilter");
                                                                            afterParserOrEnumRuleCall();
                                                                        }
                                                                    }
                                                                    break;
                                                                default:
                                                                    if (cnt4 >= 1)
                                                                        break loop4;
                                                                    EarlyExitException eee = new EarlyExitException(4, input);
                                                                    throw eee;
                                                            }
                                                            cnt4++;
                                                        } while (true);
                                                        otherlv_51 = (Token) match(input, RightCurlyBracket, FOLLOW_5);
                                                        newLeafNode(otherlv_51, grammarAccess.getProjectDescriptionAccess().getRightCurlyBracketKeyword_18_3());
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 20:
                                    // InternalN4MFParser.g:797:3: ({...}? => ( ({...}? => ( (lv_testedProjects_52_0= ruleTestedProjects ) ) ) ) )
                                    {
                                        // InternalN4MFParser.g:797:3: ({...}? => ( ({...}? => ( (lv_testedProjects_52_0= ruleTestedProjects ) ) ) ) )
                                        // InternalN4MFParser.g:798:4: {...}? => ( ({...}? => ( (lv_testedProjects_52_0= ruleTestedProjects ) ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 19)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 19)");
                                            }
                                            // InternalN4MFParser.g:798:113: ( ({...}? => ( (lv_testedProjects_52_0= ruleTestedProjects ) ) ) )
                                            // InternalN4MFParser.g:799:5: ({...}? => ( (lv_testedProjects_52_0= ruleTestedProjects ) ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 19);
                                                // InternalN4MFParser.g:802:8: ({...}? => ( (lv_testedProjects_52_0= ruleTestedProjects ) ) )
                                                // InternalN4MFParser.g:802:9: {...}? => ( (lv_testedProjects_52_0= ruleTestedProjects ) )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:802:18: ( (lv_testedProjects_52_0= ruleTestedProjects ) )
                                                    // InternalN4MFParser.g:802:19: (lv_testedProjects_52_0= ruleTestedProjects )
                                                    {
                                                        // InternalN4MFParser.g:802:19: (lv_testedProjects_52_0= ruleTestedProjects )
                                                        // InternalN4MFParser.g:803:9: lv_testedProjects_52_0= ruleTestedProjects
                                                        {
                                                            newCompositeNode(grammarAccess.getProjectDescriptionAccess().getTestedProjectsTestedProjectsParserRuleCall_19_0());
                                                            pushFollow(FOLLOW_5);
                                                            lv_testedProjects_52_0 = ruleTestedProjects();
                                                            state._fsp--;
                                                            if (current == null) {
                                                                current = createModelElementForParent(grammarAccess.getProjectDescriptionRule());
                                                            }
                                                            set(current, "testedProjects", lv_testedProjects_52_0, "org.eclipse.n4js.n4mf.N4MF.TestedProjects");
                                                            afterParserOrEnumRuleCall();
                                                        }
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                case 21:
                                    // InternalN4MFParser.g:825:3: ({...}? => ( ({...}? => (otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) ) ) ) ) )
                                    {
                                        // InternalN4MFParser.g:825:3: ({...}? => ( ({...}? => (otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) ) ) ) ) )
                                        // InternalN4MFParser.g:826:4: {...}? => ( ({...}? => (otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) ) ) ) )
                                        {
                                            if (!getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 20)) {
                                                throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canSelect(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 20)");
                                            }
                                            // InternalN4MFParser.g:826:113: ( ({...}? => (otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) ) ) ) )
                                            // InternalN4MFParser.g:827:5: ({...}? => (otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) ) ) )
                                            {
                                                getUnorderedGroupHelper().select(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup(), 20);
                                                // InternalN4MFParser.g:830:8: ({...}? => (otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) ) ) )
                                                // InternalN4MFParser.g:830:9: {...}? => (otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) ) )
                                                {
                                                    if (!((true))) {
                                                        throw new FailedPredicateException(input, "ruleProjectDescription", "true");
                                                    }
                                                    // InternalN4MFParser.g:830:18: (otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) ) )
                                                    // InternalN4MFParser.g:830:19: otherlv_53= ModuleLoader otherlv_54= Colon ( (lv_moduleLoader_55_0= ruleModuleLoader ) )
                                                    {
                                                        otherlv_53 = (Token) match(input, ModuleLoader, FOLLOW_3);
                                                        newLeafNode(otherlv_53, grammarAccess.getProjectDescriptionAccess().getModuleLoaderKeyword_20_0());
                                                        otherlv_54 = (Token) match(input, Colon, FOLLOW_15);
                                                        newLeafNode(otherlv_54, grammarAccess.getProjectDescriptionAccess().getColonKeyword_20_1());
                                                        // InternalN4MFParser.g:838:8: ( (lv_moduleLoader_55_0= ruleModuleLoader ) )
                                                        // InternalN4MFParser.g:839:9: (lv_moduleLoader_55_0= ruleModuleLoader )
                                                        {
                                                            // InternalN4MFParser.g:839:9: (lv_moduleLoader_55_0= ruleModuleLoader )
                                                            // InternalN4MFParser.g:840:10: lv_moduleLoader_55_0= ruleModuleLoader
                                                            {
                                                                newCompositeNode(grammarAccess.getProjectDescriptionAccess().getModuleLoaderModuleLoaderEnumRuleCall_20_2_0());
                                                                pushFollow(FOLLOW_5);
                                                                lv_moduleLoader_55_0 = ruleModuleLoader();
                                                                state._fsp--;
                                                                if (current == null) {
                                                                    current = createModelElementForParent(grammarAccess.getProjectDescriptionRule());
                                                                }
                                                                set(current, "moduleLoader", lv_moduleLoader_55_0, "org.eclipse.n4js.n4mf.N4MF.ModuleLoader");
                                                                afterParserOrEnumRuleCall();
                                                            }
                                                        }
                                                    }
                                                }
                                                getUnorderedGroupHelper().returnFromSelection(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
                                            }
                                        }
                                    }
                                    break;
                                default:
                                    if (cnt5 >= 1)
                                        break loop5;
                                    EarlyExitException eee = new EarlyExitException(5, input);
                                    throw eee;
                            }
                            cnt5++;
                        } while (true);
                        if (!getUnorderedGroupHelper().canLeave(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup())) {
                            throw new FailedPredicateException(input, "ruleProjectDescription", "getUnorderedGroupHelper().canLeave(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup())");
                        }
                    }
                }
                getUnorderedGroupHelper().leave(grammarAccess.getProjectDescriptionAccess().getUnorderedGroup());
            }
        }
        leaveRule();
    } catch (RecognitionException re) {
        recover(input, re);
        appendSkippedTokens();
    } finally {
    }
    return current;
}
Also used : Enumerator(org.eclipse.emf.common.util.Enumerator) EObject(org.eclipse.emf.ecore.EObject) AntlrDatatypeRuleToken(org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken) AntlrDatatypeRuleToken(org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken)

Example 7 with AntlrDatatypeRuleToken

use of org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken in project n4js by eclipse.

the class InternalN4MFParser method ruleSimpleProjectDescription.

// $ANTLR end "entryRuleSimpleProjectDescription"
// $ANTLR start "ruleSimpleProjectDescription"
// InternalN4MFParser.g:2121:1: ruleSimpleProjectDescription returns [EObject current=null] : ( ( ( (lv_declaredVendorId_0_0= ruleN4mfIdentifier ) ) otherlv_1= Colon )? ( (lv_projectId_2_0= ruleN4mfIdentifier ) ) ) ;
public final EObject ruleSimpleProjectDescription() throws RecognitionException {
    EObject current = null;
    Token otherlv_1 = null;
    AntlrDatatypeRuleToken lv_declaredVendorId_0_0 = null;
    AntlrDatatypeRuleToken lv_projectId_2_0 = null;
    enterRule();
    try {
        // InternalN4MFParser.g:2127:2: ( ( ( ( (lv_declaredVendorId_0_0= ruleN4mfIdentifier ) ) otherlv_1= Colon )? ( (lv_projectId_2_0= ruleN4mfIdentifier ) ) ) )
        // InternalN4MFParser.g:2128:2: ( ( ( (lv_declaredVendorId_0_0= ruleN4mfIdentifier ) ) otherlv_1= Colon )? ( (lv_projectId_2_0= ruleN4mfIdentifier ) ) )
        {
            // InternalN4MFParser.g:2128:2: ( ( ( (lv_declaredVendorId_0_0= ruleN4mfIdentifier ) ) otherlv_1= Colon )? ( (lv_projectId_2_0= ruleN4mfIdentifier ) ) )
            // InternalN4MFParser.g:2129:3: ( ( (lv_declaredVendorId_0_0= ruleN4mfIdentifier ) ) otherlv_1= Colon )? ( (lv_projectId_2_0= ruleN4mfIdentifier ) )
            {
                // InternalN4MFParser.g:2129:3: ( ( (lv_declaredVendorId_0_0= ruleN4mfIdentifier ) ) otherlv_1= Colon )?
                int alt27 = 2;
                alt27 = dfa27.predict(input);
                switch(alt27) {
                    case 1:
                        // InternalN4MFParser.g:2130:4: ( (lv_declaredVendorId_0_0= ruleN4mfIdentifier ) ) otherlv_1= Colon
                        {
                            // InternalN4MFParser.g:2130:4: ( (lv_declaredVendorId_0_0= ruleN4mfIdentifier ) )
                            // InternalN4MFParser.g:2131:5: (lv_declaredVendorId_0_0= ruleN4mfIdentifier )
                            {
                                // InternalN4MFParser.g:2131:5: (lv_declaredVendorId_0_0= ruleN4mfIdentifier )
                                // InternalN4MFParser.g:2132:6: lv_declaredVendorId_0_0= ruleN4mfIdentifier
                                {
                                    newCompositeNode(grammarAccess.getSimpleProjectDescriptionAccess().getDeclaredVendorIdN4mfIdentifierParserRuleCall_0_0_0());
                                    pushFollow(FOLLOW_3);
                                    lv_declaredVendorId_0_0 = ruleN4mfIdentifier();
                                    state._fsp--;
                                    if (current == null) {
                                        current = createModelElementForParent(grammarAccess.getSimpleProjectDescriptionRule());
                                    }
                                    set(current, "declaredVendorId", lv_declaredVendorId_0_0, "org.eclipse.n4js.n4mf.N4MF.N4mfIdentifier");
                                    afterParserOrEnumRuleCall();
                                }
                            }
                            otherlv_1 = (Token) match(input, Colon, FOLLOW_4);
                            newLeafNode(otherlv_1, grammarAccess.getSimpleProjectDescriptionAccess().getColonKeyword_0_1());
                        }
                        break;
                }
                // InternalN4MFParser.g:2154:3: ( (lv_projectId_2_0= ruleN4mfIdentifier ) )
                // InternalN4MFParser.g:2155:4: (lv_projectId_2_0= ruleN4mfIdentifier )
                {
                    // InternalN4MFParser.g:2155:4: (lv_projectId_2_0= ruleN4mfIdentifier )
                    // InternalN4MFParser.g:2156:5: lv_projectId_2_0= ruleN4mfIdentifier
                    {
                        newCompositeNode(grammarAccess.getSimpleProjectDescriptionAccess().getProjectIdN4mfIdentifierParserRuleCall_1_0());
                        pushFollow(FOLLOW_2);
                        lv_projectId_2_0 = ruleN4mfIdentifier();
                        state._fsp--;
                        if (current == null) {
                            current = createModelElementForParent(grammarAccess.getSimpleProjectDescriptionRule());
                        }
                        set(current, "projectId", lv_projectId_2_0, "org.eclipse.n4js.n4mf.N4MF.N4mfIdentifier");
                        afterParserOrEnumRuleCall();
                    }
                }
            }
        }
        leaveRule();
    } catch (RecognitionException re) {
        recover(input, re);
        appendSkippedTokens();
    } finally {
    }
    return current;
}
Also used : EObject(org.eclipse.emf.ecore.EObject) AntlrDatatypeRuleToken(org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken) AntlrDatatypeRuleToken(org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken)

Example 8 with AntlrDatatypeRuleToken

use of org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken in project n4js by eclipse.

the class InternalRegularExpressionParser method ruleExactQuantifier.

// $ANTLR end "entryRuleExactQuantifier"
// $ANTLR start "ruleExactQuantifier"
// InternalRegularExpressionParser.g:1926:1: ruleExactQuantifier returns [EObject current=null] : ( () otherlv_1= LeftCurlyBracket ( (lv_min_2_0= ruleINT ) ) ( (otherlv_3= Comma ( (lv_max_4_0= ruleINT ) ) ) | ( (lv_unboundedMax_5_0= Comma ) ) )? otherlv_6= RightCurlyBracket ( (lv_nonGreedy_7_0= QuestionMark ) )? ) ;
public final EObject ruleExactQuantifier() throws RecognitionException {
    EObject current = null;
    Token otherlv_1 = null;
    Token otherlv_3 = null;
    Token lv_unboundedMax_5_0 = null;
    Token otherlv_6 = null;
    Token lv_nonGreedy_7_0 = null;
    AntlrDatatypeRuleToken lv_min_2_0 = null;
    AntlrDatatypeRuleToken lv_max_4_0 = null;
    enterRule();
    try {
        // InternalRegularExpressionParser.g:1932:2: ( ( () otherlv_1= LeftCurlyBracket ( (lv_min_2_0= ruleINT ) ) ( (otherlv_3= Comma ( (lv_max_4_0= ruleINT ) ) ) | ( (lv_unboundedMax_5_0= Comma ) ) )? otherlv_6= RightCurlyBracket ( (lv_nonGreedy_7_0= QuestionMark ) )? ) )
        // InternalRegularExpressionParser.g:1933:2: ( () otherlv_1= LeftCurlyBracket ( (lv_min_2_0= ruleINT ) ) ( (otherlv_3= Comma ( (lv_max_4_0= ruleINT ) ) ) | ( (lv_unboundedMax_5_0= Comma ) ) )? otherlv_6= RightCurlyBracket ( (lv_nonGreedy_7_0= QuestionMark ) )? )
        {
            // InternalRegularExpressionParser.g:1933:2: ( () otherlv_1= LeftCurlyBracket ( (lv_min_2_0= ruleINT ) ) ( (otherlv_3= Comma ( (lv_max_4_0= ruleINT ) ) ) | ( (lv_unboundedMax_5_0= Comma ) ) )? otherlv_6= RightCurlyBracket ( (lv_nonGreedy_7_0= QuestionMark ) )? )
            // InternalRegularExpressionParser.g:1934:3: () otherlv_1= LeftCurlyBracket ( (lv_min_2_0= ruleINT ) ) ( (otherlv_3= Comma ( (lv_max_4_0= ruleINT ) ) ) | ( (lv_unboundedMax_5_0= Comma ) ) )? otherlv_6= RightCurlyBracket ( (lv_nonGreedy_7_0= QuestionMark ) )?
            {
                // InternalRegularExpressionParser.g:1934:3: ()
                // InternalRegularExpressionParser.g:1935:4:
                {
                    if (state.backtracking == 0) {
                        current = forceCreateModelElement(grammarAccess.getExactQuantifierAccess().getExactQuantifierAction_0(), current);
                    }
                }
                otherlv_1 = (Token) match(input, LeftCurlyBracket, FOLLOW_20);
                if (state.failed)
                    return current;
                if (state.backtracking == 0) {
                    newLeafNode(otherlv_1, grammarAccess.getExactQuantifierAccess().getLeftCurlyBracketKeyword_1());
                }
                // InternalRegularExpressionParser.g:1945:3: ( (lv_min_2_0= ruleINT ) )
                // InternalRegularExpressionParser.g:1946:4: (lv_min_2_0= ruleINT )
                {
                    // InternalRegularExpressionParser.g:1946:4: (lv_min_2_0= ruleINT )
                    // InternalRegularExpressionParser.g:1947:5: lv_min_2_0= ruleINT
                    {
                        if (state.backtracking == 0) {
                            newCompositeNode(grammarAccess.getExactQuantifierAccess().getMinINTParserRuleCall_2_0());
                        }
                        pushFollow(FOLLOW_21);
                        lv_min_2_0 = ruleINT();
                        state._fsp--;
                        if (state.failed)
                            return current;
                        if (state.backtracking == 0) {
                            if (current == null) {
                                current = createModelElementForParent(grammarAccess.getExactQuantifierRule());
                            }
                            set(current, "min", lv_min_2_0, "org.eclipse.n4js.regex.RegularExpression.INT");
                            afterParserOrEnumRuleCall();
                        }
                    }
                }
                // InternalRegularExpressionParser.g:1964:3: ( (otherlv_3= Comma ( (lv_max_4_0= ruleINT ) ) ) | ( (lv_unboundedMax_5_0= Comma ) ) )?
                int alt27 = 3;
                int LA27_0 = input.LA(1);
                if ((LA27_0 == Comma)) {
                    int LA27_1 = input.LA(2);
                    if ((LA27_1 == RightCurlyBracket)) {
                        alt27 = 2;
                    } else if ((LA27_1 == RULE_UNICODE_DIGIT)) {
                        alt27 = 1;
                    }
                }
                switch(alt27) {
                    case 1:
                        // InternalRegularExpressionParser.g:1965:4: (otherlv_3= Comma ( (lv_max_4_0= ruleINT ) ) )
                        {
                            // InternalRegularExpressionParser.g:1965:4: (otherlv_3= Comma ( (lv_max_4_0= ruleINT ) ) )
                            // InternalRegularExpressionParser.g:1966:5: otherlv_3= Comma ( (lv_max_4_0= ruleINT ) )
                            {
                                otherlv_3 = (Token) match(input, Comma, FOLLOW_20);
                                if (state.failed)
                                    return current;
                                if (state.backtracking == 0) {
                                    newLeafNode(otherlv_3, grammarAccess.getExactQuantifierAccess().getCommaKeyword_3_0_0());
                                }
                                // InternalRegularExpressionParser.g:1970:5: ( (lv_max_4_0= ruleINT ) )
                                // InternalRegularExpressionParser.g:1971:6: (lv_max_4_0= ruleINT )
                                {
                                    // InternalRegularExpressionParser.g:1971:6: (lv_max_4_0= ruleINT )
                                    // InternalRegularExpressionParser.g:1972:7: lv_max_4_0= ruleINT
                                    {
                                        if (state.backtracking == 0) {
                                            newCompositeNode(grammarAccess.getExactQuantifierAccess().getMaxINTParserRuleCall_3_0_1_0());
                                        }
                                        pushFollow(FOLLOW_22);
                                        lv_max_4_0 = ruleINT();
                                        state._fsp--;
                                        if (state.failed)
                                            return current;
                                        if (state.backtracking == 0) {
                                            if (current == null) {
                                                current = createModelElementForParent(grammarAccess.getExactQuantifierRule());
                                            }
                                            set(current, "max", lv_max_4_0, "org.eclipse.n4js.regex.RegularExpression.INT");
                                            afterParserOrEnumRuleCall();
                                        }
                                    }
                                }
                            }
                        }
                        break;
                    case 2:
                        // InternalRegularExpressionParser.g:1991:4: ( (lv_unboundedMax_5_0= Comma ) )
                        {
                            // InternalRegularExpressionParser.g:1991:4: ( (lv_unboundedMax_5_0= Comma ) )
                            // InternalRegularExpressionParser.g:1992:5: (lv_unboundedMax_5_0= Comma )
                            {
                                // InternalRegularExpressionParser.g:1992:5: (lv_unboundedMax_5_0= Comma )
                                // InternalRegularExpressionParser.g:1993:6: lv_unboundedMax_5_0= Comma
                                {
                                    lv_unboundedMax_5_0 = (Token) match(input, Comma, FOLLOW_22);
                                    if (state.failed)
                                        return current;
                                    if (state.backtracking == 0) {
                                        newLeafNode(lv_unboundedMax_5_0, grammarAccess.getExactQuantifierAccess().getUnboundedMaxCommaKeyword_3_1_0());
                                    }
                                    if (state.backtracking == 0) {
                                        if (current == null) {
                                            current = createModelElement(grammarAccess.getExactQuantifierRule());
                                        }
                                        setWithLastConsumed(current, "unboundedMax", true, ",");
                                    }
                                }
                            }
                        }
                        break;
                }
                otherlv_6 = (Token) match(input, RightCurlyBracket, FOLLOW_19);
                if (state.failed)
                    return current;
                if (state.backtracking == 0) {
                    newLeafNode(otherlv_6, grammarAccess.getExactQuantifierAccess().getRightCurlyBracketKeyword_4());
                }
                // InternalRegularExpressionParser.g:2010:3: ( (lv_nonGreedy_7_0= QuestionMark ) )?
                int alt28 = 2;
                int LA28_0 = input.LA(1);
                if ((LA28_0 == QuestionMark)) {
                    alt28 = 1;
                }
                switch(alt28) {
                    case 1:
                        // InternalRegularExpressionParser.g:2011:4: (lv_nonGreedy_7_0= QuestionMark )
                        {
                            // InternalRegularExpressionParser.g:2011:4: (lv_nonGreedy_7_0= QuestionMark )
                            // InternalRegularExpressionParser.g:2012:5: lv_nonGreedy_7_0= QuestionMark
                            {
                                lv_nonGreedy_7_0 = (Token) match(input, QuestionMark, FOLLOW_2);
                                if (state.failed)
                                    return current;
                                if (state.backtracking == 0) {
                                    newLeafNode(lv_nonGreedy_7_0, grammarAccess.getExactQuantifierAccess().getNonGreedyQuestionMarkKeyword_5_0());
                                }
                                if (state.backtracking == 0) {
                                    if (current == null) {
                                        current = createModelElement(grammarAccess.getExactQuantifierRule());
                                    }
                                    setWithLastConsumed(current, "nonGreedy", true, "?");
                                }
                            }
                        }
                        break;
                }
            }
        }
        if (state.backtracking == 0) {
            leaveRule();
        }
    } catch (RecognitionException re) {
        recover(input, re);
        appendSkippedTokens();
    } finally {
    }
    return current;
}
Also used : EObject(org.eclipse.emf.ecore.EObject) AntlrDatatypeRuleToken(org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken) AntlrDatatypeRuleToken(org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken)

Example 9 with AntlrDatatypeRuleToken

use of org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken in project n4js by eclipse.

the class InternalRegularExpressionParser method ruleINT.

// $ANTLR end "entryRuleINT"
// $ANTLR start "ruleINT"
// InternalRegularExpressionParser.g:2096:1: ruleINT returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_UNICODE_DIGIT_0= RULE_UNICODE_DIGIT )+ ;
public final AntlrDatatypeRuleToken ruleINT() throws RecognitionException {
    AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
    Token this_UNICODE_DIGIT_0 = null;
    enterRule();
    try {
        // InternalRegularExpressionParser.g:2102:2: ( (this_UNICODE_DIGIT_0= RULE_UNICODE_DIGIT )+ )
        // InternalRegularExpressionParser.g:2103:2: (this_UNICODE_DIGIT_0= RULE_UNICODE_DIGIT )+
        {
            // InternalRegularExpressionParser.g:2103:2: (this_UNICODE_DIGIT_0= RULE_UNICODE_DIGIT )+
            int cnt31 = 0;
            loop31: do {
                int alt31 = 2;
                int LA31_0 = input.LA(1);
                if ((LA31_0 == RULE_UNICODE_DIGIT)) {
                    alt31 = 1;
                }
                switch(alt31) {
                    case 1:
                        // InternalRegularExpressionParser.g:2104:3: this_UNICODE_DIGIT_0= RULE_UNICODE_DIGIT
                        {
                            this_UNICODE_DIGIT_0 = (Token) match(input, RULE_UNICODE_DIGIT, FOLLOW_24);
                            if (state.failed)
                                return current;
                            if (state.backtracking == 0) {
                                current.merge(this_UNICODE_DIGIT_0);
                            }
                            if (state.backtracking == 0) {
                                newLeafNode(this_UNICODE_DIGIT_0, grammarAccess.getINTAccess().getUNICODE_DIGITTerminalRuleCall());
                            }
                        }
                        break;
                    default:
                        if (cnt31 >= 1)
                            break loop31;
                        if (state.backtracking > 0) {
                            state.failed = true;
                            return current;
                        }
                        EarlyExitException eee = new EarlyExitException(31, input);
                        throw eee;
                }
                cnt31++;
            } while (true);
        }
        if (state.backtracking == 0) {
            leaveRule();
        }
    } catch (RecognitionException re) {
        recover(input, re);
        appendSkippedTokens();
    } finally {
    }
    return current;
}
Also used : AntlrDatatypeRuleToken(org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken) AntlrDatatypeRuleToken(org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken)

Example 10 with AntlrDatatypeRuleToken

use of org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken in project n4js by eclipse.

the class InternalTypesParser method entryRuleTypeReferenceName.

// $ANTLR end "rulePrimitiveType"
// $ANTLR start "entryRuleTypeReferenceName"
// InternalTypesParser.g:636:1: entryRuleTypeReferenceName returns [String current=null] : iv_ruleTypeReferenceName= ruleTypeReferenceName EOF ;
public final String entryRuleTypeReferenceName() throws RecognitionException {
    String current = null;
    AntlrDatatypeRuleToken iv_ruleTypeReferenceName = null;
    try {
        // InternalTypesParser.g:636:57: (iv_ruleTypeReferenceName= ruleTypeReferenceName EOF )
        // InternalTypesParser.g:637:2: iv_ruleTypeReferenceName= ruleTypeReferenceName EOF
        {
            if (state.backtracking == 0) {
                newCompositeNode(grammarAccess.getTypeReferenceNameRule());
            }
            pushFollow(FOLLOW_1);
            iv_ruleTypeReferenceName = ruleTypeReferenceName();
            state._fsp--;
            if (state.failed)
                return current;
            if (state.backtracking == 0) {
                current = iv_ruleTypeReferenceName.getText();
            }
            match(input, EOF, FOLLOW_2);
            if (state.failed)
                return current;
        }
    } catch (RecognitionException re) {
        recover(input, re);
        appendSkippedTokens();
    } finally {
    }
    return current;
}
Also used : AntlrDatatypeRuleToken(org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken)

Aggregations

AntlrDatatypeRuleToken (org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken)979 EObject (org.eclipse.emf.ecore.EObject)316 XtextTokenStream (org.eclipse.xtext.parser.antlr.XtextTokenStream)55 HiddenTokens (org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens)55 Enumerator (org.eclipse.emf.common.util.Enumerator)13 Test (org.junit.Test)10 CommonToken (org.antlr.runtime.CommonToken)3 UnorderedGroupState (org.eclipse.xtext.parser.antlr.IUnorderedGroupHelper.UnorderedGroupState)3 DatatypeRuleToken (org.eclipse.xtext.parser.impl.DatatypeRuleToken)2