diff options
author | Stephan Herrmann | 2022-12-29 16:30:03 +0000 |
---|---|---|
committer | Stephan Herrmann | 2022-12-29 16:35:31 +0000 |
commit | 26cbd3c6c16749d8b6488263956e2d439729531f (patch) | |
tree | 54b522b707855bcd2765ae97b3c1824801f41523 /org.eclipse.jdt.core | |
parent | fdf7878bc2e131c218df823955939f4dbba39988 (diff) | |
download | org.eclipse.objectteams-26cbd3c6c16749d8b6488263956e2d439729531f.tar.gz org.eclipse.objectteams-26cbd3c6c16749d8b6488263956e2d439729531f.tar.xz org.eclipse.objectteams-26cbd3c6c16749d8b6488263956e2d439729531f.zip |
polish ecj config in comparison to orig + other minor sync fixes
Diffstat (limited to 'org.eclipse.jdt.core')
-rw-r--r-- | org.eclipse.jdt.core/build-jars.xml | 6 | ||||
-rw-r--r-- | org.eclipse.jdt.core/customBuildCallbacks.xml | 222 | ||||
-rw-r--r-- | org.eclipse.jdt.core/grammar/java_1_4.g | 1448 | ||||
-rw-r--r-- | org.eclipse.jdt.core/grammar/java_1_5.g | 2326 | ||||
-rw-r--r-- | org.eclipse.jdt.core/schema/codeFormatter.exsd | 196 | ||||
-rw-r--r-- | org.eclipse.jdt.core/schema/compiler.dtd | 16 |
6 files changed, 328 insertions, 3886 deletions
diff --git a/org.eclipse.jdt.core/build-jars.xml b/org.eclipse.jdt.core/build-jars.xml deleted file mode 100644 index 22af7b25b..000000000 --- a/org.eclipse.jdt.core/build-jars.xml +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project name="build" default="plugin_export"> - <target name="plugin_export"> - <pde.exportPlugins plugins="org.eclipse.jdt.core" destination="/home/local/tmp/updates" exportType="directory" useJARFormat="true" exportSource="false"/> - </target> -</project> diff --git a/org.eclipse.jdt.core/customBuildCallbacks.xml b/org.eclipse.jdt.core/customBuildCallbacks.xml new file mode 100644 index 000000000..ccfc9d8e9 --- /dev/null +++ b/org.eclipse.jdt.core/customBuildCallbacks.xml @@ -0,0 +1,222 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (c) 2006, 2011 IBM Corporation and others. + + This program and the accompanying materials + are made available under the terms of the Eclipse Public License 2.0 + which accompanies this distribution, and is available at + https://www.eclipse.org/legal/epl-2.0/ + + SPDX-License-Identifier: EPL-2.0 + + Contributors: + IBM Corporation - initial API and implementation + --> + +<!-- ===================================================================== --> +<!-- Custom targets called from a project's generated build.xml --> +<!-- Set customBuildCallbacks=<path/to/this/file> in your build.properties.--> +<!-- ===================================================================== --> +<project name="Build specific targets and properties" default="noDefault"> + + <!-- ===================================================================== --> + <!-- Default target --> + <!-- ===================================================================== --> + <target name="noDefault"> + <echo message="This file must be called with explicit targets" /> + </target> + + <!-- ===================================================================== --> + <!-- Steps to do before the target build.jars --> + <!-- Available parameters : --> + <!-- build.result.folder - folder to contain the build results --> + <!-- ===================================================================== --> + <target name="pre.build.jars"> + </target> + + <!-- ===================================================================== --> + <!-- Steps to do after the target build.jars --> + <!-- Available parameters : --> + <!-- build.result.folder - folder to contain the build results --> + <!-- ===================================================================== --> + <target name="post.build.jars">
</target> + + <!-- ===================================================================== --> + <!-- Steps to do before the target build.sources --> + <!-- Available parameters : --> + <!-- build.result.folder - folder to contain the build results --> + <!-- ===================================================================== --> + <target name="pre.build.sources"> + </target> + + <!-- ===================================================================== --> + <!-- Steps to do after the target build.sources --> + <!-- Available parameters : --> + <!-- build.result.folder - folder to contain the build results --> + <!-- ===================================================================== --> + <target name="post.build.sources"> + </target> + + <!-- ===================================================================== --> + <!-- Steps to do before the compilation target <name> --> + <!-- Substitute "name" with the name of the compilation target, eg @dot --> + <!-- Available parameters : --> + <!-- source.foldern : n = 1 ... N, the source folders --> + <!-- target.folder : where the results of the compilation go --> + <!-- <name>.classpath : name = name of the compilation target. A --> + <!-- reference to the classpath structure. --> + <!-- ===================================================================== --> + <target name="pre.name"> + </target> + + <target name="pre.@dot"> + </target> + + <!-- ===================================================================== --> + <!-- Steps to do during the compilation target <name>, after the compile --> + <!-- but before jaring. Substitute "name" with the name of the compilation--> + <!-- target, eg @dot --> + <!-- Available parameters : --> + <!-- source.foldern : n = 1 ... N, the source folders --> + <!-- target.folder : where the results of the compilation go --> + <!-- <name>.classpath : name = name of the compilation target. A --> + <!-- reference to the classpath structure. --> + <!-- ===================================================================== --> + <target name="post.compile.name"> + </target> + + <target name="post.compile.@dot"> + </target> + + <!-- ===================================================================== --> + <!-- Steps to do after the compilation target <name> --> + <!-- Substitute "name" with the name of the compilation target, eg @dot --> + <!-- Available parameters : --> + <!-- jar.location - the location of the compilation results --> + <!-- <name>.classpath : name = name of the compilation target. A --> + <!-- reference to the classpath structure. --> + <!-- ===================================================================== --> + <target name="post.name"> + </target> + + <target name="post.@dot"> + </target> + + <!-- ===================================================================== --> + <!-- Steps to do before the target gather.bin.parts --> + <!-- Available parameters : --> + <!-- build.result.folder - folder containing the build results --> + <!-- target.folder - destination folder --> + <!-- ===================================================================== --> + <target name="pre.gather.bin.parts"> + </target> + + <!-- ===================================================================== --> + <!-- Steps to do after the target gather.bin.parts --> + <!-- Available parameters : --> + <!-- build.result.folder - folder containing the build results --> + <!-- target.folder - destination folder --> + <!-- ===================================================================== --> + <target name="post.gather.bin.parts"> + </target> + + <!-- ===================================================================== --> + <!-- Steps to do before the target gather.sources --> + <!-- Available parameters : --> + <!-- destination.temp.folder - destination folder --> + <!-- ===================================================================== --> + <target name="pre.gather.sources"> + </target> + + <!-- ===================================================================== --> + <!-- Steps to do after the target gather.sources --> + <!-- Available parameters : --> + <!-- destination.temp.folder - destination folder --> + <!-- ===================================================================== --> + <target name="post.gather.sources"> + </target> + + <!-- ===================================================================== --> + <!-- Steps to do before the target gather.logs --> + <!-- Available parameters : --> + <!-- destination.temp.folder - destination folder --> + <!-- ===================================================================== --> + <target name="pre.gather.logs"> + </target> + + <!-- ===================================================================== --> + <!-- Steps to do after the target gather.logs --> + <!-- Available parameters : --> + <!-- destination.temp.folder - destination folder --> + <!-- ===================================================================== --> + <target name="post.gather.logs"> + </target> + + <!-- ===================================================================== --> + <!-- Steps to do before the target clean --> + <!-- Available parameters : --> + <!-- destination.temp.folder - destination folder --> + <!-- ===================================================================== --> + <target name="pre.clean"> + </target> + + <!-- ===================================================================== --> + <!-- Steps to do after the target clean --> + <!-- Available parameters : --> + <!-- plugin.destination - final destination of the build --> + <!-- build.result.folder - results of the compilation --> + <!-- temp.folder - temporary folder --> + <!-- ===================================================================== --> + <target name="post.clean"> + </target> + + <!-- ===================================================================== --> + <!-- Steps to do before the target jdtCompilerAdapter.jar --> + <!-- ===================================================================== --> + <target name="pre.jdtCompilerAdapter.jar"> + </target> + + <!-- ===================================================================== --> + <!-- Steps to do after the target compile.jdtCompilerAdapter.jar --> + <!-- ===================================================================== --> + <!-- Steps to do during the compilation target <name>, after the compile --> + <!-- but before jaring. Substitute "name" with the name of the compilation--> + <!-- target, eg @dot --> + <!-- Available parameters : --> + <!-- source.foldern : n = 1 ... N, the source folders --> + <!-- target.folder : where the results of the compilation go --> + <!-- <name>.classpath : name = name of the compilation target. A --> + <!-- reference to the classpath structure. --> + <!-- ===================================================================== --> + <target name="post.compile.jdtCompilerAdapter.jar"> + <ant antfile="${basedir}/scripts/export-ecj.xml" target="extract-ant-adapter-compiler"/> + <copy todir="${target.folder}"> + <fileset dir="${basedir}/scripts/antadapter"> + <include name="plugin.properties"/> + <include name="plugin.xml"/> + </fileset> + </copy> + </target> + + <!-- ===================================================================== --> + <!-- Steps to do after the target jdtCompilerAdapter.jar --> + <!-- jar.Location : the location of the file jdtCompilerAdapter.jar --> + <!-- ===================================================================== --> + <target name="post.jdtCompilerAdapter.jar"> + <property name="unjarDestBin" value="${basedir}/tempbin"/> + <mkdir dir="${unjarDestBin}"/> + <unjar src="${jar.Location}" dest="${unjarDestBin}"/> + <delete file="${jar.Location}" /> + <delete file="${unjarDestBin}/META-INF/MANIFEST.MF" failonerror="false"/> + <copy file="${basedir}/scripts/antadapter/META-INF/MANIFEST.MF" todir="${unjarDestBin}/META-INF"/> + <eclipse.versionReplacer path="${unjarDestBin}" version="${bundleVersion}"/> + <zip destfile="${jar.Location}"> + <fileset dir="${unjarDestBin}" includes="META-INF/MANIFEST.MF"/> + <fileset dir="${unjarDestBin}"> + <include name="**/*"/> + <exclude name="META-INF/MANIFEST.MF"/> + </fileset> + </zip> + <delete dir="${unjarDestBin}" failonerror="false"/> + </target> +</project>
\ No newline at end of file diff --git a/org.eclipse.jdt.core/grammar/java_1_4.g b/org.eclipse.jdt.core/grammar/java_1_4.g deleted file mode 100644 index bef79194a..000000000 --- a/org.eclipse.jdt.core/grammar/java_1_4.g +++ /dev/null @@ -1,1448 +0,0 @@ ---main options -%options ACTION, AN=JavaAction.java, GP=java, -%options FILE-PREFIX=java, ESCAPE=$, PREFIX=TokenName, OUTPUT-SIZE=125 , -%options NOGOTO-DEFAULT, SINGLE-PRODUCTIONS, LALR=1 , TABLE, - ---error recovering options..... -%options ERROR_MAPS - ---grammar understanding options -%options first follow -%options TRACE=FULL , -%options VERBOSE - -%options DEFERRED -%options NAMES=MAX -%options SCOPES - ---Usefull macros helping reading/writing semantic actions -$Define -$putCase -/. case $rule_number : // System.out.println("$rule_text"); //$NON-NLS-1$ - ./ - -$break -/. - break ; -./ - -$readableName -/.$rule_number=./ - --- here it starts really ------------------------------------------ -$Terminals - - Identifier - - abstract assert boolean break byte case catch char class - continue default do double else extends false final finally float - for if implements import instanceof int - interface long native new null package private - protected public return short static strictfp super switch - synchronized this throw throws transient true try void - volatile while - - IntegerLiteral - LongLiteral - FloatingPointLiteral - DoubleLiteral - CharacterLiteral - StringLiteral - - PLUS_PLUS - MINUS_MINUS - EQUAL_EQUAL - LESS_EQUAL - GREATER_EQUAL - NOT_EQUAL - LEFT_SHIFT - RIGHT_SHIFT - UNSIGNED_RIGHT_SHIFT - PLUS_EQUAL - MINUS_EQUAL - MULTIPLY_EQUAL - DIVIDE_EQUAL - AND_EQUAL - OR_EQUAL - XOR_EQUAL - REMAINDER_EQUAL - LEFT_SHIFT_EQUAL - RIGHT_SHIFT_EQUAL - UNSIGNED_RIGHT_SHIFT_EQUAL - OR_OR - AND_AND - PLUS - MINUS - NOT - REMAINDER - XOR - AND - MULTIPLY - OR - TWIDDLE - DIVIDE - GREATER - LESS - LPAREN - RPAREN - LBRACE - RBRACE - LBRACKET - RBRACKET - SEMICOLON - QUESTION - COLON - COMMA - DOT - EQUAL - --- BodyMarker - -$Alias - - '++' ::= PLUS_PLUS - '--' ::= MINUS_MINUS - '==' ::= EQUAL_EQUAL - '<=' ::= LESS_EQUAL - '>=' ::= GREATER_EQUAL - '!=' ::= NOT_EQUAL - '<<' ::= LEFT_SHIFT - '>>' ::= RIGHT_SHIFT - '>>>' ::= UNSIGNED_RIGHT_SHIFT - '+=' ::= PLUS_EQUAL - '-=' ::= MINUS_EQUAL - '*=' ::= MULTIPLY_EQUAL - '/=' ::= DIVIDE_EQUAL - '&=' ::= AND_EQUAL - '|=' ::= OR_EQUAL - '^=' ::= XOR_EQUAL - '%=' ::= REMAINDER_EQUAL - '<<=' ::= LEFT_SHIFT_EQUAL - '>>=' ::= RIGHT_SHIFT_EQUAL - '>>>=' ::= UNSIGNED_RIGHT_SHIFT_EQUAL - '||' ::= OR_OR - '&&' ::= AND_AND - - '+' ::= PLUS - '-' ::= MINUS - '!' ::= NOT - '%' ::= REMAINDER - '^' ::= XOR - '&' ::= AND - '*' ::= MULTIPLY - '|' ::= OR - '~' ::= TWIDDLE - '/' ::= DIVIDE - '>' ::= GREATER - '<' ::= LESS - '(' ::= LPAREN - ')' ::= RPAREN - '{' ::= LBRACE - '}' ::= RBRACE - '[' ::= LBRACKET - ']' ::= RBRACKET - ';' ::= SEMICOLON - '?' ::= QUESTION - ':' ::= COLON - ',' ::= COMMA - '.' ::= DOT - '=' ::= EQUAL - -$Start - Goal - -$Rules - -/. // This method is part of an automatic generation : do NOT edit-modify -protected void consumeRule(int act) { - switch ( act ) { -./ - - - -Goal ::= '++' CompilationUnit -Goal ::= '--' MethodBody --- Initializer -Goal ::= '>>' StaticInitializer -Goal ::= '>>' Initializer --- error recovery -Goal ::= '>>>' Headers -Goal ::= '*' BlockStatements -Goal ::= '*' CatchHeader --- JDOM -Goal ::= '&&' FieldDeclaration -Goal ::= '||' ImportDeclaration -Goal ::= '?' PackageDeclaration -Goal ::= '+' TypeDeclaration -Goal ::= '/' GenericMethodDeclaration -Goal ::= '&' ClassBodyDeclarations --- code snippet -Goal ::= '%' Expression --- completion parser -Goal ::= '~' BlockStatementsopt -/:$readableName Goal:/ - -Literal -> IntegerLiteral -Literal -> LongLiteral -Literal -> FloatingPointLiteral -Literal -> DoubleLiteral -Literal -> CharacterLiteral -Literal -> StringLiteral -Literal -> null -Literal -> BooleanLiteral -/:$readableName Literal:/ -BooleanLiteral -> true -BooleanLiteral -> false -/:$readableName BooleanLiteral:/ - -------------------------------------------------------------- -------------------------------------------------------------- ---a Type results in both a push of its dimension(s) and its name(s). - -Type ::= PrimitiveType - /.$putCase consumePrimitiveType(); $break ./ -Type -> ReferenceType -/:$readableName Type:/ - -PrimitiveType -> NumericType -/:$readableName PrimitiveType:/ -NumericType -> IntegralType -NumericType -> FloatingPointType -/:$readableName NumericType:/ - -PrimitiveType -> 'boolean' -PrimitiveType -> 'void' -IntegralType -> 'byte' -IntegralType -> 'short' -IntegralType -> 'int' -IntegralType -> 'long' -IntegralType -> 'char' -/:$readableName IntegralType:/ -FloatingPointType -> 'float' -FloatingPointType -> 'double' -/:$readableName FloatingPointType:/ - -ReferenceType ::= ClassOrInterfaceType -/.$putCase consumeReferenceType(); $break ./ -ReferenceType -> ArrayType -- here a push of dimensions is done, that explains the two previous push 0 -/:$readableName ReferenceType:/ -ClassOrInterfaceType -> Name -/:$readableName Type:/ - --- --- These rules have been rewritten to avoid some conflicts introduced --- by adding the 1.1 features --- --- ArrayType ::= PrimitiveType '[' ']' --- ArrayType ::= Name '[' ']' --- ArrayType ::= ArrayType '[' ']' --- - -ArrayType ::= PrimitiveType Dims -ArrayType ::= Name Dims -/:$readableName ArrayType:/ - -ClassType -> ClassOrInterfaceType -/:$readableName ClassType:/ - --------------------------------------------------------------- --------------------------------------------------------------- - -Name -> SimpleName -Name -> QualifiedName -/:$readableName Name:/ - -SimpleName -> 'Identifier' -/:$readableName SimpleName:/ - -QualifiedName ::= Name '.' SimpleName -/.$putCase consumeQualifiedName(); $break ./ -/:$readableName QualifiedName:/ - -CompilationUnit ::= EnterCompilationUnit PackageDeclarationopt ImportDeclarationsopt TypeDeclarationsopt -/.$putCase consumeCompilationUnit(); $break ./ -/:$readableName CompilationUnit:/ - -EnterCompilationUnit ::= $empty -/.$putCase consumeEnterCompilationUnit(); $break ./ -/:$readableName EnterCompilationUnit:/ - -Headers -> Header -Headers ::= Headers Header -/:$readableName Headers:/ - -Header -> ImportDeclaration -Header -> PackageDeclaration -Header -> ClassHeader -Header -> InterfaceHeader -Header -> StaticInitializer -Header -> MethodHeader -Header -> ConstructorHeader -Header -> FieldDeclaration -Header -> AllocationHeader -Header -> ArrayCreationHeader -/:$readableName Header:/ - -CatchHeader ::= 'catch' '(' FormalParameter ')' '{' -/.$putCase consumeCatchHeader(); $break ./ -/:$readableName CatchHeader:/ - -ImportDeclarations -> ImportDeclaration -ImportDeclarations ::= ImportDeclarations ImportDeclaration -/.$putCase consumeImportDeclarations(); $break ./ -/:$readableName ImportDeclarations:/ - -TypeDeclarations -> TypeDeclaration -TypeDeclarations ::= TypeDeclarations TypeDeclaration -/.$putCase consumeTypeDeclarations(); $break ./ -/:$readableName TypeDeclarations:/ - -PackageDeclaration ::= PackageDeclarationName ';' -/.$putCase consumePackageDeclaration(); $break ./ -/:$readableName PackageDeclaration:/ - -PackageDeclarationName ::= 'package' Name -/.$putCase consumePackageDeclarationName(); $break ./ -/:$readableName PackageDeclarationName:/ - -ImportDeclaration -> SingleTypeImportDeclaration -ImportDeclaration -> TypeImportOnDemandDeclaration -/:$readableName ImportDeclaration:/ - -SingleTypeImportDeclaration ::= SingleTypeImportDeclarationName ';' -/.$putCase consumeSingleTypeImportDeclaration(); $break ./ -/:$readableName SingleTypeImportDeclaration:/ - -SingleTypeImportDeclarationName ::= 'import' Name -/.$putCase consumeSingleTypeImportDeclarationName(); $break ./ -/:$readableName SingleTypeImportDeclarationName:/ - -TypeImportOnDemandDeclaration ::= TypeImportOnDemandDeclarationName ';' -/.$putCase consumeTypeImportOnDemandDeclaration(); $break ./ -/:$readableName TypeImportOnDemandDeclaration:/ - -TypeImportOnDemandDeclarationName ::= 'import' Name '.' '*' -/.$putCase consumeTypeImportOnDemandDeclarationName(); $break ./ -/:$readableName TypeImportOnDemandDeclarationName:/ - -TypeDeclaration -> ClassDeclaration -TypeDeclaration -> InterfaceDeclaration --- this declaration in part of a list od declaration and we will --- use and optimized list length calculation process --- thus we decrement the number while it will be incremend..... -TypeDeclaration ::= ';' -/. $putCase consumeEmptyTypeDeclaration(); $break ./ -/:$readableName TypeDeclaration:/ - ---18.7 Only in the LALR(1) Grammar - -Modifiers ::= Modifier -Modifiers ::= Modifiers Modifier -/:$readableName Modifiers:/ - -Modifier -> 'public' -Modifier -> 'protected' -Modifier -> 'private' -Modifier -> 'static' -Modifier -> 'abstract' -Modifier -> 'final' -Modifier -> 'native' -Modifier -> 'synchronized' -Modifier -> 'transient' -Modifier -> 'volatile' -Modifier -> 'strictfp' -/:$readableName Modifier:/ - ---18.8 Productions from 8: Class Declarations ---ClassModifier ::= --- 'abstract' --- | 'final' --- | 'public' ---18.8.1 Productions from 8.1: Class Declarations - -ClassDeclaration ::= ClassHeader ClassBody -/.$putCase consumeClassDeclaration(); $break ./ -/:$readableName ClassDeclaration:/ - -ClassHeader ::= ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt -/.$putCase consumeClassHeader(); $break ./ -/:$readableName ClassHeader:/ - -ClassHeaderName ::= Modifiersopt 'class' 'Identifier' -/.$putCase consumeClassHeaderName(); $break ./ -/:$readableName ClassHeaderName:/ - -ClassHeaderExtends ::= 'extends' ClassType -/.$putCase consumeClassHeaderExtends(); $break ./ -/:$readableName ClassHeaderExtends:/ - -ClassHeaderImplements ::= 'implements' InterfaceTypeList -/.$putCase consumeClassHeaderImplements(); $break ./ -/:$readableName ClassHeaderImplements:/ - -InterfaceTypeList -> InterfaceType -InterfaceTypeList ::= InterfaceTypeList ',' InterfaceType -/.$putCase consumeInterfaceTypeList(); $break ./ -/:$readableName InterfaceTypeList:/ - -InterfaceType ::= ClassOrInterfaceType -/.$putCase consumeInterfaceType(); $break ./ -/:$readableName InterfaceType:/ - -ClassBody ::= '{' ClassBodyDeclarationsopt '}' -/:$readableName ClassBody:/ - -ClassBodyDeclarations ::= ClassBodyDeclaration -ClassBodyDeclarations ::= ClassBodyDeclarations ClassBodyDeclaration -/.$putCase consumeClassBodyDeclarations(); $break ./ -/:$readableName ClassBodyDeclarations:/ - -ClassBodyDeclaration -> ClassMemberDeclaration -ClassBodyDeclaration -> StaticInitializer -ClassBodyDeclaration -> ConstructorDeclaration ---1.1 feature -ClassBodyDeclaration ::= Diet NestedMethod Block -/.$putCase consumeClassBodyDeclaration(); $break ./ -/:$readableName ClassBodyDeclaration:/ -Diet ::= $empty -/.$putCase consumeDiet(); $break./ -/:$readableName Diet:/ - -Initializer ::= Diet NestedMethod Block -/.$putCase consumeClassBodyDeclaration(); $break ./ -/:$readableName Initializer:/ - -ClassMemberDeclaration -> FieldDeclaration -ClassMemberDeclaration -> MethodDeclaration ---1.1 feature -ClassMemberDeclaration -> ClassDeclaration ---1.1 feature -ClassMemberDeclaration -> InterfaceDeclaration -/:$readableName ClassMemberDeclaration:/ - --- Empty declarations are not valid Java ClassMemberDeclarations. --- However, since the current (2/14/97) Java compiler accepts them --- (in fact, some of the official tests contain this erroneous --- syntax) - -GenericMethodDeclaration -> MethodDeclaration -GenericMethodDeclaration -> ConstructorDeclaration -/:$readableName GenericMethodDeclaration:/ - -ClassMemberDeclaration ::= ';' -/.$putCase consumeEmptyClassMemberDeclaration(); $break./ - ---18.8.2 Productions from 8.3: Field Declarations ---VariableModifier ::= --- 'public' --- | 'protected' --- | 'private' --- | 'static' --- | 'final' --- | 'transient' --- | 'volatile' - -FieldDeclaration ::= Modifiersopt Type VariableDeclarators ';' -/.$putCase consumeFieldDeclaration(); $break ./ -/:$readableName FieldDeclaration:/ - -VariableDeclarators -> VariableDeclarator -VariableDeclarators ::= VariableDeclarators ',' VariableDeclarator -/.$putCase consumeVariableDeclarators(); $break ./ -/:$readableName VariableDeclarators:/ - -VariableDeclarator ::= VariableDeclaratorId EnterVariable ExitVariableWithoutInitialization - -VariableDeclarator ::= VariableDeclaratorId EnterVariable '=' ForceNoDiet VariableInitializer RestoreDiet ExitVariableWithInitialization -/:$readableName VariableDeclarator:/ - -EnterVariable ::= $empty -/.$putCase consumeEnterVariable(); $break ./ -/:$readableName EnterVariable:/ - -ExitVariableWithInitialization ::= $empty -/.$putCase consumeExitVariableWithInitialization(); $break ./ -/:$readableName ExitVariableWithInitialization:/ - -ExitVariableWithoutInitialization ::= $empty -/.$putCase consumeExitVariableWithoutInitialization(); $break ./ -/:$readableName ExitVariableWithoutInitialization:/ - -ForceNoDiet ::= $empty -/.$putCase consumeForceNoDiet(); $break ./ -/:$readableName ForceNoDiet:/ -RestoreDiet ::= $empty -/.$putCase consumeRestoreDiet(); $break ./ -/:$readableName RestoreDiet:/ - -VariableDeclaratorId ::= 'Identifier' Dimsopt -/:$readableName VariableDeclaratorId:/ - -VariableInitializer -> Expression -VariableInitializer -> ArrayInitializer -/:$readableName VariableInitializer:/ - ---18.8.3 Productions from 8.4: Method Declarations ---MethodModifier ::= --- 'public' --- | 'protected' --- | 'private' --- | 'static' --- | 'abstract' --- | 'final' --- | 'native' --- | 'synchronized' --- - -MethodDeclaration -> AbstractMethodDeclaration -MethodDeclaration ::= MethodHeader MethodBody -/.$putCase // set to true to consume a method with a body - consumeMethodDeclaration(true); $break ./ -/:$readableName MethodDeclaration:/ - -AbstractMethodDeclaration ::= MethodHeader ';' -/.$putCase // set to false to consume a method without body - consumeMethodDeclaration(false); $break ./ -/:$readableName AbstractMethodDeclaration:/ - -MethodHeader ::= MethodHeaderName MethodHeaderParameters MethodHeaderExtendedDims MethodHeaderThrowsClauseopt -/.$putCase consumeMethodHeader(); $break ./ -/:$readableName MethodHeader:/ - -MethodHeaderName ::= Modifiersopt Type 'Identifier' '(' -/.$putCase consumeMethodHeaderName(); $break ./ -/:$readableName MethodHeaderName:/ - -MethodHeaderParameters ::= FormalParameterListopt ')' -/.$putCase consumeMethodHeaderParameters(); $break ./ -/:$readableName MethodHeaderParameters:/ - -MethodHeaderExtendedDims ::= Dimsopt -/.$putCase consumeMethodHeaderExtendedDims(); $break ./ -/:$readableName MethodHeaderExtendedDims:/ - -MethodHeaderThrowsClause ::= 'throws' ClassTypeList -/.$putCase consumeMethodHeaderThrowsClause(); $break ./ -/:$readableName MethodHeaderThrowsClause:/ - -ConstructorHeader ::= ConstructorHeaderName MethodHeaderParameters MethodHeaderThrowsClauseopt -/.$putCase consumeConstructorHeader(); $break ./ -/:$readableName ConstructorHeader:/ - -ConstructorHeaderName ::= Modifiersopt 'Identifier' '(' -/.$putCase consumeConstructorHeaderName(); $break ./ -/:$readableName ConstructorHeaderName:/ - -FormalParameterList -> FormalParameter -FormalParameterList ::= FormalParameterList ',' FormalParameter -/.$putCase consumeFormalParameterList(); $break ./ -/:$readableName FormalParameterList:/ - ---1.1 feature -FormalParameter ::= Modifiersopt Type VariableDeclaratorId -/.$putCase // the boolean is used to know if the modifiers should be reset - consumeFormalParameter(); $break ./ -/:$readableName FormalParameter:/ - -ClassTypeList -> ClassTypeElt -ClassTypeList ::= ClassTypeList ',' ClassTypeElt -/.$putCase consumeClassTypeList(); $break ./ -/:$readableName ClassTypeList:/ - -ClassTypeElt ::= ClassType -/.$putCase consumeClassTypeElt(); $break ./ -/:$readableName ClassType:/ - -MethodBody ::= NestedMethod '{' BlockStatementsopt '}' -/.$putCase consumeMethodBody(); $break ./ -/:$readableName MethodBody:/ - -NestedMethod ::= $empty -/.$putCase consumeNestedMethod(); $break ./ -/:$readableName NestedMethod:/ - ---18.8.4 Productions from 8.5: Static Initializers - -StaticInitializer ::= StaticOnly Block -/.$putCase consumeStaticInitializer(); $break./ -/:$readableName StaticInitializer:/ - -StaticOnly ::= 'static' -/.$putCase consumeStaticOnly(); $break ./ -/:$readableName StaticOnly:/ - ---18.8.5 Productions from 8.6: Constructor Declarations ---ConstructorModifier ::= --- 'public' --- | 'protected' --- | 'private' --- --- -ConstructorDeclaration ::= ConstructorHeader MethodBody -/.$putCase consumeConstructorDeclaration() ; $break ./ - --- These rules are added to be able to parse constructors with no body -ConstructorDeclaration ::= ConstructorHeader ';' -/.$putCase consumeInvalidConstructorDeclaration() ; $break ./ -/:$readableName ConstructorDeclaration:/ - --- the rules ExplicitConstructorInvocationopt has been expanded --- in the rule below in order to make the grammar lalr(1). - -ExplicitConstructorInvocation ::= 'this' '(' ArgumentListopt ')' ';' -/.$putCase consumeExplicitConstructorInvocation(0,ExplicitConstructorCall.This); $break ./ - -ExplicitConstructorInvocation ::= 'super' '(' ArgumentListopt ')' ';' -/.$putCase consumeExplicitConstructorInvocation(0,ExplicitConstructorCall.Super); $break ./ - ---1.1 feature -ExplicitConstructorInvocation ::= Primary '.' 'super' '(' ArgumentListopt ')' ';' -/.$putCase consumeExplicitConstructorInvocation(1, ExplicitConstructorCall.Super); $break ./ - ---1.1 feature -ExplicitConstructorInvocation ::= Name '.' 'super' '(' ArgumentListopt ')' ';' -/.$putCase consumeExplicitConstructorInvocation(2, ExplicitConstructorCall.Super); $break ./ - ---1.1 feature -ExplicitConstructorInvocation ::= Primary '.' 'this' '(' ArgumentListopt ')' ';' -/.$putCase consumeExplicitConstructorInvocation(1, ExplicitConstructorCall.This); $break ./ - ---1.1 feature -ExplicitConstructorInvocation ::= Name '.' 'this' '(' ArgumentListopt ')' ';' -/.$putCase consumeExplicitConstructorInvocation(2, ExplicitConstructorCall.This); $break ./ -/:$readableName ExplicitConstructorInvocation:/ - ---18.9 Productions from 9: Interface Declarations - ---18.9.1 Productions from 9.1: Interface Declarations ---InterfaceModifier ::= --- 'public' --- | 'abstract' --- -InterfaceDeclaration ::= InterfaceHeader InterfaceBody -/.$putCase consumeInterfaceDeclaration(); $break ./ -/:$readableName InterfaceDeclaration:/ - -InterfaceHeader ::= InterfaceHeaderName InterfaceHeaderExtendsopt -/.$putCase consumeInterfaceHeader(); $break ./ -/:$readableName InterfaceHeader:/ - -InterfaceHeaderName ::= Modifiersopt 'interface' 'Identifier' -/.$putCase consumeInterfaceHeaderName(); $break ./ -/:$readableName InterfaceHeaderName:/ - --- This rule will be used to accept inner local interface and then report a relevant error message -InvalidInterfaceDeclaration -> InterfaceHeader InterfaceBody -/:$readableName InvalidInterfaceDeclaration:/ - -InterfaceHeaderExtends ::= 'extends' InterfaceTypeList -/.$putCase consumeInterfaceHeaderExtends(); $break ./ -/:$readableName InterfaceHeaderExtends:/ - -InterfaceBody ::= '{' InterfaceMemberDeclarationsopt '}' -/:$readableName InterfaceBody:/ - -InterfaceMemberDeclarations -> InterfaceMemberDeclaration -InterfaceMemberDeclarations ::= InterfaceMemberDeclarations InterfaceMemberDeclaration -/.$putCase consumeInterfaceMemberDeclarations(); $break ./ -/:$readableName InterfaceMemberDeclarations:/ - ---same as for class members -InterfaceMemberDeclaration ::= ';' -/.$putCase consumeEmptyInterfaceMemberDeclaration(); $break ./ -/:$readableName InterfaceMemberDeclaration:/ - --- This rule is added to be able to parse non abstract method inside interface and then report a relevent error message -InvalidMethodDeclaration -> MethodHeader MethodBody -/:$readableName InvalidMethodDeclaration:/ - -InterfaceMemberDeclaration -> ConstantDeclaration -InterfaceMemberDeclaration ::= InvalidMethodDeclaration -/.$putCase ignoreMethodBody(); $break ./ -/:$readableName InterfaceMemberDeclaration:/ - --- These rules are added to be able to parse constructors inside interface and then report a relevent error message -InvalidConstructorDeclaration ::= ConstructorHeader MethodBody -/.$putCase ignoreInvalidConstructorDeclaration(true); $break ./ - -InvalidConstructorDeclaration ::= ConstructorHeader ';' -/.$putCase ignoreInvalidConstructorDeclaration(false); $break ./ -/:$readableName InvalidConstructorDeclaration:/ - -InterfaceMemberDeclaration -> AbstractMethodDeclaration -InterfaceMemberDeclaration -> InvalidConstructorDeclaration -/:$readableName InterfaceMemberDeclaration:/ - ---1.1 feature -InterfaceMemberDeclaration -> ClassDeclaration ---1.1 feature -InterfaceMemberDeclaration -> InterfaceDeclaration -/:$readableName InterfaceMemberDeclaration:/ - -ConstantDeclaration -> FieldDeclaration -/:$readableName ConstantDeclaration:/ - -ArrayInitializer ::= '{' ,opt '}' -/.$putCase consumeEmptyArrayInitializer(); $break ./ -ArrayInitializer ::= '{' VariableInitializers '}' -/.$putCase consumeArrayInitializer(); $break ./ -ArrayInitializer ::= '{' VariableInitializers , '}' -/.$putCase consumeArrayInitializer(); $break ./ -/:$readableName ArrayInitializer:/ - -VariableInitializers ::= VariableInitializer -VariableInitializers ::= VariableInitializers ',' VariableInitializer -/.$putCase consumeVariableInitializers(); $break ./ -/:$readableName VariableInitializers:/ - -Block ::= OpenBlock '{' BlockStatementsopt '}' -/.$putCase consumeBlock(); $break ./ -/:$readableName Block:/ - -OpenBlock ::= $empty -/.$putCase consumeOpenBlock() ; $break ./ -/:$readableName OpenBlock:/ - -BlockStatements -> BlockStatement -BlockStatements ::= BlockStatements BlockStatement -/.$putCase consumeBlockStatements() ; $break ./ -/:$readableName BlockStatements:/ - -BlockStatement -> LocalVariableDeclarationStatement -BlockStatement -> Statement ---1.1 feature -BlockStatement -> ClassDeclaration -BlockStatement ::= InvalidInterfaceDeclaration -/.$putCase ignoreInterfaceDeclaration(); $break ./ -/:$readableName BlockStatement:/ - -LocalVariableDeclarationStatement ::= LocalVariableDeclaration ';' -/.$putCase consumeLocalVariableDeclarationStatement(); $break ./ -/:$readableName LocalVariableDeclarationStatement:/ - -LocalVariableDeclaration ::= Type PushModifiers VariableDeclarators -/.$putCase consumeLocalVariableDeclaration(); $break ./ - --- 1.1 feature --- The modifiers part of this rule makes the grammar more permissive. --- The only modifier here is final. We put Modifiers to allow multiple modifiers --- This will require to check the validity of the modifier - -LocalVariableDeclaration ::= Modifiers Type PushModifiers VariableDeclarators -/.$putCase consumeLocalVariableDeclaration(); $break ./ -/:$readableName LocalVariableDeclaration:/ - -PushModifiers ::= $empty -/.$putCase consumePushModifiers(); $break ./ -/:$readableName PushModifiers:/ - -Statement -> StatementWithoutTrailingSubstatement -Statement -> LabeledStatement -Statement -> IfThenStatement -Statement -> IfThenElseStatement -Statement -> WhileStatement -Statement -> ForStatement -/:$readableName Statement:/ - -StatementNoShortIf -> StatementWithoutTrailingSubstatement -StatementNoShortIf -> LabeledStatementNoShortIf -StatementNoShortIf -> IfThenElseStatementNoShortIf -StatementNoShortIf -> WhileStatementNoShortIf -StatementNoShortIf -> ForStatementNoShortIf -/:$readableName Statement:/ - -StatementWithoutTrailingSubstatement -> AssertStatement -StatementWithoutTrailingSubstatement -> Block -StatementWithoutTrailingSubstatement -> EmptyStatement -StatementWithoutTrailingSubstatement -> ExpressionStatement -StatementWithoutTrailingSubstatement -> SwitchStatement -StatementWithoutTrailingSubstatement -> DoStatement -StatementWithoutTrailingSubstatement -> BreakStatement -StatementWithoutTrailingSubstatement -> ContinueStatement -StatementWithoutTrailingSubstatement -> ReturnStatement -StatementWithoutTrailingSubstatement -> SynchronizedStatement -StatementWithoutTrailingSubstatement -> ThrowStatement -StatementWithoutTrailingSubstatement -> TryStatement -/:$readableName Statement:/ - -EmptyStatement ::= ';' -/.$putCase consumeEmptyStatement(); $break ./ -/:$readableName EmptyStatement:/ - -LabeledStatement ::= 'Identifier' ':' Statement -/.$putCase consumeStatementLabel() ; $break ./ -/:$readableName LabeledStatement:/ - -LabeledStatementNoShortIf ::= 'Identifier' ':' StatementNoShortIf -/.$putCase consumeStatementLabel() ; $break ./ -/:$readableName LabeledStatement:/ - -ExpressionStatement ::= StatementExpression ';' -/. $putCase consumeExpressionStatement(); $break ./ -ExpressionStatement ::= ExplicitConstructorInvocation -/:$readableName Statement:/ - -StatementExpression ::= Assignment -StatementExpression ::= PreIncrementExpression -StatementExpression ::= PreDecrementExpression -StatementExpression ::= PostIncrementExpression -StatementExpression ::= PostDecrementExpression -StatementExpression ::= MethodInvocation -StatementExpression ::= ClassInstanceCreationExpression -/:$readableName Expression:/ - -IfThenStatement ::= 'if' '(' Expression ')' Statement -/.$putCase consumeStatementIfNoElse(); $break ./ -/:$readableName IfStatement:/ - -IfThenElseStatement ::= 'if' '(' Expression ')' StatementNoShortIf 'else' Statement -/.$putCase consumeStatementIfWithElse(); $break ./ -/:$readableName IfStatement:/ - -IfThenElseStatementNoShortIf ::= 'if' '(' Expression ')' StatementNoShortIf 'else' StatementNoShortIf -/.$putCase consumeStatementIfWithElse(); $break ./ -/:$readableName IfStatement:/ - -SwitchStatement ::= 'switch' '(' Expression ')' OpenBlock SwitchBlock -/.$putCase consumeStatementSwitch() ; $break ./ -/:$readableName SwitchStatement:/ - -SwitchBlock ::= '{' '}' -/.$putCase consumeEmptySwitchBlock() ; $break ./ - -SwitchBlock ::= '{' SwitchBlockStatements '}' -SwitchBlock ::= '{' SwitchLabels '}' -SwitchBlock ::= '{' SwitchBlockStatements SwitchLabels '}' -/.$putCase consumeSwitchBlock() ; $break ./ -/:$readableName SwitchBlock:/ - -SwitchBlockStatements -> SwitchBlockStatement -SwitchBlockStatements ::= SwitchBlockStatements SwitchBlockStatement -/.$putCase consumeSwitchBlockStatements() ; $break ./ -/:$readableName SwitchBlockStatements:/ - -SwitchBlockStatement ::= SwitchLabels BlockStatements -/.$putCase consumeSwitchBlockStatement() ; $break ./ -/:$readableName SwitchBlockStatement:/ - - -SwitchLabels -> SwitchLabel -SwitchLabels ::= SwitchLabels SwitchLabel -/.$putCase consumeSwitchLabels() ; $break ./ -/:$readableName SwitchLabels:/ - -SwitchLabel ::= 'case' ConstantExpression ':' -/. $putCase consumeCaseLabel(); $break ./ - -SwitchLabel ::= 'default' ':' -/. $putCase consumeDefaultLabel(); $break ./ -/:$readableName SwitchLabel:/ - -WhileStatement ::= 'while' '(' Expression ')' Statement -/.$putCase consumeStatementWhile() ; $break ./ -/:$readableName WhileStatement:/ - -WhileStatementNoShortIf ::= 'while' '(' Expression ')' StatementNoShortIf -/.$putCase consumeStatementWhile() ; $break ./ -/:$readableName WhileStatement:/ - -DoStatement ::= 'do' Statement 'while' '(' Expression ')' ';' -/.$putCase consumeStatementDo() ; $break ./ -/:$readableName DoStatement:/ - -ForStatement ::= 'for' '(' ForInitopt ';' Expressionopt ';' ForUpdateopt ')' Statement -/.$putCase consumeStatementFor() ; $break ./ -/:$readableName ForStatement:/ - -ForStatementNoShortIf ::= 'for' '(' ForInitopt ';' Expressionopt ';' ForUpdateopt ')' StatementNoShortIf -/.$putCase consumeStatementFor() ; $break ./ -/:$readableName ForStatement:/ - ---the minus one allows to avoid a stack-to-stack transfer -ForInit ::= StatementExpressionList -/.$putCase consumeForInit() ; $break ./ -ForInit -> LocalVariableDeclaration -/:$readableName ForInit:/ - -ForUpdate -> StatementExpressionList -/:$readableName ForUpdate:/ - -StatementExpressionList -> StatementExpression -StatementExpressionList ::= StatementExpressionList ',' StatementExpression -/.$putCase consumeStatementExpressionList() ; $break ./ -/:$readableName StatementExpressionList:/ - --- 1.4 feature -AssertStatement ::= 'assert' Expression ';' -/.$putCase consumeSimpleAssertStatement() ; $break ./ - -AssertStatement ::= 'assert' Expression ':' Expression ';' -/.$putCase consumeAssertStatement() ; $break ./ -/:$readableName AssertStatement:/ - -BreakStatement ::= 'break' ';' -/.$putCase consumeStatementBreak() ; $break ./ - -BreakStatement ::= 'break' Identifier ';' -/.$putCase consumeStatementBreakWithLabel() ; $break ./ -/:$readableName BreakStatement:/ - -ContinueStatement ::= 'continue' ';' -/.$putCase consumeStatementContinue() ; $break ./ - -ContinueStatement ::= 'continue' Identifier ';' -/.$putCase consumeStatementContinueWithLabel() ; $break ./ -/:$readableName ContinueStatement:/ - -ReturnStatement ::= 'return' Expressionopt ';' -/.$putCase consumeStatementReturn() ; $break ./ -/:$readableName ReturnStatement:/ - -ThrowStatement ::= 'throw' Expression ';' -/.$putCase consumeStatementThrow(); -$break ./ -/:$readableName ThrowStatement:/ - -SynchronizedStatement ::= OnlySynchronized '(' Expression ')' Block -/.$putCase consumeStatementSynchronized(); $break ./ -/:$readableName SynchronizedStatement:/ - -OnlySynchronized ::= 'synchronized' -/.$putCase consumeOnlySynchronized(); $break ./ -/:$readableName OnlySynchronized:/ - -TryStatement ::= 'try' TryBlock Catches -/.$putCase consumeStatementTry(false); $break ./ -TryStatement ::= 'try' TryBlock Catchesopt Finally -/.$putCase consumeStatementTry(true); $break ./ -/:$readableName TryStatement:/ - -TryBlock ::= Block ExitTryBlock -/:$readableName Block:/ - -ExitTryBlock ::= $empty -/.$putCase consumeExitTryBlock(); $break ./ -/:$readableName ExitTryBlock:/ - -Catches -> CatchClause -Catches ::= Catches CatchClause -/.$putCase consumeCatches(); $break ./ -/:$readableName Catches:/ - -CatchClause ::= 'catch' '(' FormalParameter ')' Block -/.$putCase consumeStatementCatch() ; $break ./ -/:$readableName CatchClause:/ - -Finally ::= 'finally' Block -/:$readableName Finally:/ - ---18.12 Productions from 14: Expressions - ---for source positionning purpose -PushLPAREN ::= '(' -/.$putCase consumeLeftParen(); $break ./ -/:$readableName (:/ -PushRPAREN ::= ')' -/.$putCase consumeRightParen(); $break ./ -/:$readableName ):/ - -Primary -> PrimaryNoNewArray -Primary -> ArrayCreationWithArrayInitializer -Primary -> ArrayCreationWithoutArrayInitializer -/:$readableName Expression:/ - -PrimaryNoNewArray -> Literal -PrimaryNoNewArray ::= 'this' -/.$putCase consumePrimaryNoNewArrayThis(); $break ./ - -PrimaryNoNewArray ::= PushLPAREN Expression PushRPAREN -/.$putCase consumePrimaryNoNewArray(); $break ./ - -PrimaryNoNewArray -> ClassInstanceCreationExpression -PrimaryNoNewArray -> FieldAccess ---1.1 feature -PrimaryNoNewArray ::= Name '.' 'this' -/.$putCase consumePrimaryNoNewArrayNameThis(); $break ./ -PrimaryNoNewArray ::= Name '.' 'super' -/.$putCase consumePrimaryNoNewArrayNameSuper(); $break ./ - ---1.1 feature ---PrimaryNoNewArray ::= Type '.' 'class' ---inline Type in the previous rule in order to make the grammar LL1 instead --- of LL2. The result is the 3 next rules. -PrimaryNoNewArray ::= Name '.' 'class' -/.$putCase consumePrimaryNoNewArrayName(); $break ./ - -PrimaryNoNewArray ::= ArrayType '.' 'class' -/.$putCase consumePrimaryNoNewArrayArrayType(); $break ./ - -PrimaryNoNewArray ::= PrimitiveType '.' 'class' -/.$putCase consumePrimaryNoNewArrayPrimitiveType(); $break ./ - -PrimaryNoNewArray -> MethodInvocation -PrimaryNoNewArray -> ArrayAccess -/:$readableName Expression:/ ---1.1 feature --- --- In Java 1.0 a ClassBody could not appear at all in a --- ClassInstanceCreationExpression. --- - -AllocationHeader ::= 'new' ClassType '(' ArgumentListopt ')' -/.$putCase consumeAllocationHeader(); $break ./ -/:$readableName AllocationHeader:/ - -ClassInstanceCreationExpression ::= 'new' ClassType '(' ArgumentListopt ')' ClassBodyopt -/.$putCase consumeClassInstanceCreationExpression(); $break ./ ---1.1 feature - -ClassInstanceCreationExpression ::= Primary '.' 'new' SimpleName '(' ArgumentListopt ')' ClassBodyopt -/.$putCase consumeClassInstanceCreationExpressionQualified() ; $break ./ - ---1.1 feature -ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 'new' SimpleName '(' ArgumentListopt ')' ClassBodyopt -/.$putCase consumeClassInstanceCreationExpressionQualified() ; $break ./ -/:$readableName ClassInstanceCreationExpression:/ - -ClassInstanceCreationExpressionName ::= Name '.' -/.$putCase consumeClassInstanceCreationExpressionName() ; $break ./ -/:$readableName ClassInstanceCreationExpressionName:/ - -ClassBodyopt ::= $empty --test made using null as contents -/.$putCase consumeClassBodyopt(); $break ./ -ClassBodyopt ::= EnterAnonymousClassBody ClassBody -/:$readableName ClassBody:/ - -EnterAnonymousClassBody ::= $empty -/.$putCase consumeEnterAnonymousClassBody(); $break ./ -/:$readableName EnterAnonymousClassBody:/ - -ArgumentList ::= Expression -ArgumentList ::= ArgumentList ',' Expression -/.$putCase consumeArgumentList(); $break ./ -/:$readableName ArgumentList:/ - -ArrayCreationHeader ::= 'new' PrimitiveType DimWithOrWithOutExprs -/.$putCase consumeArrayCreationHeader(); $break ./ - -ArrayCreationHeader ::= 'new' ClassOrInterfaceType DimWithOrWithOutExprs -/.$putCase consumeArrayCreationHeader(); $break ./ -/:$readableName ArrayCreationHeader:/ - -ArrayCreationWithoutArrayInitializer ::= 'new' PrimitiveType DimWithOrWithOutExprs -/.$putCase consumeArrayCreationExpressionWithoutInitializer(); $break ./ -/:$readableName ArrayCreationWithoutArrayInitializer:/ - -ArrayCreationWithArrayInitializer ::= 'new' PrimitiveType DimWithOrWithOutExprs ArrayInitializer -/.$putCase consumeArrayCreationExpressionWithInitializer(); $break ./ -/:$readableName ArrayCreationWithArrayInitializer:/ - -ArrayCreationWithoutArrayInitializer ::= 'new' ClassOrInterfaceType DimWithOrWithOutExprs -/.$putCase consumeArrayCreationExpressionWithoutInitializer(); $break ./ - -ArrayCreationWithArrayInitializer ::= 'new' ClassOrInterfaceType DimWithOrWithOutExprs ArrayInitializer -/.$putCase consumeArrayCreationExpressionWithInitializer(); $break ./ - -DimWithOrWithOutExprs ::= DimWithOrWithOutExpr -DimWithOrWithOutExprs ::= DimWithOrWithOutExprs DimWithOrWithOutExpr -/.$putCase consumeDimWithOrWithOutExprs(); $break ./ -/:$readableName Dimensions:/ - -DimWithOrWithOutExpr ::= '[' Expression ']' -DimWithOrWithOutExpr ::= '[' ']' -/. $putCase consumeDimWithOrWithOutExpr(); $break ./ -/:$readableName Dimension:/ --- ----------------------------------------------- - -Dims ::= DimsLoop -/. $putCase consumeDims(); $break ./ -/:$readableName Dimensions:/ -DimsLoop -> OneDimLoop -DimsLoop ::= DimsLoop OneDimLoop -/:$readableName Dimensions:/ -OneDimLoop ::= '[' ']' -/. $putCase consumeOneDimLoop(); $break ./ -/:$readableName Dimension:/ - -FieldAccess ::= Primary '.' 'Identifier' -/.$putCase consumeFieldAccess(false); $break ./ - -FieldAccess ::= 'super' '.' 'Identifier' -/.$putCase consumeFieldAccess(true); $break ./ -/:$readableName FieldAccess:/ - -MethodInvocation ::= Name '(' ArgumentListopt ')' -/.$putCase consumeMethodInvocationName(); $break ./ - -MethodInvocation ::= Primary '.' 'Identifier' '(' ArgumentListopt ')' -/.$putCase consumeMethodInvocationPrimary(); $break ./ - -MethodInvocation ::= 'super' '.' 'Identifier' '(' ArgumentListopt ')' -/.$putCase consumeMethodInvocationSuper(); $break ./ -/:$readableName MethodInvocation:/ - -ArrayAccess ::= Name '[' Expression ']' -/.$putCase consumeArrayAccess(true); $break ./ -ArrayAccess ::= PrimaryNoNewArray '[' Expression ']' -/.$putCase consumeArrayAccess(false); $break ./ -ArrayAccess ::= ArrayCreationWithArrayInitializer '[' Expression ']' -/.$putCase consumeArrayAccess(false); $break ./ -/:$readableName ArrayAccess:/ - -PostfixExpression -> Primary -PostfixExpression ::= Name -/.$putCase consumePostfixExpression(); $break ./ -PostfixExpression -> PostIncrementExpression -PostfixExpression -> PostDecrementExpression -/:$readableName Expression:/ - -PostIncrementExpression ::= PostfixExpression '++' -/.$putCase consumeUnaryExpression(OperatorIds.PLUS,true); $break ./ -/:$readableName PostIncrementExpression:/ - -PostDecrementExpression ::= PostfixExpression '--' -/.$putCase consumeUnaryExpression(OperatorIds.MINUS,true); $break ./ -/:$readableName PostDecrementExpression:/ - ---for source managment purpose -PushPosition ::= $empty - /.$putCase consumePushPosition(); $break ./ -/:$readableName PushPosition:/ - -UnaryExpression -> PreIncrementExpression -UnaryExpression -> PreDecrementExpression -UnaryExpression ::= '+' PushPosition UnaryExpression -/.$putCase consumeUnaryExpression(OperatorIds.PLUS); $break ./ -UnaryExpression ::= '-' PushPosition UnaryExpression -/.$putCase consumeUnaryExpression(OperatorIds.MINUS); $break ./ -UnaryExpression -> UnaryExpressionNotPlusMinus -/:$readableName Expression:/ - -PreIncrementExpression ::= '++' PushPosition UnaryExpression -/.$putCase consumeUnaryExpression(OperatorIds.PLUS,false); $break ./ -/:$readableName PreIncrementExpression:/ - -PreDecrementExpression ::= '--' PushPosition UnaryExpression -/.$putCase consumeUnaryExpression(OperatorIds.MINUS,false); $break ./ -/:$readableName PreDecrementExpression:/ - -UnaryExpressionNotPlusMinus -> PostfixExpression -UnaryExpressionNotPlusMinus ::= '~' PushPosition UnaryExpression -/.$putCase consumeUnaryExpression(OperatorIds.TWIDDLE); $break ./ -UnaryExpressionNotPlusMinus ::= '!' PushPosition UnaryExpression -/.$putCase consumeUnaryExpression(OperatorIds.NOT); $break ./ -UnaryExpressionNotPlusMinus -> CastExpression -/:$readableName Expression:/ - -CastExpression ::= PushLPAREN PrimitiveType Dimsopt PushRPAREN InsideCastExpression UnaryExpression -/.$putCase consumeCastExpression(); $break ./ - CastExpression ::= PushLPAREN Name Dims PushRPAREN InsideCastExpression UnaryExpressionNotPlusMinus -/.$putCase consumeCastExpression(); $break ./ --- Expression is here only in order to make the grammar LL1 -CastExpression ::= PushLPAREN Expression PushRPAREN InsideCastExpressionLL1 UnaryExpressionNotPlusMinus -/.$putCase consumeCastExpressionLL1(); $break ./ -/:$readableName CastExpression:/ - -InsideCastExpression ::= $empty -/.$putCase consumeInsideCastExpression(); $break ./ -/:$readableName InsideCastExpression:/ -InsideCastExpressionLL1 ::= $empty -/.$putCase consumeInsideCastExpressionLL1(); $break ./ -/:$readableName InsideCastExpression:/ - -MultiplicativeExpression -> UnaryExpression -MultiplicativeExpression ::= MultiplicativeExpression '*' UnaryExpression -/.$putCase consumeBinaryExpression(OperatorIds.MULTIPLY); $break ./ -MultiplicativeExpression ::= MultiplicativeExpression '/' UnaryExpression -/.$putCase consumeBinaryExpression(OperatorIds.DIVIDE); $break ./ -MultiplicativeExpression ::= MultiplicativeExpression '%' UnaryExpression -/.$putCase consumeBinaryExpression(OperatorIds.REMAINDER); $break ./ -/:$readableName Expression:/ - -AdditiveExpression -> MultiplicativeExpression -AdditiveExpression ::= AdditiveExpression '+' MultiplicativeExpression -/.$putCase consumeBinaryExpression(OperatorIds.PLUS); $break ./ -AdditiveExpression ::= AdditiveExpression '-' MultiplicativeExpression -/.$putCase consumeBinaryExpression(OperatorIds.MINUS); $break ./ -/:$readableName Expression:/ - -ShiftExpression -> AdditiveExpression -ShiftExpression ::= ShiftExpression '<<' AdditiveExpression -/.$putCase consumeBinaryExpression(OperatorIds.LEFT_SHIFT); $break ./ -ShiftExpression ::= ShiftExpression '>>' AdditiveExpression -/.$putCase consumeBinaryExpression(OperatorIds.RIGHT_SHIFT); $break ./ -ShiftExpression ::= ShiftExpression '>>>' AdditiveExpression -/.$putCase consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT); $break ./ -/:$readableName Expression:/ - -RelationalExpression -> ShiftExpression -RelationalExpression ::= RelationalExpression '<' ShiftExpression -/.$putCase consumeBinaryExpression(OperatorIds.LESS); $break ./ -RelationalExpression ::= RelationalExpression '>' ShiftExpression -/.$putCase consumeBinaryExpression(OperatorIds.GREATER); $break ./ -RelationalExpression ::= RelationalExpression '<=' ShiftExpression -/.$putCase consumeBinaryExpression(OperatorIds.LESS_EQUAL); $break ./ -RelationalExpression ::= RelationalExpression '>=' ShiftExpression -/.$putCase consumeBinaryExpression(OperatorIds.GREATER_EQUAL); $break ./ -RelationalExpression ::= RelationalExpression 'instanceof' ReferenceType -/.$putCase consumeInstanceOfExpression(OperatorIds.INSTANCEOF); $break ./ -/:$readableName Expression:/ - -EqualityExpression -> RelationalExpression -EqualityExpression ::= EqualityExpression '==' RelationalExpression -/.$putCase consumeEqualityExpression(OperatorIds.EQUAL_EQUAL); $break ./ -EqualityExpression ::= EqualityExpression '!=' RelationalExpression -/.$putCase consumeEqualityExpression(OperatorIds.NOT_EQUAL); $break ./ -/:$readableName Expression:/ - -AndExpression -> EqualityExpression -AndExpression ::= AndExpression '&' EqualityExpression -/.$putCase consumeBinaryExpression(OperatorIds.AND); $break ./ -/:$readableName Expression:/ - -ExclusiveOrExpression -> AndExpression -ExclusiveOrExpression ::= ExclusiveOrExpression '^' AndExpression -/.$putCase consumeBinaryExpression(OperatorIds.XOR); $break ./ -/:$readableName Expression:/ - -InclusiveOrExpression -> ExclusiveOrExpression -InclusiveOrExpression ::= InclusiveOrExpression '|' ExclusiveOrExpression -/.$putCase consumeBinaryExpression(OperatorIds.OR); $break ./ -/:$readableName Expression:/ - -ConditionalAndExpression -> InclusiveOrExpression -ConditionalAndExpression ::= ConditionalAndExpression '&&' InclusiveOrExpression -/.$putCase consumeBinaryExpression(OperatorIds.AND_AND); $break ./ -/:$readableName Expression:/ - -ConditionalOrExpression -> ConditionalAndExpression -ConditionalOrExpression ::= ConditionalOrExpression '||' ConditionalAndExpression -/.$putCase consumeBinaryExpression(OperatorIds.OR_OR); $break ./ -/:$readableName Expression:/ - -ConditionalExpression -> ConditionalOrExpression -ConditionalExpression ::= ConditionalOrExpression '?' Expression ':' ConditionalExpression -/.$putCase consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ; $break ./ -/:$readableName Expression:/ - -AssignmentExpression -> ConditionalExpression -AssignmentExpression -> Assignment -/:$readableName Expression:/ - -Assignment ::= PostfixExpression AssignmentOperator AssignmentExpression -/.$putCase consumeAssignment(); $break ./ -/:$readableName Assignment:/ - --- this rule is added to parse an array initializer in a assigment and then report a syntax error knowing the exact senario -InvalidArrayInitializerAssignement ::= PostfixExpression AssignmentOperator ArrayInitializer -/:$readableName ArrayInitializerAssignement:/ -Assignment ::= InvalidArrayInitializerAssignement -/.$putcase ignoreExpressionAssignment();$break ./ - -AssignmentOperator ::= '=' -/.$putCase consumeAssignmentOperator(EQUAL); $break ./ -AssignmentOperator ::= '*=' -/.$putCase consumeAssignmentOperator(MULTIPLY); $break ./ -AssignmentOperator ::= '/=' -/.$putCase consumeAssignmentOperator(DIVIDE); $break ./ -AssignmentOperator ::= '%=' -/.$putCase consumeAssignmentOperator(REMAINDER); $break ./ -AssignmentOperator ::= '+=' -/.$putCase consumeAssignmentOperator(PLUS); $break ./ -AssignmentOperator ::= '-=' -/.$putCase consumeAssignmentOperator(MINUS); $break ./ -AssignmentOperator ::= '<<=' -/.$putCase consumeAssignmentOperator(LEFT_SHIFT); $break ./ -AssignmentOperator ::= '>>=' -/.$putCase consumeAssignmentOperator(RIGHT_SHIFT); $break ./ -AssignmentOperator ::= '>>>=' -/.$putCase consumeAssignmentOperator(UNSIGNED_RIGHT_SHIFT); $break ./ -AssignmentOperator ::= '&=' -/.$putCase consumeAssignmentOperator(AND); $break ./ -AssignmentOperator ::= '^=' -/.$putCase consumeAssignmentOperator(XOR); $break ./ -AssignmentOperator ::= '|=' -/.$putCase consumeAssignmentOperator(OR); $break ./ -/:$readableName AssignmentOperator:/ - -Expression -> AssignmentExpression -/:$readableName Expression:/ - -ConstantExpression -> Expression -/:$readableName ConstantExpression:/ - --- The following rules are for optional nonterminals. --- - -PackageDeclarationopt -> $empty -PackageDeclarationopt -> PackageDeclaration -/:$readableName PackageDeclaration:/ - -ClassHeaderExtendsopt ::= $empty -ClassHeaderExtendsopt -> ClassHeaderExtends -/:$readableName ClassHeaderExtends:/ - -Expressionopt ::= $empty -/.$putCase consumeEmptyExpression(); $break ./ -Expressionopt -> Expression -/:$readableName Expression:/ - - ---------------------------------------------------------------------------------------- --- --- The rules below are for optional terminal symbols. An optional comma, --- is only used in the context of an array initializer - It is a --- "syntactic sugar" that otherwise serves no other purpose. By contrast, --- an optional identifier is used in the definition of a break and --- continue statement. When the identifier does not appear, a NULL --- is produced. When the identifier is present, the user should use the --- corresponding TOKEN(i) method. See break statement as an example. --- ---------------------------------------------------------------------------------------- - -,opt -> $empty -,opt -> , -/:$readableName ,:/ - -ImportDeclarationsopt ::= $empty -/.$putCase consumeEmptyImportDeclarationsopt(); $break ./ -ImportDeclarationsopt ::= ImportDeclarations -/.$putCase consumeImportDeclarationsopt(); $break ./ -/:$readableName ImportDeclarations:/ - -TypeDeclarationsopt ::= $empty -/.$putCase consumeEmptyTypeDeclarationsopt(); $break ./ -TypeDeclarationsopt ::= TypeDeclarations -/.$putCase consumeTypeDeclarationsopt(); $break ./ -/:$readableName TypeDeclarations:/ - -ClassBodyDeclarationsopt ::= $empty -/.$putCase consumeEmptyClassBodyDeclarationsopt(); $break ./ -ClassBodyDeclarationsopt ::= NestedType ClassBodyDeclarations -/.$putCase consumeClassBodyDeclarationsopt(); $break ./ -/:$readableName ClassBodyDeclarations:/ - -Modifiersopt ::= $empty -/. $putCase consumeDefaultModifiers(); $break ./ -Modifiersopt ::= Modifiers -/.$putCase consumeModifiers(); $break ./ -/:$readableName Modifiers:/ - -BlockStatementsopt ::= $empty -/.$putCase consumeEmptyBlockStatementsopt(); $break ./ -BlockStatementsopt -> BlockStatements -/:$readableName BlockStatements:/ - -Dimsopt ::= $empty -/. $putCase consumeEmptyDimsopt(); $break ./ -Dimsopt -> Dims -/:$readableName Dimensions:/ - -ArgumentListopt ::= $empty -/. $putCase consumeEmptyArgumentListopt(); $break ./ -ArgumentListopt -> ArgumentList -/:$readableName ArgumentList:/ - -MethodHeaderThrowsClauseopt ::= $empty -MethodHeaderThrowsClauseopt -> MethodHeaderThrowsClause -/:$readableName MethodHeaderThrowsClause:/ - -FormalParameterListopt ::= $empty -/.$putcase consumeFormalParameterListopt(); $break ./ -FormalParameterListopt -> FormalParameterList -/:$readableName FormalParameterList:/ - -ClassHeaderImplementsopt ::= $empty -ClassHeaderImplementsopt -> ClassHeaderImplements -/:$readableName ClassHeaderImplements:/ - -InterfaceMemberDeclarationsopt ::= $empty -/. $putCase consumeEmptyInterfaceMemberDeclarationsopt(); $break ./ -InterfaceMemberDeclarationsopt ::= NestedType InterfaceMemberDeclarations -/. $putCase consumeInterfaceMemberDeclarationsopt(); $break ./ -/:$readableName InterfaceMemberDeclarations:/ - -NestedType ::= $empty -/.$putCase consumeNestedType(); $break./ -/:$readableName NestedType:/ - -ForInitopt ::= $empty -/. $putCase consumeEmptyForInitopt(); $break ./ -ForInitopt -> ForInit -/:$readableName ForInit:/ - -ForUpdateopt ::= $empty -/. $putCase consumeEmptyForUpdateopt(); $break ./ -ForUpdateopt -> ForUpdate -/:$readableName ForUpdate:/ - -InterfaceHeaderExtendsopt ::= $empty -InterfaceHeaderExtendsopt -> InterfaceHeaderExtends -/:$readableName InterfaceHeaderExtends:/ - -Catchesopt ::= $empty -/. $putCase consumeEmptyCatchesopt(); $break ./ -Catchesopt -> Catches -/:$readableName Catches:/ - -/. } -} ./ - ---------------------------------------------------------------------------------------- - -$names - --- BodyMarker ::= '"class Identifier { ... MethodHeader "' - --- void ::= 'void' - -PLUS_PLUS ::= '++' -MINUS_MINUS ::= '--' -EQUAL_EQUAL ::= '==' -LESS_EQUAL ::= '<=' -GREATER_EQUAL ::= '>=' -NOT_EQUAL ::= '!=' -LEFT_SHIFT ::= '<<' -RIGHT_SHIFT ::= '>>' -UNSIGNED_RIGHT_SHIFT ::= '>>>' -PLUS_EQUAL ::= '+=' -MINUS_EQUAL ::= '-=' -MULTIPLY_EQUAL ::= '*=' -DIVIDE_EQUAL ::= '/=' -AND_EQUAL ::= '&=' -OR_EQUAL ::= '|=' -XOR_EQUAL ::= '^=' -REMAINDER_EQUAL ::= '%=' -LEFT_SHIFT_EQUAL ::= '<<=' -RIGHT_SHIFT_EQUAL ::= '>>=' -UNSIGNED_RIGHT_SHIFT_EQUAL ::= '>>>=' -OR_OR ::= '||' -AND_AND ::= '&&' - -PLUS ::= '+' -MINUS ::= '-' -NOT ::= '!' -REMAINDER ::= '%' -XOR ::= '^' -AND ::= '&' -MULTIPLY ::= '*' -OR ::= '|' -TWIDDLE ::= '~' -DIVIDE ::= '/' -GREATER ::= '>' -LESS ::= '<' -LPAREN ::= '(' -RPAREN ::= ')' -LBRACE ::= '{' -RBRACE ::= '}' -LBRACKET ::= '[' -RBRACKET ::= ']' -SEMICOLON ::= ';' -QUESTION ::= '?' -COLON ::= ':' -COMMA ::= ',' -DOT ::= '.' -EQUAL ::= '=' - -$end --- need a carriage return after the $end diff --git a/org.eclipse.jdt.core/grammar/java_1_5.g b/org.eclipse.jdt.core/grammar/java_1_5.g deleted file mode 100644 index d2b58f23e..000000000 --- a/org.eclipse.jdt.core/grammar/java_1_5.g +++ /dev/null @@ -1,2326 +0,0 @@ ---main options -%options ACTION, AN=JavaAction.java, GP=java, -%options FILE-PREFIX=java, ESCAPE=$, PREFIX=TokenName, OUTPUT-SIZE=125 , -%options NOGOTO-DEFAULT, SINGLE-PRODUCTIONS, LALR=1 , TABLE, - ---error recovering options..... -%options ERROR_MAPS - ---grammar understanding options -%options first follow -%options TRACE=FULL , -%options VERBOSE - -%options DEFERRED -%options NAMES=MAX -%options SCOPES - ---Usefull macros helping reading/writing semantic actions -$Define -$putCase -/. case $rule_number : if (DEBUG) { System.out.println("$rule_text"); } //$NON-NLS-1$ - ./ - -$break -/. - break; -./ - - -$readableName -/.1#$rule_number#./ -$compliance -/.2#$rule_number#./ -$recovery -/.2#$rule_number# recovery./ -$recovery_template -/.3#$rule_number#./ -$no_statements_recovery -/.4#$rule_number# 1./ --- here it starts really ------------------------------------------ -$Terminals - - Identifier - - abstract assert boolean break byte case catch char class - continue const default do double else enum extends false final finally float - for goto if implements import instanceof int - interface long native new null package private - protected public return short static strictfp super switch - synchronized this throw throws transient true try void - volatile while - - IntegerLiteral - LongLiteral - FloatingPointLiteral - DoubleLiteral - CharacterLiteral - StringLiteral - - PLUS_PLUS - MINUS_MINUS - EQUAL_EQUAL - LESS_EQUAL - GREATER_EQUAL - NOT_EQUAL - LEFT_SHIFT - RIGHT_SHIFT - UNSIGNED_RIGHT_SHIFT - PLUS_EQUAL - MINUS_EQUAL - MULTIPLY_EQUAL - DIVIDE_EQUAL - AND_EQUAL - OR_EQUAL - XOR_EQUAL - REMAINDER_EQUAL - LEFT_SHIFT_EQUAL - RIGHT_SHIFT_EQUAL - UNSIGNED_RIGHT_SHIFT_EQUAL - OR_OR - AND_AND - PLUS - MINUS - NOT - REMAINDER - XOR - AND - MULTIPLY - OR - TWIDDLE - DIVIDE - GREATER - LESS - LPAREN - RPAREN - LBRACE - RBRACE - LBRACKET - RBRACKET - SEMICOLON - QUESTION - COLON - COMMA - DOT - EQUAL - AT - ELLIPSIS - --- BodyMarker - -$Alias - - '++' ::= PLUS_PLUS - '--' ::= MINUS_MINUS - '==' ::= EQUAL_EQUAL - '<=' ::= LESS_EQUAL - '>=' ::= GREATER_EQUAL - '!=' ::= NOT_EQUAL - '<<' ::= LEFT_SHIFT - '>>' ::= RIGHT_SHIFT - '>>>' ::= UNSIGNED_RIGHT_SHIFT - '+=' ::= PLUS_EQUAL - '-=' ::= MINUS_EQUAL - '*=' ::= MULTIPLY_EQUAL - '/=' ::= DIVIDE_EQUAL - '&=' ::= AND_EQUAL - '|=' ::= OR_EQUAL - '^=' ::= XOR_EQUAL - '%=' ::= REMAINDER_EQUAL - '<<=' ::= LEFT_SHIFT_EQUAL - '>>=' ::= RIGHT_SHIFT_EQUAL - '>>>=' ::= UNSIGNED_RIGHT_SHIFT_EQUAL - '||' ::= OR_OR - '&&' ::= AND_AND - '+' ::= PLUS - '-' ::= MINUS - '!' ::= NOT - '%' ::= REMAINDER - '^' ::= XOR - '&' ::= AND - '*' ::= MULTIPLY - '|' ::= OR - '~' ::= TWIDDLE - '/' ::= DIVIDE - '>' ::= GREATER - '<' ::= LESS - '(' ::= LPAREN - ')' ::= RPAREN - '{' ::= LBRACE - '}' ::= RBRACE - '[' ::= LBRACKET - ']' ::= RBRACKET - ';' ::= SEMICOLON - '?' ::= QUESTION - ':' ::= COLON - ',' ::= COMMA - '.' ::= DOT - '=' ::= EQUAL - '@' ::= AT - '...' ::= ELLIPSIS - -$Start - Goal - -$Rules - -/.// This method is part of an automatic generation : do NOT edit-modify -protected void consumeRule(int act) { - switch ( act ) { -./ - - - -Goal ::= '++' CompilationUnit -Goal ::= '--' MethodBody --- Initializer -Goal ::= '>>' StaticInitializer -Goal ::= '>>' Initializer --- error recovery --- Modifiersopt is used to properly consume a header and exit the rule reduction at the end of the parse() method -Goal ::= '>>>' Header1 Modifiersopt -Goal ::= '!' Header2 Modifiersopt -Goal ::= '*' BlockStatements -Goal ::= '*' CatchHeader --- JDOM -Goal ::= '&&' FieldDeclaration -Goal ::= '||' ImportDeclaration -Goal ::= '?' PackageDeclaration -Goal ::= '+' TypeDeclaration -Goal ::= '/' GenericMethodDeclaration -Goal ::= '&' ClassBodyDeclarations --- code snippet -Goal ::= '%' Expression -Goal ::= '%' ArrayInitializer --- completion parser -Goal ::= '~' BlockStatementsopt --- source type converter -Goal ::= '||' MemberValue --- syntax diagnosis -Goal ::= '?' AnnotationTypeMemberDeclaration -/:$readableName Goal:/ - -Literal -> IntegerLiteral -Literal -> LongLiteral -Literal -> FloatingPointLiteral -Literal -> DoubleLiteral -Literal -> CharacterLiteral -Literal -> StringLiteral -Literal -> null -Literal -> BooleanLiteral -/:$readableName Literal:/ -BooleanLiteral -> true -BooleanLiteral -> false -/:$readableName BooleanLiteral:/ - -Type ::= PrimitiveType -/.$putCase consumePrimitiveType(); $break ./ -Type -> ReferenceType -/:$readableName Type:/ - -PrimitiveType -> NumericType -/:$readableName PrimitiveType:/ -NumericType -> IntegralType -NumericType -> FloatingPointType -/:$readableName NumericType:/ - -PrimitiveType -> 'boolean' -PrimitiveType -> 'void' -IntegralType -> 'byte' -IntegralType -> 'short' -IntegralType -> 'int' -IntegralType -> 'long' -IntegralType -> 'char' -/:$readableName IntegralType:/ -FloatingPointType -> 'float' -FloatingPointType -> 'double' -/:$readableName FloatingPointType:/ - -ReferenceType ::= ClassOrInterfaceType -/.$putCase consumeReferenceType(); $break ./ -ReferenceType -> ArrayType -/:$readableName ReferenceType:/ - ---------------------------------------------------------------- --- 1.5 feature ---------------------------------------------------------------- -ClassOrInterfaceType -> ClassOrInterface -ClassOrInterfaceType -> GenericType -/:$readableName Type:/ - -ClassOrInterface ::= Name -/.$putCase consumeClassOrInterfaceName(); $break ./ -ClassOrInterface ::= GenericType '.' Name -/.$putCase consumeClassOrInterface(); $break ./ -/:$readableName Type:/ - -GenericType ::= ClassOrInterface TypeArguments -/.$putCase consumeGenericType(); $break ./ -/:$readableName GenericType:/ - --- --- These rules have been rewritten to avoid some conflicts introduced --- by adding the 1.1 features --- --- ArrayType ::= PrimitiveType '[' ']' --- ArrayType ::= Name '[' ']' --- ArrayType ::= ArrayType '[' ']' --- - -ArrayTypeWithTypeArgumentsName ::= GenericType '.' Name -/.$putCase consumeArrayTypeWithTypeArgumentsName(); $break ./ -/:$readableName ArrayTypeWithTypeArgumentsName:/ - -ArrayType ::= PrimitiveType Dims -/.$putCase consumePrimitiveArrayType(); $break ./ -ArrayType ::= Name Dims -/.$putCase consumeNameArrayType(); $break ./ -ArrayType ::= ArrayTypeWithTypeArgumentsName Dims -/.$putCase consumeGenericTypeNameArrayType(); $break ./ -ArrayType ::= GenericType Dims -/.$putCase consumeGenericTypeArrayType(); $break ./ -/:$readableName ArrayType:/ - -ClassType -> ClassOrInterfaceType -/:$readableName ClassType:/ - --------------------------------------------------------------- --------------------------------------------------------------- - -Name -> SimpleName -Name -> QualifiedName -/:$readableName Name:/ -/:$recovery_template Identifier:/ - -SimpleName -> 'Identifier' -/:$readableName SimpleName:/ - -QualifiedName ::= Name '.' SimpleName -/.$putCase consumeQualifiedName(); $break ./ -/:$readableName QualifiedName:/ - -CompilationUnit ::= EnterCompilationUnit InternalCompilationUnit -/.$putCase consumeCompilationUnit(); $break ./ -/:$readableName CompilationUnit:/ - -InternalCompilationUnit ::= PackageDeclaration -/.$putCase consumeInternalCompilationUnit(); $break ./ -InternalCompilationUnit ::= PackageDeclaration ImportDeclarations ReduceImports -/.$putCase consumeInternalCompilationUnit(); $break ./ -InternalCompilationUnit ::= PackageDeclaration ImportDeclarations ReduceImports TypeDeclarations -/.$putCase consumeInternalCompilationUnitWithTypes(); $break ./ -InternalCompilationUnit ::= PackageDeclaration TypeDeclarations -/.$putCase consumeInternalCompilationUnitWithTypes(); $break ./ -InternalCompilationUnit ::= ImportDeclarations ReduceImports -/.$putCase consumeInternalCompilationUnit(); $break ./ -InternalCompilationUnit ::= TypeDeclarations -/.$putCase consumeInternalCompilationUnitWithTypes(); $break ./ -InternalCompilationUnit ::= ImportDeclarations ReduceImports TypeDeclarations -/.$putCase consumeInternalCompilationUnitWithTypes(); $break ./ -InternalCompilationUnit ::= $empty -/.$putCase consumeEmptyInternalCompilationUnit(); $break ./ -/:$readableName CompilationUnit:/ - - - - -ReduceImports ::= $empty -/.$putCase consumeReduceImports(); $break ./ -/:$readableName ReduceImports:/ - -EnterCompilationUnit ::= $empty -/.$putCase consumeEnterCompilationUnit(); $break ./ -/:$readableName EnterCompilationUnit:/ - -Header -> ImportDeclaration -Header -> PackageDeclaration -Header -> ClassHeader -Header -> InterfaceHeader -Header -> EnumHeader -Header -> AnnotationTypeDeclarationHeader -Header -> StaticInitializer -Header -> RecoveryMethodHeader -Header -> FieldDeclaration -Header -> AllocationHeader -Header -> ArrayCreationHeader -/:$readableName Header:/ - -Header1 -> Header -Header1 -> ConstructorHeader -/:$readableName Header1:/ - -Header2 -> Header -Header2 -> EnumConstantHeader -/:$readableName Header2:/ - -CatchHeader ::= 'catch' '(' FormalParameter ')' '{' -/.$putCase consumeCatchHeader(); $break ./ -/:$readableName CatchHeader:/ - -ImportDeclarations -> ImportDeclaration -ImportDeclarations ::= ImportDeclarations ImportDeclaration -/.$putCase consumeImportDeclarations(); $break ./ -/:$readableName ImportDeclarations:/ - -TypeDeclarations -> TypeDeclaration -TypeDeclarations ::= TypeDeclarations TypeDeclaration -/.$putCase consumeTypeDeclarations(); $break ./ -/:$readableName TypeDeclarations:/ - -PackageDeclaration ::= PackageDeclarationName ';' -/.$putCase consumePackageDeclaration(); $break ./ -/:$readableName PackageDeclaration:/ - -PackageDeclarationName ::= Modifiers 'package' PushRealModifiers Name -/.$putCase consumePackageDeclarationNameWithModifiers(); $break ./ -/:$readableName PackageDeclarationName:/ -/:$compliance 1.5:/ - -PackageDeclarationName ::= PackageComment 'package' Name -/.$putCase consumePackageDeclarationName(); $break ./ -/:$readableName PackageDeclarationName:/ - -PackageComment ::= $empty -/.$putCase consumePackageComment(); $break ./ -/:$readableName PackageComment:/ - -ImportDeclaration -> SingleTypeImportDeclaration -ImportDeclaration -> TypeImportOnDemandDeclaration ------------------------------------------------ --- 1.5 feature ------------------------------------------------ -ImportDeclaration -> SingleStaticImportDeclaration -ImportDeclaration -> StaticImportOnDemandDeclaration -/:$readableName ImportDeclaration:/ - -SingleTypeImportDeclaration ::= SingleTypeImportDeclarationName ';' -/.$putCase consumeImportDeclaration(); $break ./ -/:$readableName SingleTypeImportDeclaration:/ - -SingleTypeImportDeclarationName ::= 'import' Name -/.$putCase consumeSingleTypeImportDeclarationName(); $break ./ -/:$readableName SingleTypeImportDeclarationName:/ - -TypeImportOnDemandDeclaration ::= TypeImportOnDemandDeclarationName ';' -/.$putCase consumeImportDeclaration(); $break ./ -/:$readableName TypeImportOnDemandDeclaration:/ - -TypeImportOnDemandDeclarationName ::= 'import' Name '.' '*' -/.$putCase consumeTypeImportOnDemandDeclarationName(); $break ./ -/:$readableName TypeImportOnDemandDeclarationName:/ - -TypeDeclaration -> ClassDeclaration -TypeDeclaration -> InterfaceDeclaration --- this declaration in part of a list od declaration and we will --- use and optimized list length calculation process --- thus we decrement the number while it will be incremend..... -TypeDeclaration ::= ';' -/. $putCase consumeEmptyTypeDeclaration(); $break ./ ------------------------------------------------ --- 1.5 feature ------------------------------------------------ -TypeDeclaration -> EnumDeclaration -TypeDeclaration -> AnnotationTypeDeclaration -/:$readableName TypeDeclaration:/ - ---18.7 Only in the LALR(1) Grammar - -Modifiers -> Modifier -Modifiers ::= Modifiers Modifier -/.$putCase consumeModifiers2(); $break ./ -/:$readableName Modifiers:/ - -Modifier -> 'public' -Modifier -> 'protected' -Modifier -> 'private' -Modifier -> 'static' -Modifier -> 'abstract' -Modifier -> 'final' -Modifier -> 'native' -Modifier -> 'synchronized' -Modifier -> 'transient' -Modifier -> 'volatile' -Modifier -> 'strictfp' -Modifier ::= Annotation -/.$putCase consumeAnnotationAsModifier(); $break ./ -/:$readableName Modifier:/ - ---18.8 Productions from 8: Class Declarations ---ClassModifier ::= --- 'abstract' --- | 'final' --- | 'public' ---18.8.1 Productions from 8.1: Class Declarations - -ClassDeclaration ::= ClassHeader ClassBody -/.$putCase consumeClassDeclaration(); $break ./ -/:$readableName ClassDeclaration:/ - -ClassHeader ::= ClassHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt -/.$putCase consumeClassHeader(); $break ./ -/:$readableName ClassHeader:/ - ------------------------------------------------ --- 1.5 features : generics ------------------------------------------------ -ClassHeaderName ::= ClassHeaderName1 TypeParameters -/.$putCase consumeTypeHeaderNameWithTypeParameters(); $break ./ - -ClassHeaderName -> ClassHeaderName1 -/:$readableName ClassHeaderName:/ - -ClassHeaderName1 ::= Modifiersopt 'class' 'Identifier' -/.$putCase consumeClassHeaderName1(); $break ./ -/:$readableName ClassHeaderName:/ - -ClassHeaderExtends ::= 'extends' ClassType -/.$putCase consumeClassHeaderExtends(); $break ./ -/:$readableName ClassHeaderExtends:/ - -ClassHeaderImplements ::= 'implements' InterfaceTypeList -/.$putCase consumeClassHeaderImplements(); $break ./ -/:$readableName ClassHeaderImplements:/ - -InterfaceTypeList -> InterfaceType -InterfaceTypeList ::= InterfaceTypeList ',' InterfaceType -/.$putCase consumeInterfaceTypeList(); $break ./ -/:$readableName InterfaceTypeList:/ - -InterfaceType ::= ClassOrInterfaceType -/.$putCase consumeInterfaceType(); $break ./ -/:$readableName InterfaceType:/ - -ClassBody ::= '{' ClassBodyDeclarationsopt '}' -/:$readableName ClassBody:/ -/:$no_statements_recovery:/ - -ClassBodyDeclarations ::= ClassBodyDeclaration -ClassBodyDeclarations ::= ClassBodyDeclarations ClassBodyDeclaration -/.$putCase consumeClassBodyDeclarations(); $break ./ -/:$readableName ClassBodyDeclarations:/ - -ClassBodyDeclaration -> ClassMemberDeclaration -ClassBodyDeclaration -> StaticInitializer -ClassBodyDeclaration -> ConstructorDeclaration ---1.1 feature -ClassBodyDeclaration ::= Diet NestedMethod CreateInitializer Block -/.$putCase consumeClassBodyDeclaration(); $break ./ -/:$readableName ClassBodyDeclaration:/ - -Diet ::= $empty -/.$putCase consumeDiet(); $break./ -/:$readableName Diet:/ - -Initializer ::= Diet NestedMethod CreateInitializer Block -/.$putCase consumeClassBodyDeclaration(); $break ./ -/:$readableName Initializer:/ - -CreateInitializer ::= $empty -/.$putCase consumeCreateInitializer(); $break./ -/:$readableName CreateInitializer:/ - -ClassMemberDeclaration -> FieldDeclaration -ClassMemberDeclaration -> MethodDeclaration ---1.1 feature -ClassMemberDeclaration -> ClassDeclaration ---1.1 feature -ClassMemberDeclaration -> InterfaceDeclaration --- 1.5 feature -ClassMemberDeclaration -> EnumDeclaration -ClassMemberDeclaration -> AnnotationTypeDeclaration -/:$readableName ClassMemberDeclaration:/ - --- Empty declarations are not valid Java ClassMemberDeclarations. --- However, since the current (2/14/97) Java compiler accepts them --- (in fact, some of the official tests contain this erroneous --- syntax) -ClassMemberDeclaration ::= ';' -/.$putCase consumeEmptyTypeDeclaration(); $break./ - -GenericMethodDeclaration -> MethodDeclaration -GenericMethodDeclaration -> ConstructorDeclaration -/:$readableName GenericMethodDeclaration:/ - ---18.8.2 Productions from 8.3: Field Declarations ---VariableModifier ::= --- 'public' --- | 'protected' --- | 'private' --- | 'static' --- | 'final' --- | 'transient' --- | 'volatile' - -FieldDeclaration ::= Modifiersopt Type VariableDeclarators ';' -/.$putCase consumeFieldDeclaration(); $break ./ -/:$readableName FieldDeclaration:/ - -VariableDeclarators -> VariableDeclarator -VariableDeclarators ::= VariableDeclarators ',' VariableDeclarator -/.$putCase consumeVariableDeclarators(); $break ./ -/:$readableName VariableDeclarators:/ - -VariableDeclarator ::= VariableDeclaratorId EnterVariable ExitVariableWithoutInitialization -VariableDeclarator ::= VariableDeclaratorId EnterVariable '=' ForceNoDiet VariableInitializer RestoreDiet ExitVariableWithInitialization -/:$readableName VariableDeclarator:/ -/:$recovery_template Identifier:/ - -EnterVariable ::= $empty -/.$putCase consumeEnterVariable(); $break ./ -/:$readableName EnterVariable:/ - -ExitVariableWithInitialization ::= $empty -/.$putCase consumeExitVariableWithInitialization(); $break ./ -/:$readableName ExitVariableWithInitialization:/ - -ExitVariableWithoutInitialization ::= $empty -/.$putCase consumeExitVariableWithoutInitialization(); $break ./ -/:$readableName ExitVariableWithoutInitialization:/ - -ForceNoDiet ::= $empty -/.$putCase consumeForceNoDiet(); $break ./ -/:$readableName ForceNoDiet:/ -RestoreDiet ::= $empty -/.$putCase consumeRestoreDiet(); $break ./ -/:$readableName RestoreDiet:/ - -VariableDeclaratorId ::= 'Identifier' Dimsopt -/:$readableName VariableDeclaratorId:/ -/:$recovery_template Identifier:/ - -VariableInitializer -> Expression -VariableInitializer -> ArrayInitializer -/:$readableName VariableInitializer:/ -/:$recovery_template Identifier:/ - ---18.8.3 Productions from 8.4: Method Declarations ---MethodModifier ::= --- 'public' --- | 'protected' --- | 'private' --- | 'static' --- | 'abstract' --- | 'final' --- | 'native' --- | 'synchronized' --- - -MethodDeclaration -> AbstractMethodDeclaration -MethodDeclaration ::= MethodHeader MethodBody -/.$putCase // set to true to consume a method with a body - consumeMethodDeclaration(true); $break ./ -/:$readableName MethodDeclaration:/ - -AbstractMethodDeclaration ::= MethodHeader ';' -/.$putCase // set to false to consume a method without body - consumeMethodDeclaration(false); $break ./ -/:$readableName MethodDeclaration:/ - -MethodHeader ::= MethodHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderExtendedDims MethodHeaderThrowsClauseopt -/.$putCase consumeMethodHeader(); $break ./ -/:$readableName MethodDeclaration:/ - -MethodHeaderName ::= Modifiersopt TypeParameters Type 'Identifier' '(' -/.$putCase consumeMethodHeaderNameWithTypeParameters(false); $break ./ -MethodHeaderName ::= Modifiersopt Type 'Identifier' '(' -/.$putCase consumeMethodHeaderName(false); $break ./ -/:$readableName MethodHeaderName:/ - -MethodHeaderRightParen ::= ')' -/.$putCase consumeMethodHeaderRightParen(); $break ./ -/:$readableName ):/ -/:$recovery_template ):/ - -MethodHeaderExtendedDims ::= Dimsopt -/.$putCase consumeMethodHeaderExtendedDims(); $break ./ -/:$readableName MethodHeaderExtendedDims:/ - -MethodHeaderThrowsClause ::= 'throws' ClassTypeList -/.$putCase consumeMethodHeaderThrowsClause(); $break ./ -/:$readableName MethodHeaderThrowsClause:/ - -ConstructorHeader ::= ConstructorHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderThrowsClauseopt -/.$putCase consumeConstructorHeader(); $break ./ -/:$readableName ConstructorDeclaration:/ - -ConstructorHeaderName ::= Modifiersopt TypeParameters 'Identifier' '(' -/.$putCase consumeConstructorHeaderNameWithTypeParameters(); $break ./ -ConstructorHeaderName ::= Modifiersopt 'Identifier' '(' -/.$putCase consumeConstructorHeaderName(); $break ./ -/:$readableName ConstructorHeaderName:/ - -FormalParameterList -> FormalParameter -FormalParameterList ::= FormalParameterList ',' FormalParameter -/.$putCase consumeFormalParameterList(); $break ./ -/:$readableName FormalParameterList:/ - ---1.1 feature -FormalParameter ::= Modifiersopt Type VariableDeclaratorId -/.$putCase consumeFormalParameter(false); $break ./ -FormalParameter ::= Modifiersopt Type '...' VariableDeclaratorId -/.$putCase consumeFormalParameter(true); $break ./ -/:$readableName FormalParameter:/ -/:$compliance 1.5:/ -/:$recovery_template Identifier Identifier:/ - -ClassTypeList -> ClassTypeElt -ClassTypeList ::= ClassTypeList ',' ClassTypeElt -/.$putCase consumeClassTypeList(); $break ./ -/:$readableName ClassTypeList:/ - -ClassTypeElt ::= ClassType -/.$putCase consumeClassTypeElt(); $break ./ -/:$readableName ClassType:/ - -MethodBody ::= NestedMethod '{' BlockStatementsopt '}' -/.$putCase consumeMethodBody(); $break ./ -/:$readableName MethodBody:/ -/:$no_statements_recovery:/ - -NestedMethod ::= $empty -/.$putCase consumeNestedMethod(); $break ./ -/:$readableName NestedMethod:/ - ---18.8.4 Productions from 8.5: Static Initializers - -StaticInitializer ::= StaticOnly Block -/.$putCase consumeStaticInitializer(); $break./ -/:$readableName StaticInitializer:/ - -StaticOnly ::= 'static' -/.$putCase consumeStaticOnly(); $break ./ -/:$readableName StaticOnly:/ - ---18.8.5 Productions from 8.6: Constructor Declarations ---ConstructorModifier ::= --- 'public' --- | 'protected' --- | 'private' --- --- -ConstructorDeclaration ::= ConstructorHeader MethodBody -/.$putCase consumeConstructorDeclaration() ; $break ./ --- These rules are added to be able to parse constructors with no body -ConstructorDeclaration ::= ConstructorHeader ';' -/.$putCase consumeInvalidConstructorDeclaration() ; $break ./ -/:$readableName ConstructorDeclaration:/ - --- the rules ExplicitConstructorInvocationopt has been expanded --- in the rule below in order to make the grammar lalr(1). - -ExplicitConstructorInvocation ::= 'this' '(' ArgumentListopt ')' ';' -/.$putCase consumeExplicitConstructorInvocation(0, THIS_CALL); $break ./ - -ExplicitConstructorInvocation ::= OnlyTypeArguments 'this' '(' ArgumentListopt ')' ';' -/.$putCase consumeExplicitConstructorInvocationWithTypeArguments(0,THIS_CALL); $break ./ - -ExplicitConstructorInvocation ::= 'super' '(' ArgumentListopt ')' ';' -/.$putCase consumeExplicitConstructorInvocation(0,SUPER_CALL); $break ./ - -ExplicitConstructorInvocation ::= OnlyTypeArguments 'super' '(' ArgumentListopt ')' ';' -/.$putCase consumeExplicitConstructorInvocationWithTypeArguments(0,SUPER_CALL); $break ./ - ---1.1 feature -ExplicitConstructorInvocation ::= Primary '.' 'super' '(' ArgumentListopt ')' ';' -/.$putCase consumeExplicitConstructorInvocation(1, SUPER_CALL); $break ./ - -ExplicitConstructorInvocation ::= Primary '.' OnlyTypeArguments 'super' '(' ArgumentListopt ')' ';' -/.$putCase consumeExplicitConstructorInvocationWithTypeArguments(1, SUPER_CALL); $break ./ - ---1.1 feature -ExplicitConstructorInvocation ::= Name '.' 'super' '(' ArgumentListopt ')' ';' -/.$putCase consumeExplicitConstructorInvocation(2, SUPER_CALL); $break ./ - -ExplicitConstructorInvocation ::= Name '.' OnlyTypeArguments 'super' '(' ArgumentListopt ')' ';' -/.$putCase consumeExplicitConstructorInvocationWithTypeArguments(2, SUPER_CALL); $break ./ - ---1.1 feature -ExplicitConstructorInvocation ::= Primary '.' 'this' '(' ArgumentListopt ')' ';' -/.$putCase consumeExplicitConstructorInvocation(1, THIS_CALL); $break ./ - -ExplicitConstructorInvocation ::= Primary '.' OnlyTypeArguments 'this' '(' ArgumentListopt ')' ';' -/.$putCase consumeExplicitConstructorInvocationWithTypeArguments(1, THIS_CALL); $break ./ - ---1.1 feature -ExplicitConstructorInvocation ::= Name '.' 'this' '(' ArgumentListopt ')' ';' -/.$putCase consumeExplicitConstructorInvocation(2, THIS_CALL); $break ./ - -ExplicitConstructorInvocation ::= Name '.' OnlyTypeArguments 'this' '(' ArgumentListopt ')' ';' -/.$putCase consumeExplicitConstructorInvocationWithTypeArguments(2, THIS_CALL); $break ./ -/:$readableName ExplicitConstructorInvocation:/ - ---18.9 Productions from 9: Interface Declarations - ---18.9.1 Productions from 9.1: Interface Declarations ---InterfaceModifier ::= --- 'public' --- | 'abstract' --- -InterfaceDeclaration ::= InterfaceHeader InterfaceBody -/.$putCase consumeInterfaceDeclaration(); $break ./ -/:$readableName InterfaceDeclaration:/ - -InterfaceHeader ::= InterfaceHeaderName InterfaceHeaderExtendsopt -/.$putCase consumeInterfaceHeader(); $break ./ -/:$readableName InterfaceHeader:/ - ------------------------------------------------ --- 1.5 features : generics ------------------------------------------------ -InterfaceHeaderName ::= InterfaceHeaderName1 TypeParameters -/.$putCase consumeTypeHeaderNameWithTypeParameters(); $break ./ - -InterfaceHeaderName -> InterfaceHeaderName1 -/:$readableName InterfaceHeaderName:/ - -InterfaceHeaderName1 ::= Modifiersopt interface Identifier -/.$putCase consumeInterfaceHeaderName1(); $break ./ -/:$readableName InterfaceHeaderName:/ - -InterfaceHeaderExtends ::= 'extends' InterfaceTypeList -/.$putCase consumeInterfaceHeaderExtends(); $break ./ -/:$readableName InterfaceHeaderExtends:/ - -InterfaceBody ::= '{' InterfaceMemberDeclarationsopt '}' -/:$readableName InterfaceBody:/ - -InterfaceMemberDeclarations -> InterfaceMemberDeclaration -InterfaceMemberDeclarations ::= InterfaceMemberDeclarations InterfaceMemberDeclaration -/.$putCase consumeInterfaceMemberDeclarations(); $break ./ -/:$readableName InterfaceMemberDeclarations:/ - ---same as for class members -InterfaceMemberDeclaration ::= ';' -/.$putCase consumeEmptyTypeDeclaration(); $break ./ -/:$readableName InterfaceMemberDeclaration:/ - -InterfaceMemberDeclaration -> ConstantDeclaration -InterfaceMemberDeclaration ::= MethodHeader MethodBody -/.$putCase consumeInvalidMethodDeclaration(); $break ./ -/:$readableName InterfaceMemberDeclaration:/ - --- These rules are added to be able to parse constructors inside interface and then report a relevent error message -InvalidConstructorDeclaration ::= ConstructorHeader MethodBody -/.$putCase consumeInvalidConstructorDeclaration(true); $break ./ -InvalidConstructorDeclaration ::= ConstructorHeader ';' -/.$putCase consumeInvalidConstructorDeclaration(false); $break ./ -/:$readableName InvalidConstructorDeclaration:/ - -InterfaceMemberDeclaration -> AbstractMethodDeclaration -InterfaceMemberDeclaration -> InvalidConstructorDeclaration ---1.1 feature -InterfaceMemberDeclaration -> ClassDeclaration ---1.1 feature -InterfaceMemberDeclaration -> InterfaceDeclaration -InterfaceMemberDeclaration -> EnumDeclaration -InterfaceMemberDeclaration -> AnnotationTypeDeclaration -/:$readableName InterfaceMemberDeclaration:/ - -ConstantDeclaration -> FieldDeclaration -/:$readableName ConstantDeclaration:/ - -PushLeftBrace ::= $empty -/.$putCase consumePushLeftBrace(); $break ./ -/:$readableName PushLeftBrace:/ - -ArrayInitializer ::= '{' PushLeftBrace ,opt '}' -/.$putCase consumeEmptyArrayInitializer(); $break ./ -ArrayInitializer ::= '{' PushLeftBrace VariableInitializers '}' -/.$putCase consumeArrayInitializer(); $break ./ -ArrayInitializer ::= '{' PushLeftBrace VariableInitializers , '}' -/.$putCase consumeArrayInitializer(); $break ./ -/:$readableName ArrayInitializer:/ -/:$recovery_template Identifier:/ - -VariableInitializers ::= VariableInitializer -VariableInitializers ::= VariableInitializers ',' VariableInitializer -/.$putCase consumeVariableInitializers(); $break ./ -/:$readableName VariableInitializers:/ - -Block ::= OpenBlock '{' BlockStatementsopt '}' -/.$putCase consumeBlock(); $break ./ -/:$readableName Block:/ - -OpenBlock ::= $empty -/.$putCase consumeOpenBlock() ; $break ./ -/:$readableName OpenBlock:/ - -BlockStatements -> BlockStatement -BlockStatements ::= BlockStatements BlockStatement -/.$putCase consumeBlockStatements() ; $break ./ -/:$readableName BlockStatements:/ - -BlockStatement -> LocalVariableDeclarationStatement -BlockStatement -> Statement ---1.1 feature -BlockStatement -> ClassDeclaration -BlockStatement ::= InterfaceDeclaration -/.$putCase consumeInvalidInterfaceDeclaration(); $break ./ -/:$readableName BlockStatement:/ -BlockStatement ::= AnnotationTypeDeclaration -/.$putCase consumeInvalidAnnotationTypeDeclaration(); $break ./ -/:$readableName BlockStatement:/ -BlockStatement ::= EnumDeclaration -/.$putCase consumeInvalidEnumDeclaration(); $break ./ -/:$readableName BlockStatement:/ - -LocalVariableDeclarationStatement ::= LocalVariableDeclaration ';' -/.$putCase consumeLocalVariableDeclarationStatement(); $break ./ -/:$readableName LocalVariableDeclarationStatement:/ - -LocalVariableDeclaration ::= Type PushModifiers VariableDeclarators -/.$putCase consumeLocalVariableDeclaration(); $break ./ --- 1.1 feature --- The modifiers part of this rule makes the grammar more permissive. --- The only modifier here is final. We put Modifiers to allow multiple modifiers --- This will require to check the validity of the modifier -LocalVariableDeclaration ::= Modifiers Type PushRealModifiers VariableDeclarators -/.$putCase consumeLocalVariableDeclaration(); $break ./ -/:$readableName LocalVariableDeclaration:/ - -PushModifiers ::= $empty -/.$putCase consumePushModifiers(); $break ./ -/:$readableName PushModifiers:/ - -PushModifiersForHeader ::= $empty -/.$putCase consumePushModifiersForHeader(); $break ./ -/:$readableName PushModifiersForHeader:/ - -PushRealModifiers ::= $empty -/.$putCase consumePushRealModifiers(); $break ./ -/:$readableName PushRealModifiers:/ - -Statement -> StatementWithoutTrailingSubstatement -Statement -> LabeledStatement -Statement -> IfThenStatement -Statement -> IfThenElseStatement -Statement -> WhileStatement -Statement -> ForStatement ------------------------------------------------ --- 1.5 feature ------------------------------------------------ -Statement -> EnhancedForStatement -/:$readableName Statement:/ -/:$recovery_template ;:/ - -StatementNoShortIf -> StatementWithoutTrailingSubstatement -StatementNoShortIf -> LabeledStatementNoShortIf -StatementNoShortIf -> IfThenElseStatementNoShortIf -StatementNoShortIf -> WhileStatementNoShortIf -StatementNoShortIf -> ForStatementNoShortIf ------------------------------------------------ --- 1.5 feature ------------------------------------------------ -StatementNoShortIf -> EnhancedForStatementNoShortIf -/:$readableName Statement:/ - -StatementWithoutTrailingSubstatement -> AssertStatement -StatementWithoutTrailingSubstatement -> Block -StatementWithoutTrailingSubstatement -> EmptyStatement -StatementWithoutTrailingSubstatement -> ExpressionStatement -StatementWithoutTrailingSubstatement -> SwitchStatement -StatementWithoutTrailingSubstatement -> DoStatement -StatementWithoutTrailingSubstatement -> BreakStatement -StatementWithoutTrailingSubstatement -> ContinueStatement -StatementWithoutTrailingSubstatement -> ReturnStatement -StatementWithoutTrailingSubstatement -> SynchronizedStatement -StatementWithoutTrailingSubstatement -> ThrowStatement -StatementWithoutTrailingSubstatement -> TryStatement -/:$readableName Statement:/ - -EmptyStatement ::= ';' -/.$putCase consumeEmptyStatement(); $break ./ -/:$readableName EmptyStatement:/ - -LabeledStatement ::= Label ':' Statement -/.$putCase consumeStatementLabel() ; $break ./ -/:$readableName LabeledStatement:/ - -LabeledStatementNoShortIf ::= Label ':' StatementNoShortIf -/.$putCase consumeStatementLabel() ; $break ./ -/:$readableName LabeledStatement:/ - -Label ::= 'Identifier' -/.$putCase consumeLabel() ; $break ./ -/:$readableName Label:/ - -ExpressionStatement ::= StatementExpression ';' -/. $putCase consumeExpressionStatement(); $break ./ -ExpressionStatement ::= ExplicitConstructorInvocation -/:$readableName Statement:/ - -StatementExpression ::= Assignment -StatementExpression ::= PreIncrementExpression -StatementExpression ::= PreDecrementExpression -StatementExpression ::= PostIncrementExpression -StatementExpression ::= PostDecrementExpression -StatementExpression ::= MethodInvocation -StatementExpression ::= ClassInstanceCreationExpression -/:$readableName Expression:/ - -IfThenStatement ::= 'if' '(' Expression ')' Statement -/.$putCase consumeStatementIfNoElse(); $break ./ -/:$readableName IfStatement:/ - -IfThenElseStatement ::= 'if' '(' Expression ')' StatementNoShortIf 'else' Statement -/.$putCase consumeStatementIfWithElse(); $break ./ -/:$readableName IfStatement:/ - -IfThenElseStatementNoShortIf ::= 'if' '(' Expression ')' StatementNoShortIf 'else' StatementNoShortIf -/.$putCase consumeStatementIfWithElse(); $break ./ -/:$readableName IfStatement:/ - -SwitchStatement ::= 'switch' '(' Expression ')' OpenBlock SwitchBlock -/.$putCase consumeStatementSwitch() ; $break ./ -/:$readableName SwitchStatement:/ - -SwitchBlock ::= '{' '}' -/.$putCase consumeEmptySwitchBlock() ; $break ./ - -SwitchBlock ::= '{' SwitchBlockStatements '}' -SwitchBlock ::= '{' SwitchLabels '}' -SwitchBlock ::= '{' SwitchBlockStatements SwitchLabels '}' -/.$putCase consumeSwitchBlock() ; $break ./ -/:$readableName SwitchBlock:/ - -SwitchBlockStatements -> SwitchBlockStatement -SwitchBlockStatements ::= SwitchBlockStatements SwitchBlockStatement -/.$putCase consumeSwitchBlockStatements() ; $break ./ -/:$readableName SwitchBlockStatements:/ - -SwitchBlockStatement ::= SwitchLabels BlockStatements -/.$putCase consumeSwitchBlockStatement() ; $break ./ -/:$readableName SwitchBlockStatement:/ - -SwitchLabels -> SwitchLabel -SwitchLabels ::= SwitchLabels SwitchLabel -/.$putCase consumeSwitchLabels() ; $break ./ -/:$readableName SwitchLabels:/ - -SwitchLabel ::= 'case' ConstantExpression ':' -/. $putCase consumeCaseLabel(); $break ./ - -SwitchLabel ::= 'default' ':' -/. $putCase consumeDefaultLabel(); $break ./ -/:$readableName SwitchLabel:/ - -WhileStatement ::= 'while' '(' Expression ')' Statement -/.$putCase consumeStatementWhile() ; $break ./ -/:$readableName WhileStatement:/ - -WhileStatementNoShortIf ::= 'while' '(' Expression ')' StatementNoShortIf -/.$putCase consumeStatementWhile() ; $break ./ -/:$readableName WhileStatement:/ - -DoStatement ::= 'do' Statement 'while' '(' Expression ')' ';' -/.$putCase consumeStatementDo() ; $break ./ -/:$readableName DoStatement:/ - -ForStatement ::= 'for' '(' ForInitopt ';' Expressionopt ';' ForUpdateopt ')' Statement -/.$putCase consumeStatementFor() ; $break ./ -/:$readableName ForStatement:/ - -ForStatementNoShortIf ::= 'for' '(' ForInitopt ';' Expressionopt ';' ForUpdateopt ')' StatementNoShortIf -/.$putCase consumeStatementFor() ; $break ./ -/:$readableName ForStatement:/ - ---the minus one allows to avoid a stack-to-stack transfer -ForInit ::= StatementExpressionList -/.$putCase consumeForInit() ; $break ./ -ForInit -> LocalVariableDeclaration -/:$readableName ForInit:/ - -ForUpdate -> StatementExpressionList -/:$readableName ForUpdate:/ - -StatementExpressionList -> StatementExpression -StatementExpressionList ::= StatementExpressionList ',' StatementExpression -/.$putCase consumeStatementExpressionList() ; $break ./ -/:$readableName StatementExpressionList:/ - --- 1.4 feature -AssertStatement ::= 'assert' Expression ';' -/.$putCase consumeSimpleAssertStatement() ; $break ./ -/:$compliance 1.4:/ - -AssertStatement ::= 'assert' Expression ':' Expression ';' -/.$putCase consumeAssertStatement() ; $break ./ -/:$readableName AssertStatement:/ -/:$compliance 1.4:/ - -BreakStatement ::= 'break' ';' -/.$putCase consumeStatementBreak() ; $break ./ - -BreakStatement ::= 'break' Identifier ';' -/.$putCase consumeStatementBreakWithLabel() ; $break ./ -/:$readableName BreakStatement:/ - -ContinueStatement ::= 'continue' ';' -/.$putCase consumeStatementContinue() ; $break ./ - -ContinueStatement ::= 'continue' Identifier ';' -/.$putCase consumeStatementContinueWithLabel() ; $break ./ -/:$readableName ContinueStatement:/ - -ReturnStatement ::= 'return' Expressionopt ';' -/.$putCase consumeStatementReturn() ; $break ./ -/:$readableName ReturnStatement:/ - -ThrowStatement ::= 'throw' Expression ';' -/.$putCase consumeStatementThrow(); $break ./ -/:$readableName ThrowStatement:/ - -SynchronizedStatement ::= OnlySynchronized '(' Expression ')' Block -/.$putCase consumeStatementSynchronized(); $break ./ -/:$readableName SynchronizedStatement:/ - -OnlySynchronized ::= 'synchronized' -/.$putCase consumeOnlySynchronized(); $break ./ -/:$readableName OnlySynchronized:/ - -TryStatement ::= 'try' TryBlock Catches -/.$putCase consumeStatementTry(false); $break ./ -TryStatement ::= 'try' TryBlock Catchesopt Finally -/.$putCase consumeStatementTry(true); $break ./ -/:$readableName TryStatement:/ - -TryBlock ::= Block ExitTryBlock -/:$readableName Block:/ - -ExitTryBlock ::= $empty -/.$putCase consumeExitTryBlock(); $break ./ -/:$readableName ExitTryBlock:/ - -Catches -> CatchClause -Catches ::= Catches CatchClause -/.$putCase consumeCatches(); $break ./ -/:$readableName Catches:/ - -CatchClause ::= 'catch' '(' FormalParameter ')' Block -/.$putCase consumeStatementCatch() ; $break ./ -/:$readableName CatchClause:/ - -Finally ::= 'finally' Block -/:$readableName Finally:/ -/:$recovery_template finally { }:/ - ---18.12 Productions from 14: Expressions - ---for source positioning purpose -PushLPAREN ::= '(' -/.$putCase consumeLeftParen(); $break ./ -/:$readableName (:/ -/:$recovery_template (:/ -PushRPAREN ::= ')' -/.$putCase consumeRightParen(); $break ./ -/:$readableName ):/ -/:$recovery_template ):/ - -Primary -> PrimaryNoNewArray -Primary -> ArrayCreationWithArrayInitializer -Primary -> ArrayCreationWithoutArrayInitializer -/:$readableName Expression:/ - -PrimaryNoNewArray -> Literal -PrimaryNoNewArray ::= 'this' -/.$putCase consumePrimaryNoNewArrayThis(); $break ./ - -PrimaryNoNewArray ::= PushLPAREN Expression_NotName PushRPAREN -/.$putCase consumePrimaryNoNewArray(); $break ./ - -PrimaryNoNewArray ::= PushLPAREN Name PushRPAREN -/.$putCase consumePrimaryNoNewArrayWithName(); $break ./ - -PrimaryNoNewArray -> ClassInstanceCreationExpression -PrimaryNoNewArray -> FieldAccess ---1.1 feature -PrimaryNoNewArray ::= Name '.' 'this' -/.$putCase consumePrimaryNoNewArrayNameThis(); $break ./ -PrimaryNoNewArray ::= Name '.' 'super' -/.$putCase consumePrimaryNoNewArrayNameSuper(); $break ./ - ---1.1 feature ---PrimaryNoNewArray ::= Type '.' 'class' ---inline Type in the previous rule in order to make the grammar LL1 instead --- of LL2. The result is the 3 next rules. - -PrimaryNoNewArray ::= Name '.' 'class' -/.$putCase consumePrimaryNoNewArrayName(); $break ./ - -PrimaryNoNewArray ::= Name Dims '.' 'class' -/.$putCase consumePrimaryNoNewArrayArrayType(); $break ./ - -PrimaryNoNewArray ::= PrimitiveType Dims '.' 'class' -/.$putCase consumePrimaryNoNewArrayPrimitiveArrayType(); $break ./ - -PrimaryNoNewArray ::= PrimitiveType '.' 'class' -/.$putCase consumePrimaryNoNewArrayPrimitiveType(); $break ./ - -PrimaryNoNewArray -> MethodInvocation -PrimaryNoNewArray -> ArrayAccess -/:$readableName Expression:/ ---1.1 feature --- --- In Java 1.0 a ClassBody could not appear at all in a --- ClassInstanceCreationExpression. --- - -AllocationHeader ::= 'new' ClassType '(' ArgumentListopt ')' -/.$putCase consumeAllocationHeader(); $break ./ -/:$readableName AllocationHeader:/ - -ClassInstanceCreationExpression ::= 'new' OnlyTypeArguments ClassType '(' ArgumentListopt ')' ClassBodyopt -/.$putCase consumeClassInstanceCreationExpressionWithTypeArguments(); $break ./ - -ClassInstanceCreationExpression ::= 'new' ClassType '(' ArgumentListopt ')' ClassBodyopt -/.$putCase consumeClassInstanceCreationExpression(); $break ./ ---1.1 feature - -ClassInstanceCreationExpression ::= Primary '.' 'new' OnlyTypeArguments ClassType '(' ArgumentListopt ')' ClassBodyopt -/.$putCase consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ; $break ./ - -ClassInstanceCreationExpression ::= Primary '.' 'new' ClassType '(' ArgumentListopt ')' ClassBodyopt -/.$putCase consumeClassInstanceCreationExpressionQualified() ; $break ./ - ---1.1 feature -ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 'new' ClassType '(' ArgumentListopt ')' ClassBodyopt -/.$putCase consumeClassInstanceCreationExpressionQualified() ; $break ./ -/:$readableName ClassInstanceCreationExpression:/ - -ClassInstanceCreationExpression ::= ClassInstanceCreationExpressionName 'new' OnlyTypeArguments ClassType '(' ArgumentListopt ')' ClassBodyopt -/.$putCase consumeClassInstanceCreationExpressionQualifiedWithTypeArguments() ; $break ./ -/:$readableName ClassInstanceCreationExpression:/ - -ClassInstanceCreationExpressionName ::= Name '.' -/.$putCase consumeClassInstanceCreationExpressionName() ; $break ./ -/:$readableName ClassInstanceCreationExpressionName:/ - -ClassBodyopt ::= $empty --test made using null as contents -/.$putCase consumeClassBodyopt(); $break ./ -ClassBodyopt ::= EnterAnonymousClassBody ClassBody -/:$readableName ClassBody:/ -/:$no_statements_recovery:/ - -EnterAnonymousClassBody ::= $empty -/.$putCase consumeEnterAnonymousClassBody(); $break ./ -/:$readableName EnterAnonymousClassBody:/ - -ArgumentList ::= Expression -ArgumentList ::= ArgumentList ',' Expression -/.$putCase consumeArgumentList(); $break ./ -/:$readableName ArgumentList:/ - -ArrayCreationHeader ::= 'new' PrimitiveType DimWithOrWithOutExprs -/.$putCase consumeArrayCreationHeader(); $break ./ - -ArrayCreationHeader ::= 'new' ClassOrInterfaceType DimWithOrWithOutExprs -/.$putCase consumeArrayCreationHeader(); $break ./ -/:$readableName ArrayCreationHeader:/ - -ArrayCreationWithoutArrayInitializer ::= 'new' PrimitiveType DimWithOrWithOutExprs -/.$putCase consumeArrayCreationExpressionWithoutInitializer(); $break ./ -/:$readableName ArrayCreationWithoutArrayInitializer:/ - -ArrayCreationWithArrayInitializer ::= 'new' PrimitiveType DimWithOrWithOutExprs ArrayInitializer -/.$putCase consumeArrayCreationExpressionWithInitializer(); $break ./ -/:$readableName ArrayCreationWithArrayInitializer:/ - -ArrayCreationWithoutArrayInitializer ::= 'new' ClassOrInterfaceType DimWithOrWithOutExprs -/.$putCase consumeArrayCreationExpressionWithoutInitializer(); $break ./ - -ArrayCreationWithArrayInitializer ::= 'new' ClassOrInterfaceType DimWithOrWithOutExprs ArrayInitializer -/.$putCase consumeArrayCreationExpressionWithInitializer(); $break ./ - -DimWithOrWithOutExprs ::= DimWithOrWithOutExpr -DimWithOrWithOutExprs ::= DimWithOrWithOutExprs DimWithOrWithOutExpr -/.$putCase consumeDimWithOrWithOutExprs(); $break ./ -/:$readableName Dimensions:/ - -DimWithOrWithOutExpr ::= '[' Expression ']' -DimWithOrWithOutExpr ::= '[' ']' -/. $putCase consumeDimWithOrWithOutExpr(); $break ./ -/:$readableName Dimension:/ --- ----------------------------------------------- - -Dims ::= DimsLoop -/. $putCase consumeDims(); $break ./ -/:$readableName Dimensions:/ -DimsLoop -> OneDimLoop -DimsLoop ::= DimsLoop OneDimLoop -/:$readableName Dimensions:/ -OneDimLoop ::= '[' ']' -/. $putCase consumeOneDimLoop(); $break ./ -/:$readableName Dimension:/ - -FieldAccess ::= Primary '.' 'Identifier' -/.$putCase consumeFieldAccess(false); $break ./ - -FieldAccess ::= 'super' '.' 'Identifier' -/.$putCase consumeFieldAccess(true); $break ./ -/:$readableName FieldAccess:/ - -MethodInvocation ::= Name '(' ArgumentListopt ')' -/.$putCase consumeMethodInvocationName(); $break ./ - -MethodInvocation ::= Name '.' OnlyTypeArguments 'Identifier' '(' ArgumentListopt ')' -/.$putCase consumeMethodInvocationNameWithTypeArguments(); $break ./ - -MethodInvocation ::= Primary '.' OnlyTypeArguments 'Identifier' '(' ArgumentListopt ')' -/.$putCase consumeMethodInvocationPrimaryWithTypeArguments(); $break ./ - -MethodInvocation ::= Primary '.' 'Identifier' '(' ArgumentListopt ')' -/.$putCase consumeMethodInvocationPrimary(); $break ./ - -MethodInvocation ::= 'super' '.' OnlyTypeArguments 'Identifier' '(' ArgumentListopt ')' -/.$putCase consumeMethodInvocationSuperWithTypeArguments(); $break ./ - -MethodInvocation ::= 'super' '.' 'Identifier' '(' ArgumentListopt ')' -/.$putCase consumeMethodInvocationSuper(); $break ./ -/:$readableName MethodInvocation:/ - -ArrayAccess ::= Name '[' Expression ']' -/.$putCase consumeArrayAccess(true); $break ./ -ArrayAccess ::= PrimaryNoNewArray '[' Expression ']' -/.$putCase consumeArrayAccess(false); $break ./ -ArrayAccess ::= ArrayCreationWithArrayInitializer '[' Expression ']' -/.$putCase consumeArrayAccess(false); $break ./ -/:$readableName ArrayAccess:/ - -PostfixExpression -> Primary -PostfixExpression ::= Name -/.$putCase consumePostfixExpression(); $break ./ -PostfixExpression -> PostIncrementExpression -PostfixExpression -> PostDecrementExpression -/:$readableName Expression:/ - -PostIncrementExpression ::= PostfixExpression '++' -/.$putCase consumeUnaryExpression(OperatorIds.PLUS,true); $break ./ -/:$readableName PostIncrementExpression:/ - -PostDecrementExpression ::= PostfixExpression '--' -/.$putCase consumeUnaryExpression(OperatorIds.MINUS,true); $break ./ -/:$readableName PostDecrementExpression:/ - ---for source managment purpose -PushPosition ::= $empty - /.$putCase consumePushPosition(); $break ./ -/:$readableName PushPosition:/ - -UnaryExpression -> PreIncrementExpression -UnaryExpression -> PreDecrementExpression -UnaryExpression ::= '+' PushPosition UnaryExpression -/.$putCase consumeUnaryExpression(OperatorIds.PLUS); $break ./ -UnaryExpression ::= '-' PushPosition UnaryExpression -/.$putCase consumeUnaryExpression(OperatorIds.MINUS); $break ./ -UnaryExpression -> UnaryExpressionNotPlusMinus -/:$readableName Expression:/ - -PreIncrementExpression ::= '++' PushPosition UnaryExpression -/.$putCase consumeUnaryExpression(OperatorIds.PLUS,false); $break ./ -/:$readableName PreIncrementExpression:/ - -PreDecrementExpression ::= '--' PushPosition UnaryExpression -/.$putCase consumeUnaryExpression(OperatorIds.MINUS,false); $break ./ -/:$readableName PreDecrementExpression:/ - -UnaryExpressionNotPlusMinus -> PostfixExpression -UnaryExpressionNotPlusMinus ::= '~' PushPosition UnaryExpression -/.$putCase consumeUnaryExpression(OperatorIds.TWIDDLE); $break ./ -UnaryExpressionNotPlusMinus ::= '!' PushPosition UnaryExpression -/.$putCase consumeUnaryExpression(OperatorIds.NOT); $break ./ -UnaryExpressionNotPlusMinus -> CastExpression -/:$readableName Expression:/ - -CastExpression ::= PushLPAREN PrimitiveType Dimsopt PushRPAREN InsideCastExpression UnaryExpression -/.$putCase consumeCastExpressionWithPrimitiveType(); $break ./ -CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression Dimsopt PushRPAREN InsideCastExpression UnaryExpressionNotPlusMinus -/.$putCase consumeCastExpressionWithGenericsArray(); $break ./ -CastExpression ::= PushLPAREN Name OnlyTypeArgumentsForCastExpression '.' ClassOrInterfaceType Dimsopt PushRPAREN InsideCastExpressionWithQualifiedGenerics UnaryExpressionNotPlusMinus -/.$putCase consumeCastExpressionWithQualifiedGenericsArray(); $break ./ -CastExpression ::= PushLPAREN Name PushRPAREN InsideCastExpressionLL1 UnaryExpressionNotPlusMinus -/.$putCase consumeCastExpressionLL1(); $break ./ -CastExpression ::= PushLPAREN Name Dims PushRPAREN InsideCastExpression UnaryExpressionNotPlusMinus -/.$putCase consumeCastExpressionWithNameArray(); $break ./ -/:$readableName CastExpression:/ - -OnlyTypeArgumentsForCastExpression ::= OnlyTypeArguments -/.$putCase consumeOnlyTypeArgumentsForCastExpression(); $break ./ -/:$readableName TypeArguments:/ - -InsideCastExpression ::= $empty -/.$putCase consumeInsideCastExpression(); $break ./ -/:$readableName InsideCastExpression:/ -InsideCastExpressionLL1 ::= $empty -/.$putCase consumeInsideCastExpressionLL1(); $break ./ -/:$readableName InsideCastExpression:/ -InsideCastExpressionWithQualifiedGenerics ::= $empty -/.$putCase consumeInsideCastExpressionWithQualifiedGenerics(); $break ./ -/:$readableName InsideCastExpression:/ - -MultiplicativeExpression -> UnaryExpression -MultiplicativeExpression ::= MultiplicativeExpression '*' UnaryExpression -/.$putCase consumeBinaryExpression(OperatorIds.MULTIPLY); $break ./ -MultiplicativeExpression ::= MultiplicativeExpression '/' UnaryExpression -/.$putCase consumeBinaryExpression(OperatorIds.DIVIDE); $break ./ -MultiplicativeExpression ::= MultiplicativeExpression '%' UnaryExpression -/.$putCase consumeBinaryExpression(OperatorIds.REMAINDER); $break ./ -/:$readableName Expression:/ - -AdditiveExpression -> MultiplicativeExpression -AdditiveExpression ::= AdditiveExpression '+' MultiplicativeExpression -/.$putCase consumeBinaryExpression(OperatorIds.PLUS); $break ./ -AdditiveExpression ::= AdditiveExpression '-' MultiplicativeExpression -/.$putCase consumeBinaryExpression(OperatorIds.MINUS); $break ./ -/:$readableName Expression:/ - -ShiftExpression -> AdditiveExpression -ShiftExpression ::= ShiftExpression '<<' AdditiveExpression -/.$putCase consumeBinaryExpression(OperatorIds.LEFT_SHIFT); $break ./ -ShiftExpression ::= ShiftExpression '>>' AdditiveExpression -/.$putCase consumeBinaryExpression(OperatorIds.RIGHT_SHIFT); $break ./ -ShiftExpression ::= ShiftExpression '>>>' AdditiveExpression -/.$putCase consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT); $break ./ -/:$readableName Expression:/ - -RelationalExpression -> ShiftExpression -RelationalExpression ::= RelationalExpression '<' ShiftExpression -/.$putCase consumeBinaryExpression(OperatorIds.LESS); $break ./ -RelationalExpression ::= RelationalExpression '>' ShiftExpression -/.$putCase consumeBinaryExpression(OperatorIds.GREATER); $break ./ -RelationalExpression ::= RelationalExpression '<=' ShiftExpression -/.$putCase consumeBinaryExpression(OperatorIds.LESS_EQUAL); $break ./ -RelationalExpression ::= RelationalExpression '>=' ShiftExpression -/.$putCase consumeBinaryExpression(OperatorIds.GREATER_EQUAL); $break ./ -/:$readableName Expression:/ - -InstanceofExpression -> RelationalExpression -InstanceofExpression ::= InstanceofExpression 'instanceof' ReferenceType -/.$putCase consumeInstanceOfExpression(); $break ./ -/:$readableName Expression:/ - -EqualityExpression -> InstanceofExpression -EqualityExpression ::= EqualityExpression '==' InstanceofExpression -/.$putCase consumeEqualityExpression(OperatorIds.EQUAL_EQUAL); $break ./ -EqualityExpression ::= EqualityExpression '!=' InstanceofExpression -/.$putCase consumeEqualityExpression(OperatorIds.NOT_EQUAL); $break ./ -/:$readableName Expression:/ - -AndExpression -> EqualityExpression -AndExpression ::= AndExpression '&' EqualityExpression -/.$putCase consumeBinaryExpression(OperatorIds.AND); $break ./ -/:$readableName Expression:/ - -ExclusiveOrExpression -> AndExpression -ExclusiveOrExpression ::= ExclusiveOrExpression '^' AndExpression -/.$putCase consumeBinaryExpression(OperatorIds.XOR); $break ./ -/:$readableName Expression:/ - -InclusiveOrExpression -> ExclusiveOrExpression -InclusiveOrExpression ::= InclusiveOrExpression '|' ExclusiveOrExpression -/.$putCase consumeBinaryExpression(OperatorIds.OR); $break ./ -/:$readableName Expression:/ - -ConditionalAndExpression -> InclusiveOrExpression -ConditionalAndExpression ::= ConditionalAndExpression '&&' InclusiveOrExpression -/.$putCase consumeBinaryExpression(OperatorIds.AND_AND); $break ./ -/:$readableName Expression:/ - -ConditionalOrExpression -> ConditionalAndExpression -ConditionalOrExpression ::= ConditionalOrExpression '||' ConditionalAndExpression -/.$putCase consumeBinaryExpression(OperatorIds.OR_OR); $break ./ -/:$readableName Expression:/ - -ConditionalExpression -> ConditionalOrExpression -ConditionalExpression ::= ConditionalOrExpression '?' Expression ':' ConditionalExpression -/.$putCase consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ; $break ./ -/:$readableName Expression:/ - -AssignmentExpression -> ConditionalExpression -AssignmentExpression -> Assignment -/:$readableName Expression:/ -/:$recovery_template Identifier:/ - -Assignment ::= PostfixExpression AssignmentOperator AssignmentExpression -/.$putCase consumeAssignment(); $break ./ -/:$readableName Assignment:/ - --- this rule is added to parse an array initializer in a assigment and then report a syntax error knowing the exact senario -InvalidArrayInitializerAssignement ::= PostfixExpression AssignmentOperator ArrayInitializer -/:$readableName ArrayInitializerAssignment:/ -/:$recovery:/ -Assignment ::= InvalidArrayInitializerAssignement -/.$putcase ignoreExpressionAssignment();$break ./ -/:$recovery:/ - -AssignmentOperator ::= '=' -/.$putCase consumeAssignmentOperator(EQUAL); $break ./ -AssignmentOperator ::= '*=' -/.$putCase consumeAssignmentOperator(MULTIPLY); $break ./ -AssignmentOperator ::= '/=' -/.$putCase consumeAssignmentOperator(DIVIDE); $break ./ -AssignmentOperator ::= '%=' -/.$putCase consumeAssignmentOperator(REMAINDER); $break ./ -AssignmentOperator ::= '+=' -/.$putCase consumeAssignmentOperator(PLUS); $break ./ -AssignmentOperator ::= '-=' -/.$putCase consumeAssignmentOperator(MINUS); $break ./ -AssignmentOperator ::= '<<=' -/.$putCase consumeAssignmentOperator(LEFT_SHIFT); $break ./ -AssignmentOperator ::= '>>=' -/.$putCase consumeAssignmentOperator(RIGHT_SHIFT); $break ./ -AssignmentOperator ::= '>>>=' -/.$putCase consumeAssignmentOperator(UNSIGNED_RIGHT_SHIFT); $break ./ -AssignmentOperator ::= '&=' -/.$putCase consumeAssignmentOperator(AND); $break ./ -AssignmentOperator ::= '^=' -/.$putCase consumeAssignmentOperator(XOR); $break ./ -AssignmentOperator ::= '|=' -/.$putCase consumeAssignmentOperator(OR); $break ./ -/:$readableName AssignmentOperator:/ -/:$recovery_template =:/ - -Expression -> AssignmentExpression -/:$readableName Expression:/ -/:$recovery_template Identifier:/ - --- The following rules are for optional nonterminals. --- -ClassHeaderExtendsopt ::= $empty -ClassHeaderExtendsopt -> ClassHeaderExtends -/:$readableName ClassHeaderExtends:/ - -Expressionopt ::= $empty -/.$putCase consumeEmptyExpression(); $break ./ -Expressionopt -> Expression -/:$readableName Expression:/ - -ConstantExpression -> Expression -/:$readableName ConstantExpression:/ - ---------------------------------------------------------------------------------------- --- --- The rules below are for optional terminal symbols. An optional comma, --- is only used in the context of an array initializer - It is a --- "syntactic sugar" that otherwise serves no other purpose. By contrast, --- an optional identifier is used in the definition of a break and --- continue statement. When the identifier does not appear, a NULL --- is produced. When the identifier is present, the user should use the --- corresponding TOKEN(i) method. See break statement as an example. --- ---------------------------------------------------------------------------------------- - -,opt -> $empty -,opt -> , -/:$readableName ,:/ - -ClassBodyDeclarationsopt ::= $empty -/.$putCase consumeEmptyClassBodyDeclarationsopt(); $break ./ -ClassBodyDeclarationsopt ::= NestedType ClassBodyDeclarations -/.$putCase consumeClassBodyDeclarationsopt(); $break ./ -/:$readableName ClassBodyDeclarations:/ - -Modifiersopt ::= $empty -/. $putCase consumeDefaultModifiers(); $break ./ -Modifiersopt ::= Modifiers -/.$putCase consumeModifiers(); $break ./ -/:$readableName Modifiers:/ - -BlockStatementsopt ::= $empty -/.$putCase consumeEmptyBlockStatementsopt(); $break ./ -BlockStatementsopt -> BlockStatements -/:$readableName BlockStatements:/ - -Dimsopt ::= $empty -/. $putCase consumeEmptyDimsopt(); $break ./ -Dimsopt -> Dims -/:$readableName Dimensions:/ - -ArgumentListopt ::= $empty -/. $putCase consumeEmptyArgumentListopt(); $break ./ -ArgumentListopt -> ArgumentList -/:$readableName ArgumentList:/ - -MethodHeaderThrowsClauseopt ::= $empty -MethodHeaderThrowsClauseopt -> MethodHeaderThrowsClause -/:$readableName MethodHeaderThrowsClause:/ - -FormalParameterListopt ::= $empty -/.$putcase consumeFormalParameterListopt(); $break ./ -FormalParameterListopt -> FormalParameterList -/:$readableName FormalParameterList:/ - -ClassHeaderImplementsopt ::= $empty -ClassHeaderImplementsopt -> ClassHeaderImplements -/:$readableName ClassHeaderImplements:/ - -InterfaceMemberDeclarationsopt ::= $empty -/. $putCase consumeEmptyInterfaceMemberDeclarationsopt(); $break ./ -InterfaceMemberDeclarationsopt ::= NestedType InterfaceMemberDeclarations -/. $putCase consumeInterfaceMemberDeclarationsopt(); $break ./ -/:$readableName InterfaceMemberDeclarations:/ - -NestedType ::= $empty -/.$putCase consumeNestedType(); $break./ -/:$readableName NestedType:/ - -ForInitopt ::= $empty -/. $putCase consumeEmptyForInitopt(); $break ./ -ForInitopt -> ForInit -/:$readableName ForInit:/ - -ForUpdateopt ::= $empty -/. $putCase consumeEmptyForUpdateopt(); $break ./ -ForUpdateopt -> ForUpdate -/:$readableName ForUpdate:/ - -InterfaceHeaderExtendsopt ::= $empty -InterfaceHeaderExtendsopt -> InterfaceHeaderExtends -/:$readableName InterfaceHeaderExtends:/ - -Catchesopt ::= $empty -/. $putCase consumeEmptyCatchesopt(); $break ./ -Catchesopt -> Catches -/:$readableName Catches:/ - ------------------------------------------------ --- 1.5 features : enum type ------------------------------------------------ -EnumDeclaration ::= EnumHeader EnumBody -/. $putCase consumeEnumDeclaration(); $break ./ -/:$readableName EnumDeclaration:/ - -EnumHeader ::= EnumHeaderName ClassHeaderImplementsopt -/. $putCase consumeEnumHeader(); $break ./ -/:$readableName EnumHeader:/ - -EnumHeaderName ::= Modifiersopt 'enum' Identifier -/. $putCase consumeEnumHeaderName(); $break ./ -/:$compliance 1.5:/ -EnumHeaderName ::= Modifiersopt 'enum' Identifier TypeParameters -/. $putCase consumeEnumHeaderNameWithTypeParameters(); $break ./ -/:$readableName EnumHeaderName:/ -/:$compliance 1.5:/ - -EnumBody ::= '{' EnumBodyDeclarationsopt '}' -/. $putCase consumeEnumBodyNoConstants(); $break ./ -EnumBody ::= '{' ',' EnumBodyDeclarationsopt '}' -/. $putCase consumeEnumBodyNoConstants(); $break ./ -EnumBody ::= '{' EnumConstants ',' EnumBodyDeclarationsopt '}' -/. $putCase consumeEnumBodyWithConstants(); $break ./ -EnumBody ::= '{' EnumConstants EnumBodyDeclarationsopt '}' -/. $putCase consumeEnumBodyWithConstants(); $break ./ -/:$readableName EnumBody:/ - -EnumConstants -> EnumConstant -EnumConstants ::= EnumConstants ',' EnumConstant -/.$putCase consumeEnumConstants(); $break ./ -/:$readableName EnumConstants:/ - -EnumConstantHeaderName ::= Modifiersopt Identifier -/.$putCase consumeEnumConstantHeaderName(); $break ./ -/:$readableName EnumConstantHeaderName:/ - -EnumConstantHeader ::= EnumConstantHeaderName ForceNoDiet Argumentsopt RestoreDiet -/.$putCase consumeEnumConstantHeader(); $break ./ -/:$readableName EnumConstantHeader:/ - -EnumConstant ::= EnumConstantHeader ForceNoDiet ClassBody RestoreDiet -/.$putCase consumeEnumConstantWithClassBody(); $break ./ -EnumConstant ::= EnumConstantHeader -/.$putCase consumeEnumConstantNoClassBody(); $break ./ -/:$readableName EnumConstant:/ - -Arguments ::= '(' ArgumentListopt ')' -/.$putCase consumeArguments(); $break ./ -/:$readableName Arguments:/ - -Argumentsopt ::= $empty -/.$putCase consumeEmptyArguments(); $break ./ -Argumentsopt -> Arguments -/:$readableName Argumentsopt:/ - -EnumDeclarations ::= ';' ClassBodyDeclarationsopt -/.$putCase consumeEnumDeclarations(); $break ./ -/:$readableName EnumDeclarations:/ - -EnumBodyDeclarationsopt ::= $empty -/.$putCase consumeEmptyEnumDeclarations(); $break ./ -EnumBodyDeclarationsopt -> EnumDeclarations -/:$readableName EnumBodyDeclarationsopt:/ - ------------------------------------------------ --- 1.5 features : enhanced for statement ------------------------------------------------ -EnhancedForStatement ::= EnhancedForStatementHeader Statement -/.$putCase consumeEnhancedForStatement(); $break ./ -/:$readableName EnhancedForStatement:/ - -EnhancedForStatementNoShortIf ::= EnhancedForStatementHeader StatementNoShortIf -/.$putCase consumeEnhancedForStatement(); $break ./ -/:$readableName EnhancedForStatementNoShortIf:/ - -EnhancedForStatementHeaderInit ::= 'for' '(' Type PushModifiers Identifier Dimsopt -/.$putCase consumeEnhancedForStatementHeaderInit(false); $break ./ -/:$readableName EnhancedForStatementHeaderInit:/ - -EnhancedForStatementHeaderInit ::= 'for' '(' Modifiers Type PushRealModifiers Identifier Dimsopt -/.$putCase consumeEnhancedForStatementHeaderInit(true); $break ./ -/:$readableName EnhancedForStatementHeaderInit:/ - -EnhancedForStatementHeader ::= EnhancedForStatementHeaderInit ':' Expression ')' -/.$putCase consumeEnhancedForStatementHeader(); $break ./ -/:$readableName EnhancedForStatementHeader:/ -/:$compliance 1.5:/ - ------------------------------------------------ --- 1.5 features : static imports ------------------------------------------------ -SingleStaticImportDeclaration ::= SingleStaticImportDeclarationName ';' -/.$putCase consumeImportDeclaration(); $break ./ -/:$readableName SingleStaticImportDeclaration:/ - -SingleStaticImportDeclarationName ::= 'import' 'static' Name -/.$putCase consumeSingleStaticImportDeclarationName(); $break ./ -/:$readableName SingleStaticImportDeclarationName:/ -/:$compliance 1.5:/ - -StaticImportOnDemandDeclaration ::= StaticImportOnDemandDeclarationName ';' -/.$putCase consumeImportDeclaration(); $break ./ -/:$readableName StaticImportOnDemandDeclaration:/ - -StaticImportOnDemandDeclarationName ::= 'import' 'static' Name '.' '*' -/.$putCase consumeStaticImportOnDemandDeclarationName(); $break ./ -/:$readableName StaticImportOnDemandDeclarationName:/ -/:$compliance 1.5:/ - ------------------------------------------------ --- 1.5 features : generics ------------------------------------------------ -TypeArguments ::= '<' TypeArgumentList1 -/.$putCase consumeTypeArguments(); $break ./ -/:$readableName TypeArguments:/ -/:$compliance 1.5:/ - -OnlyTypeArguments ::= '<' TypeArgumentList1 -/.$putCase consumeOnlyTypeArguments(); $break ./ -/:$readableName TypeArguments:/ -/:$compliance 1.5:/ - -TypeArgumentList1 -> TypeArgument1 -/:$compliance 1.5:/ -TypeArgumentList1 ::= TypeArgumentList ',' TypeArgument1 -/.$putCase consumeTypeArgumentList1(); $break ./ -/:$readableName TypeArgumentList1:/ -/:$compliance 1.5:/ - -TypeArgumentList -> TypeArgument -/:$compliance 1.5:/ -TypeArgumentList ::= TypeArgumentList ',' TypeArgument -/.$putCase consumeTypeArgumentList(); $break ./ -/:$readableName TypeArgumentList:/ -/:$compliance 1.5:/ - -TypeArgument ::= ReferenceType -/.$putCase consumeTypeArgument(); $break ./ -/:$compliance 1.5:/ -TypeArgument -> Wildcard -/:$readableName TypeArgument:/ -/:$compliance 1.5:/ - -TypeArgument1 -> ReferenceType1 -/:$compliance 1.5:/ -TypeArgument1 -> Wildcard1 -/:$readableName TypeArgument1:/ -/:$compliance 1.5:/ - -ReferenceType1 ::= ReferenceType '>' -/.$putCase consumeReferenceType1(); $break ./ -/:$compliance 1.5:/ -ReferenceType1 ::= ClassOrInterface '<' TypeArgumentList2 -/.$putCase consumeTypeArgumentReferenceType1(); $break ./ -/:$readableName ReferenceType1:/ -/:$compliance 1.5:/ - -TypeArgumentList2 -> TypeArgument2 -/:$compliance 1.5:/ -TypeArgumentList2 ::= TypeArgumentList ',' TypeArgument2 -/.$putCase consumeTypeArgumentList2(); $break ./ -/:$readableName TypeArgumentList2:/ -/:$compliance 1.5:/ - -TypeArgument2 -> ReferenceType2 -/:$compliance 1.5:/ -TypeArgument2 -> Wildcard2 -/:$readableName TypeArgument2:/ -/:$compliance 1.5:/ - -ReferenceType2 ::= ReferenceType '>>' -/.$putCase consumeReferenceType2(); $break ./ -/:$compliance 1.5:/ -ReferenceType2 ::= ClassOrInterface '<' TypeArgumentList3 -/.$putCase consumeTypeArgumentReferenceType2(); $break ./ -/:$readableName ReferenceType2:/ -/:$compliance 1.5:/ - -TypeArgumentList3 -> TypeArgument3 -TypeArgumentList3 ::= TypeArgumentList ',' TypeArgument3 -/.$putCase consumeTypeArgumentList3(); $break ./ -/:$readableName TypeArgumentList3:/ -/:$compliance 1.5:/ - -TypeArgument3 -> ReferenceType3 -TypeArgument3 -> Wildcard3 -/:$readableName TypeArgument3:/ -/:$compliance 1.5:/ - -ReferenceType3 ::= ReferenceType '>>>' -/.$putCase consumeReferenceType3(); $break ./ -/:$readableName ReferenceType3:/ -/:$compliance 1.5:/ - -Wildcard ::= '?' -/.$putCase consumeWildcard(); $break ./ -/:$compliance 1.5:/ -Wildcard ::= '?' WildcardBounds -/.$putCase consumeWildcardWithBounds(); $break ./ -/:$readableName Wildcard:/ -/:$compliance 1.5:/ - -WildcardBounds ::= 'extends' ReferenceType -/.$putCase consumeWildcardBoundsExtends(); $break ./ -/:$compliance 1.5:/ -WildcardBounds ::= 'super' ReferenceType -/.$putCase consumeWildcardBoundsSuper(); $break ./ -/:$readableName WildcardBounds:/ -/:$compliance 1.5:/ - -Wildcard1 ::= '?' '>' -/.$putCase consumeWildcard1(); $break ./ -/:$compliance 1.5:/ -Wildcard1 ::= '?' WildcardBounds1 -/.$putCase consumeWildcard1WithBounds(); $break ./ -/:$readableName Wildcard1:/ -/:$compliance 1.5:/ - -WildcardBounds1 ::= 'extends' ReferenceType1 -/.$putCase consumeWildcardBounds1Extends(); $break ./ -/:$compliance 1.5:/ -WildcardBounds1 ::= 'super' ReferenceType1 -/.$putCase consumeWildcardBounds1Super(); $break ./ -/:$readableName WildcardBounds1:/ -/:$compliance 1.5:/ - -Wildcard2 ::= '?' '>>' -/.$putCase consumeWildcard2(); $break ./ -/:$compliance 1.5:/ -Wildcard2 ::= '?' WildcardBounds2 -/.$putCase consumeWildcard2WithBounds(); $break ./ -/:$readableName Wildcard2:/ -/:$compliance 1.5:/ - -WildcardBounds2 ::= 'extends' ReferenceType2 -/.$putCase consumeWildcardBounds2Extends(); $break ./ -/:$compliance 1.5:/ -WildcardBounds2 ::= 'super' ReferenceType2 -/.$putCase consumeWildcardBounds2Super(); $break ./ -/:$readableName WildcardBounds2:/ -/:$compliance 1.5:/ - -Wildcard3 ::= '?' '>>>' -/.$putCase consumeWildcard3(); $break ./ -/:$compliance 1.5:/ -Wildcard3 ::= '?' WildcardBounds3 -/.$putCase consumeWildcard3WithBounds(); $break ./ -/:$readableName Wildcard3:/ -/:$compliance 1.5:/ - -WildcardBounds3 ::= 'extends' ReferenceType3 -/.$putCase consumeWildcardBounds3Extends(); $break ./ -/:$compliance 1.5:/ -WildcardBounds3 ::= 'super' ReferenceType3 -/.$putCase consumeWildcardBounds3Super(); $break ./ -/:$readableName WildcardBound3:/ -/:$compliance 1.5:/ - -TypeParameterHeader ::= Identifier -/.$putCase consumeTypeParameterHeader(); $break ./ -/:$readableName TypeParameter:/ -/:$compliance 1.5:/ - -TypeParameters ::= '<' TypeParameterList1 -/.$putCase consumeTypeParameters(); $break ./ -/:$readableName TypeParameters:/ -/:$compliance 1.5:/ - -TypeParameterList -> TypeParameter -/:$compliance 1.5:/ -TypeParameterList ::= TypeParameterList ',' TypeParameter -/.$putCase consumeTypeParameterList(); $break ./ -/:$readableName TypeParameterList:/ -/:$compliance 1.5:/ - -TypeParameter -> TypeParameterHeader -/:$compliance 1.5:/ -TypeParameter ::= TypeParameterHeader 'extends' ReferenceType -/.$putCase consumeTypeParameterWithExtends(); $break ./ -/:$compliance 1.5:/ -TypeParameter ::= TypeParameterHeader 'extends' ReferenceType AdditionalBoundList -/.$putCase consumeTypeParameterWithExtendsAndBounds(); $break ./ -/:$readableName TypeParameter:/ -/:$compliance 1.5:/ - -AdditionalBoundList -> AdditionalBound -/:$compliance 1.5:/ -AdditionalBoundList ::= AdditionalBoundList AdditionalBound -/.$putCase consumeAdditionalBoundList(); $break ./ -/:$readableName AdditionalBoundList:/ - -AdditionalBound ::= '&' ReferenceType -/.$putCase consumeAdditionalBound(); $break ./ -/:$readableName AdditionalBound:/ -/:$compliance 1.5:/ - -TypeParameterList1 -> TypeParameter1 -/:$compliance 1.5:/ -TypeParameterList1 ::= TypeParameterList ',' TypeParameter1 -/.$putCase consumeTypeParameterList1(); $break ./ -/:$readableName TypeParameterList1:/ -/:$compliance 1.5:/ - -TypeParameter1 ::= TypeParameterHeader '>' -/.$putCase consumeTypeParameter1(); $break ./ -/:$compliance 1.5:/ -TypeParameter1 ::= TypeParameterHeader 'extends' ReferenceType1 -/.$putCase consumeTypeParameter1WithExtends(); $break ./ -/:$compliance 1.5:/ -TypeParameter1 ::= TypeParameterHeader 'extends' ReferenceType AdditionalBoundList1 -/.$putCase consumeTypeParameter1WithExtendsAndBounds(); $break ./ -/:$readableName TypeParameter1:/ -/:$compliance 1.5:/ - -AdditionalBoundList1 -> AdditionalBound1 -/:$compliance 1.5:/ -AdditionalBoundList1 ::= AdditionalBoundList AdditionalBound1 -/.$putCase consumeAdditionalBoundList1(); $break ./ -/:$readableName AdditionalBoundList1:/ -/:$compliance 1.5:/ - -AdditionalBound1 ::= '&' ReferenceType1 -/.$putCase consumeAdditionalBound1(); $break ./ -/:$readableName AdditionalBound1:/ -/:$compliance 1.5:/ - -------------------------------------------------- --- Duplicate rules to remove ambiguity for (x) -- -------------------------------------------------- -PostfixExpression_NotName -> Primary -PostfixExpression_NotName -> PostIncrementExpression -PostfixExpression_NotName -> PostDecrementExpression -/:$readableName Expression:/ - -UnaryExpression_NotName -> PreIncrementExpression -UnaryExpression_NotName -> PreDecrementExpression -UnaryExpression_NotName ::= '+' PushPosition UnaryExpression -/.$putCase consumeUnaryExpression(OperatorIds.PLUS); $break ./ -UnaryExpression_NotName ::= '-' PushPosition UnaryExpression -/.$putCase consumeUnaryExpression(OperatorIds.MINUS); $break ./ -UnaryExpression_NotName -> UnaryExpressionNotPlusMinus_NotName -/:$readableName Expression:/ - -UnaryExpressionNotPlusMinus_NotName -> PostfixExpression_NotName -UnaryExpressionNotPlusMinus_NotName ::= '~' PushPosition UnaryExpression -/.$putCase consumeUnaryExpression(OperatorIds.TWIDDLE); $break ./ -UnaryExpressionNotPlusMinus_NotName ::= '!' PushPosition UnaryExpression -/.$putCase consumeUnaryExpression(OperatorIds.NOT); $break ./ -UnaryExpressionNotPlusMinus_NotName -> CastExpression -/:$readableName Expression:/ - -MultiplicativeExpression_NotName -> UnaryExpression_NotName -MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName '*' UnaryExpression -/.$putCase consumeBinaryExpression(OperatorIds.MULTIPLY); $break ./ -MultiplicativeExpression_NotName ::= Name '*' UnaryExpression -/.$putCase consumeBinaryExpressionWithName(OperatorIds.MULTIPLY); $break ./ -MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName '/' UnaryExpression -/.$putCase consumeBinaryExpression(OperatorIds.DIVIDE); $break ./ -MultiplicativeExpression_NotName ::= Name '/' UnaryExpression -/.$putCase consumeBinaryExpressionWithName(OperatorIds.DIVIDE); $break ./ -MultiplicativeExpression_NotName ::= MultiplicativeExpression_NotName '%' UnaryExpression -/.$putCase consumeBinaryExpression(OperatorIds.REMAINDER); $break ./ -MultiplicativeExpression_NotName ::= Name '%' UnaryExpression -/.$putCase consumeBinaryExpressionWithName(OperatorIds.REMAINDER); $break ./ -/:$readableName Expression:/ - -AdditiveExpression_NotName -> MultiplicativeExpression_NotName -AdditiveExpression_NotName ::= AdditiveExpression_NotName '+' MultiplicativeExpression -/.$putCase consumeBinaryExpression(OperatorIds.PLUS); $break ./ -AdditiveExpression_NotName ::= Name '+' MultiplicativeExpression -/.$putCase consumeBinaryExpressionWithName(OperatorIds.PLUS); $break ./ -AdditiveExpression_NotName ::= AdditiveExpression_NotName '-' MultiplicativeExpression -/.$putCase consumeBinaryExpression(OperatorIds.MINUS); $break ./ -AdditiveExpression_NotName ::= Name '-' MultiplicativeExpression -/.$putCase consumeBinaryExpressionWithName(OperatorIds.MINUS); $break ./ -/:$readableName Expression:/ - -ShiftExpression_NotName -> AdditiveExpression_NotName -ShiftExpression_NotName ::= ShiftExpression_NotName '<<' AdditiveExpression -/.$putCase consumeBinaryExpression(OperatorIds.LEFT_SHIFT); $break ./ -ShiftExpression_NotName ::= Name '<<' AdditiveExpression -/.$putCase consumeBinaryExpressionWithName(OperatorIds.LEFT_SHIFT); $break ./ -ShiftExpression_NotName ::= ShiftExpression_NotName '>>' AdditiveExpression -/.$putCase consumeBinaryExpression(OperatorIds.RIGHT_SHIFT); $break ./ -ShiftExpression_NotName ::= Name '>>' AdditiveExpression -/.$putCase consumeBinaryExpressionWithName(OperatorIds.RIGHT_SHIFT); $break ./ -ShiftExpression_NotName ::= ShiftExpression_NotName '>>>' AdditiveExpression -/.$putCase consumeBinaryExpression(OperatorIds.UNSIGNED_RIGHT_SHIFT); $break ./ -ShiftExpression_NotName ::= Name '>>>' AdditiveExpression -/.$putCase consumeBinaryExpressionWithName(OperatorIds.UNSIGNED_RIGHT_SHIFT); $break ./ -/:$readableName Expression:/ - -RelationalExpression_NotName -> ShiftExpression_NotName -RelationalExpression_NotName ::= ShiftExpression_NotName '<' ShiftExpression -/.$putCase consumeBinaryExpression(OperatorIds.LESS); $break ./ -RelationalExpression_NotName ::= Name '<' ShiftExpression -/.$putCase consumeBinaryExpressionWithName(OperatorIds.LESS); $break ./ -RelationalExpression_NotName ::= ShiftExpression_NotName '>' ShiftExpression -/.$putCase consumeBinaryExpression(OperatorIds.GREATER); $break ./ -RelationalExpression_NotName ::= Name '>' ShiftExpression -/.$putCase consumeBinaryExpressionWithName(OperatorIds.GREATER); $break ./ -RelationalExpression_NotName ::= RelationalExpression_NotName '<=' ShiftExpression -/.$putCase consumeBinaryExpression(OperatorIds.LESS_EQUAL); $break ./ -RelationalExpression_NotName ::= Name '<=' ShiftExpression -/.$putCase consumeBinaryExpressionWithName(OperatorIds.LESS_EQUAL); $break ./ -RelationalExpression_NotName ::= RelationalExpression_NotName '>=' ShiftExpression -/.$putCase consumeBinaryExpression(OperatorIds.GREATER_EQUAL); $break ./ -RelationalExpression_NotName ::= Name '>=' ShiftExpression -/.$putCase consumeBinaryExpressionWithName(OperatorIds.GREATER_EQUAL); $break ./ -/:$readableName Expression:/ - -InstanceofExpression_NotName -> RelationalExpression_NotName -InstanceofExpression_NotName ::= Name 'instanceof' ReferenceType -/.$putCase consumeInstanceOfExpressionWithName(); $break ./ -InstanceofExpression_NotName ::= InstanceofExpression_NotName 'instanceof' ReferenceType -/.$putCase consumeInstanceOfExpression(); $break ./ -/:$readableName Expression:/ - -EqualityExpression_NotName -> InstanceofExpression_NotName -EqualityExpression_NotName ::= EqualityExpression_NotName '==' InstanceofExpression -/.$putCase consumeEqualityExpression(OperatorIds.EQUAL_EQUAL); $break ./ -EqualityExpression_NotName ::= Name '==' InstanceofExpression -/.$putCase consumeEqualityExpressionWithName(OperatorIds.EQUAL_EQUAL); $break ./ -EqualityExpression_NotName ::= EqualityExpression_NotName '!=' InstanceofExpression -/.$putCase consumeEqualityExpression(OperatorIds.NOT_EQUAL); $break ./ -EqualityExpression_NotName ::= Name '!=' InstanceofExpression -/.$putCase consumeEqualityExpressionWithName(OperatorIds.NOT_EQUAL); $break ./ -/:$readableName Expression:/ - -AndExpression_NotName -> EqualityExpression_NotName -AndExpression_NotName ::= AndExpression_NotName '&' EqualityExpression -/.$putCase consumeBinaryExpression(OperatorIds.AND); $break ./ -AndExpression_NotName ::= Name '&' EqualityExpression -/.$putCase consumeBinaryExpressionWithName(OperatorIds.AND); $break ./ -/:$readableName Expression:/ - -ExclusiveOrExpression_NotName -> AndExpression_NotName -ExclusiveOrExpression_NotName ::= ExclusiveOrExpression_NotName '^' AndExpression -/.$putCase consumeBinaryExpression(OperatorIds.XOR); $break ./ -ExclusiveOrExpression_NotName ::= Name '^' AndExpression -/.$putCase consumeBinaryExpressionWithName(OperatorIds.XOR); $break ./ -/:$readableName Expression:/ - -InclusiveOrExpression_NotName -> ExclusiveOrExpression_NotName -InclusiveOrExpression_NotName ::= InclusiveOrExpression_NotName '|' ExclusiveOrExpression -/.$putCase consumeBinaryExpression(OperatorIds.OR); $break ./ -InclusiveOrExpression_NotName ::= Name '|' ExclusiveOrExpression -/.$putCase consumeBinaryExpressionWithName(OperatorIds.OR); $break ./ -/:$readableName Expression:/ - -ConditionalAndExpression_NotName -> InclusiveOrExpression_NotName -ConditionalAndExpression_NotName ::= ConditionalAndExpression_NotName '&&' InclusiveOrExpression -/.$putCase consumeBinaryExpression(OperatorIds.AND_AND); $break ./ -ConditionalAndExpression_NotName ::= Name '&&' InclusiveOrExpression -/.$putCase consumeBinaryExpressionWithName(OperatorIds.AND_AND); $break ./ -/:$readableName Expression:/ - -ConditionalOrExpression_NotName -> ConditionalAndExpression_NotName -ConditionalOrExpression_NotName ::= ConditionalOrExpression_NotName '||' ConditionalAndExpression -/.$putCase consumeBinaryExpression(OperatorIds.OR_OR); $break ./ -ConditionalOrExpression_NotName ::= Name '||' ConditionalAndExpression -/.$putCase consumeBinaryExpressionWithName(OperatorIds.OR_OR); $break ./ -/:$readableName Expression:/ - -ConditionalExpression_NotName -> ConditionalOrExpression_NotName -ConditionalExpression_NotName ::= ConditionalOrExpression_NotName '?' Expression ':' ConditionalExpression -/.$putCase consumeConditionalExpression(OperatorIds.QUESTIONCOLON) ; $break ./ -ConditionalExpression_NotName ::= Name '?' Expression ':' ConditionalExpression -/.$putCase consumeConditionalExpressionWithName(OperatorIds.QUESTIONCOLON) ; $break ./ -/:$readableName Expression:/ - -AssignmentExpression_NotName -> ConditionalExpression_NotName -AssignmentExpression_NotName -> Assignment -/:$readableName Expression:/ - -Expression_NotName -> AssignmentExpression_NotName -/:$readableName Expression:/ ------------------------------------------------ --- 1.5 features : end of generics ------------------------------------------------ ------------------------------------------------ --- 1.5 features : annotation - Metadata feature jsr175 ------------------------------------------------ -AnnotationTypeDeclarationHeaderName ::= Modifiers '@' PushRealModifiers interface Identifier -/.$putCase consumeAnnotationTypeDeclarationHeaderName() ; $break ./ -/:$compliance 1.5:/ -AnnotationTypeDeclarationHeaderName ::= Modifiers '@' PushRealModifiers interface Identifier TypeParameters -/.$putCase consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters() ; $break ./ -/:$compliance 1.5:/ -AnnotationTypeDeclarationHeaderName ::= '@' PushModifiersForHeader interface Identifier TypeParameters -/.$putCase consumeAnnotationTypeDeclarationHeaderNameWithTypeParameters() ; $break ./ -/:$compliance 1.5:/ -AnnotationTypeDeclarationHeaderName ::= '@' PushModifiersForHeader interface Identifier -/.$putCase consumeAnnotationTypeDeclarationHeaderName() ; $break ./ -/:$readableName AnnotationTypeDeclarationHeaderName:/ -/:$compliance 1.5:/ - -AnnotationTypeDeclarationHeader ::= AnnotationTypeDeclarationHeaderName ClassHeaderExtendsopt ClassHeaderImplementsopt -/.$putCase consumeAnnotationTypeDeclarationHeader() ; $break ./ -/:$readableName AnnotationTypeDeclarationHeader:/ -/:$compliance 1.5:/ - -AnnotationTypeDeclaration ::= AnnotationTypeDeclarationHeader AnnotationTypeBody -/.$putCase consumeAnnotationTypeDeclaration() ; $break ./ -/:$readableName AnnotationTypeDeclaration:/ -/:$compliance 1.5:/ - -AnnotationTypeBody ::= '{' AnnotationTypeMemberDeclarationsopt '}' -/:$readableName AnnotationTypeBody:/ -/:$compliance 1.5:/ - -AnnotationTypeMemberDeclarationsopt ::= $empty -/.$putCase consumeEmptyAnnotationTypeMemberDeclarationsopt() ; $break ./ -/:$compliance 1.5:/ -AnnotationTypeMemberDeclarationsopt ::= NestedType AnnotationTypeMemberDeclarations -/.$putCase consumeAnnotationTypeMemberDeclarationsopt() ; $break ./ -/:$readableName AnnotationTypeMemberDeclarations:/ -/:$compliance 1.5:/ - -AnnotationTypeMemberDeclarations -> AnnotationTypeMemberDeclaration -/:$compliance 1.5:/ -AnnotationTypeMemberDeclarations ::= AnnotationTypeMemberDeclarations AnnotationTypeMemberDeclaration -/.$putCase consumeAnnotationTypeMemberDeclarations() ; $break ./ -/:$readableName AnnotationTypeMemberDeclarations:/ -/:$compliance 1.5:/ - -AnnotationMethodHeaderName ::= Modifiersopt TypeParameters Type 'Identifier' '(' -/.$putCase consumeMethodHeaderNameWithTypeParameters(true); $break ./ -AnnotationMethodHeaderName ::= Modifiersopt Type 'Identifier' '(' -/.$putCase consumeMethodHeaderName(true); $break ./ -/:$readableName MethodHeaderName:/ -/:$compliance 1.5:/ - -AnnotationMethodHeaderDefaultValueopt ::= $empty -/.$putCase consumeEmptyMethodHeaderDefaultValue() ; $break ./ -/:$readableName MethodHeaderDefaultValue:/ -/:$compliance 1.5:/ -AnnotationMethodHeaderDefaultValueopt ::= DefaultValue -/.$putCase consumeMethodHeaderDefaultValue(); $break ./ -/:$readableName MethodHeaderDefaultValue:/ -/:$compliance 1.5:/ - -AnnotationMethodHeader ::= AnnotationMethodHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderExtendedDims AnnotationMethodHeaderDefaultValueopt -/.$putCase consumeMethodHeader(); $break ./ -/:$readableName AnnotationMethodHeader:/ -/:$compliance 1.5:/ - -AnnotationTypeMemberDeclaration ::= AnnotationMethodHeader ';' -/.$putCase consumeAnnotationTypeMemberDeclaration() ; $break ./ -/:$compliance 1.5:/ -AnnotationTypeMemberDeclaration -> ConstantDeclaration -/:$compliance 1.5:/ -AnnotationTypeMemberDeclaration -> ConstructorDeclaration -/:$compliance 1.5:/ -AnnotationTypeMemberDeclaration -> TypeDeclaration -/:$readableName AnnotationTypeMemberDeclaration:/ -/:$compliance 1.5:/ - -DefaultValue ::= 'default' MemberValue -/:$readableName DefaultValue:/ -/:$compliance 1.5:/ - -Annotation -> NormalAnnotation -/:$compliance 1.5:/ -Annotation -> MarkerAnnotation -/:$compliance 1.5:/ -Annotation -> SingleMemberAnnotation -/:$readableName Annotation:/ -/:$compliance 1.5:/ - -AnnotationName ::= '@' Name -/.$putCase consumeAnnotationName() ; $break ./ -/:$readableName AnnotationName:/ -/:$compliance 1.5:/ - -NormalAnnotation ::= AnnotationName '(' MemberValuePairsopt ')' -/.$putCase consumeNormalAnnotation() ; $break ./ -/:$readableName NormalAnnotation:/ -/:$compliance 1.5:/ - -MemberValuePairsopt ::= $empty -/.$putCase consumeEmptyMemberValuePairsopt() ; $break ./ -/:$compliance 1.5:/ -MemberValuePairsopt -> MemberValuePairs -/:$readableName MemberValuePairsopt:/ -/:$compliance 1.5:/ - -MemberValuePairs -> MemberValuePair -/:$compliance 1.5:/ -MemberValuePairs ::= MemberValuePairs ',' MemberValuePair -/.$putCase consumeMemberValuePairs() ; $break ./ -/:$readableName MemberValuePairs:/ -/:$compliance 1.5:/ - -MemberValuePair ::= SimpleName '=' EnterMemberValue MemberValue ExitMemberValue -/.$putCase consumeMemberValuePair() ; $break ./ -/:$readableName MemberValuePair:/ -/:$compliance 1.5:/ - -EnterMemberValue ::= $empty -/.$putCase consumeEnterMemberValue() ; $break ./ -/:$readableName EnterMemberValue:/ -/:$compliance 1.5:/ - -ExitMemberValue ::= $empty -/.$putCase consumeExitMemberValue() ; $break ./ -/:$readableName ExitMemberValue:/ -/:$compliance 1.5:/ - -MemberValue -> ConditionalExpression_NotName -/:$compliance 1.5:/ -MemberValue ::= Name -/.$putCase consumeMemberValueAsName() ; $break ./ -/:$compliance 1.5:/ -MemberValue -> Annotation -/:$compliance 1.5:/ -MemberValue -> MemberValueArrayInitializer -/:$readableName MemberValue:/ -/:$recovery_template Identifier:/ -/:$compliance 1.5:/ - -MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer '{' PushLeftBrace MemberValues ',' '}' -/.$putCase consumeMemberValueArrayInitializer() ; $break ./ -/:$compliance 1.5:/ -MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer '{' PushLeftBrace MemberValues '}' -/.$putCase consumeMemberValueArrayInitializer() ; $break ./ -/:$compliance 1.5:/ -MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer '{' PushLeftBrace ',' '}' -/.$putCase consumeEmptyMemberValueArrayInitializer() ; $break ./ -/:$compliance 1.5:/ -MemberValueArrayInitializer ::= EnterMemberValueArrayInitializer '{' PushLeftBrace '}' -/.$putCase consumeEmptyMemberValueArrayInitializer() ; $break ./ -/:$readableName MemberValueArrayInitializer:/ -/:$compliance 1.5:/ - -EnterMemberValueArrayInitializer ::= $empty -/.$putCase consumeEnterMemberValueArrayInitializer() ; $break ./ -/:$readableName EnterMemberValueArrayInitializer:/ -/:$compliance 1.5:/ - -MemberValues -> MemberValue -/:$compliance 1.5:/ -MemberValues ::= MemberValues ',' MemberValue -/.$putCase consumeMemberValues() ; $break ./ -/:$readableName MemberValues:/ -/:$compliance 1.5:/ - -MarkerAnnotation ::= AnnotationName -/.$putCase consumeMarkerAnnotation() ; $break ./ -/:$readableName MarkerAnnotation:/ -/:$compliance 1.5:/ - -SingleMemberAnnotationMemberValue ::= MemberValue -/.$putCase consumeSingleMemberAnnotationMemberValue() ; $break ./ -/:$readableName MemberValue:/ -/:$compliance 1.5:/ - -SingleMemberAnnotation ::= AnnotationName '(' SingleMemberAnnotationMemberValue ')' -/.$putCase consumeSingleMemberAnnotation() ; $break ./ -/:$readableName SingleMemberAnnotation:/ -/:$compliance 1.5:/ --------------------------------------- --- 1.5 features : end of annotation -- --------------------------------------- - ------------------------------------ --- 1.5 features : recovery rules -- ------------------------------------ -RecoveryMethodHeaderName ::= Modifiersopt TypeParameters Type 'Identifier' '(' -/.$putCase consumeRecoveryMethodHeaderNameWithTypeParameters(); $break ./ -/:$compliance 1.5:/ -RecoveryMethodHeaderName ::= Modifiersopt Type 'Identifier' '(' -/.$putCase consumeRecoveryMethodHeaderName(); $break ./ -/:$readableName MethodHeaderName:/ - -RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderExtendedDims AnnotationMethodHeaderDefaultValueopt -/.$putCase consumeMethodHeader(); $break ./ -RecoveryMethodHeader ::= RecoveryMethodHeaderName FormalParameterListopt MethodHeaderRightParen MethodHeaderExtendedDims MethodHeaderThrowsClause -/.$putCase consumeMethodHeader(); $break ./ -/:$readableName MethodHeader:/ ------------------------------------ --- 1.5 features : recovery rules -- ------------------------------------ - -/. } -}./ - -$names - -PLUS_PLUS ::= '++' -MINUS_MINUS ::= '--' -EQUAL_EQUAL ::= '==' -LESS_EQUAL ::= '<=' -GREATER_EQUAL ::= '>=' -NOT_EQUAL ::= '!=' -LEFT_SHIFT ::= '<<' -RIGHT_SHIFT ::= '>>' -UNSIGNED_RIGHT_SHIFT ::= '>>>' -PLUS_EQUAL ::= '+=' -MINUS_EQUAL ::= '-=' -MULTIPLY_EQUAL ::= '*=' -DIVIDE_EQUAL ::= '/=' -AND_EQUAL ::= '&=' -OR_EQUAL ::= '|=' -XOR_EQUAL ::= '^=' -REMAINDER_EQUAL ::= '%=' -LEFT_SHIFT_EQUAL ::= '<<=' -RIGHT_SHIFT_EQUAL ::= '>>=' -UNSIGNED_RIGHT_SHIFT_EQUAL ::= '>>>=' -OR_OR ::= '||' -AND_AND ::= '&&' -PLUS ::= '+' -MINUS ::= '-' -NOT ::= '!' -REMAINDER ::= '%' -XOR ::= '^' -AND ::= '&' -MULTIPLY ::= '*' -OR ::= '|' -TWIDDLE ::= '~' -DIVIDE ::= '/' -GREATER ::= '>' -LESS ::= '<' -LPAREN ::= '(' -RPAREN ::= ')' -LBRACE ::= '{' -RBRACE ::= '}' -LBRACKET ::= '[' -RBRACKET ::= ']' -SEMICOLON ::= ';' -QUESTION ::= '?' -COLON ::= ':' -COMMA ::= ',' -DOT ::= '.' -EQUAL ::= '=' -AT ::= '@' -ELLIPSIS ::= '...' - -$end --- need a carriage return after the $end diff --git a/org.eclipse.jdt.core/schema/codeFormatter.exsd b/org.eclipse.jdt.core/schema/codeFormatter.exsd index c718c46c5..4cf5cbfb6 100644 --- a/org.eclipse.jdt.core/schema/codeFormatter.exsd +++ b/org.eclipse.jdt.core/schema/codeFormatter.exsd @@ -1,103 +1,103 @@ -<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.jdt.core" xmlns="http://www.w3.org/2001/XMLSchema">
-<annotation>
- <appInfo>
- <meta.schema plugin="org.eclipse.jdt.core" id="codeFormatter" name="Code Formatters"/>
- </appInfo>
- <documentation>
- This extension point allows clients to contribute new source code formatter implementations.
- </documentation>
- </annotation>
-
- <element name="extension">
- <annotation>
- <appInfo>
- <meta.element deprecated="true" />
- </appInfo>
- </annotation>
- <complexType>
- <sequence>
- <element ref="codeFormatter" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- <attribute name="point" type="string" use="required">
- <annotation>
- <documentation>
- a fully qualified identifier of the target extension point
- </documentation>
- </annotation>
- </attribute>
- <attribute name="id" type="string">
- <annotation>
- <documentation>
- an optional identifier of the extension instance
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string">
- <annotation>
- <documentation>
- an optional name of the extension instance
- </documentation>
- <appInfo>
- <meta.attribute translatable="true"/>
- </appInfo>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="codeFormatter">
- <complexType>
- <attribute name="class" type="string" use="required">
- <annotation>
- <documentation>
- the class that defines the code formatter implementation. This class must be a public implementation of <code>org.eclipse.jdt.core.ICodeFormatter</code> with a public 0-argument constructor.
- </documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <annotation>
- <appInfo>
- <meta.section type="since"/>
- </appInfo>
- <documentation>
- 2.0
- </documentation>
- </annotation>
-
- <annotation>
- <appInfo>
- <meta.section type="examples"/>
- </appInfo>
- <documentation>
+<?xml version='1.0' encoding='UTF-8'?> +<!-- Schema file written by PDE --> +<schema targetNamespace="org.eclipse.jdt.core" xmlns="http://www.w3.org/2001/XMLSchema"> +<annotation> + <appInfo> + <meta.schema plugin="org.eclipse.jdt.core" id="codeFormatter" name="Code Formatters"/> + </appInfo> + <documentation> + This extension point allows clients to contribute new source code formatter implementations. + </documentation> + </annotation> + + <element name="extension"> + <annotation> + <appInfo> + <meta.element deprecated="true" /> + </appInfo> + </annotation> + <complexType> + <sequence> + <element ref="codeFormatter" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + <attribute name="point" type="string" use="required"> + <annotation> + <documentation> + a fully qualified identifier of the target extension point + </documentation> + </annotation> + </attribute> + <attribute name="id" type="string"> + <annotation> + <documentation> + an optional identifier of the extension instance + </documentation> + </annotation> + </attribute> + <attribute name="name" type="string"> + <annotation> + <documentation> + an optional name of the extension instance + </documentation> + <appInfo> + <meta.attribute translatable="true"/> + </appInfo> + </annotation> + </attribute> + </complexType> + </element> + + <element name="codeFormatter"> + <complexType> + <attribute name="class" type="string" use="required"> + <annotation> + <documentation> + the class that defines the code formatter implementation. This class must be a public implementation of <code>org.eclipse.jdt.core.ICodeFormatter</code> with a public 0-argument constructor. + </documentation> + </annotation> + </attribute> + </complexType> + </element> + + <annotation> + <appInfo> + <meta.section type="since"/> + </appInfo> + <documentation> + 2.0 + </documentation> + </annotation> + + <annotation> + <appInfo> + <meta.section type="examples"/> + </appInfo> + <documentation> Example of an implementation of <code>ICodeFormatter</code>: <pre> <extension point="org.eclipse.jdt.core.codeFormatter"> <codeFormatter class="com.example.MyCodeFormatter"/> </extension> -</pre>
- </documentation>
- </annotation>
-
-
-
- <annotation>
- <appInfo>
- <meta.section type="copyright"/>
- </appInfo>
- <documentation>
- Copyright (c) 2000, 2010 IBM Corporation and others.<br>
-
-This program and the accompanying materials are made
-available under the terms of the Eclipse Public License 2.0 which accompanies
-this distribution, and is available at <a
-href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-v20.html</a>/
-
-SPDX-License-Identifier: EPL-2.0
- </documentation>
- </annotation>
-
-</schema>
+</pre> + </documentation> + </annotation> + + + + <annotation> + <appInfo> + <meta.section type="copyright"/> + </appInfo> + <documentation> + Copyright (c) 2000, 2010 IBM Corporation and others.<br> + +This program and the accompanying materials are made +available under the terms of the Eclipse Public License 2.0 which accompanies +this distribution, and is available at <a +href="https://www.eclipse.org/legal/epl-2.0">https://www.eclipse.org/legal/epl-v20.html</a>/ + +SPDX-License-Identifier: EPL-2.0 + </documentation> + </annotation> + +</schema> diff --git a/org.eclipse.jdt.core/schema/compiler.dtd b/org.eclipse.jdt.core/schema/compiler.dtd index 4cc5e1306..bb57d15ab 100644 --- a/org.eclipse.jdt.core/schema/compiler.dtd +++ b/org.eclipse.jdt.core/schema/compiler.dtd @@ -42,11 +42,11 @@ infos CDATA #REQUIRED > <!ATTLIST tasks tasks CDATA #REQUIRED> -<!ATTLIST problem charEnd CDATA #REQUIRED - charStart CDATA #REQUIRED - severity CDATA #REQUIRED - line CDATA #REQUIRED - id CDATA #REQUIRED +<!ATTLIST problem charEnd CDATA #REQUIRED + charStart CDATA #REQUIRED + severity CDATA #REQUIRED + line CDATA #REQUIRED + id CDATA #REQUIRED problemID CDATA #IMPLIED optionKey CDATA #IMPLIED categoryID CDATA #IMPLIED @@ -63,9 +63,9 @@ sourceStart CDATA #REQUIRED sourceEnd CDATA #REQUIRED > -<!ATTLIST task charEnd CDATA #REQUIRED - charStart CDATA #REQUIRED - line CDATA #REQUIRED +<!ATTLIST task charEnd CDATA #REQUIRED + charStart CDATA #REQUIRED + line CDATA #REQUIRED optionKey CDATA #IMPLIED > <!ATTLIST classfile path CDATA #REQUIRED> |