Skip to content

Commit 0c1c8db

Browse files
committed
inlining/refactoring to clean up and make more readable
1 parent ef3613f commit 0c1c8db

File tree

1 file changed

+15
-34
lines changed

1 file changed

+15
-34
lines changed

java/Java.g4

Lines changed: 15 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -41,35 +41,26 @@
4141
grammar Java;
4242

4343
// starting point for parsing a java file
44-
/* The annotations are separated out to make parsing faster, but must be associated with
45-
a packageDeclaration or a typeDeclaration (and not an empty one). */
4644
compilationUnit
47-
: annotations
48-
( packageDeclaration importDeclaration* typeDeclaration*
49-
| classOrInterfaceDeclaration typeDeclaration*
50-
)
51-
EOF
52-
| packageDeclaration? importDeclaration* typeDeclaration*
53-
EOF
45+
: packageDeclaration? importDeclaration* typeDeclaration* EOF
5446
;
5547

5648
packageDeclaration
57-
: 'package' qualifiedName ';'
49+
: annotation* 'package' qualifiedName ';'
5850
;
59-
51+
6052
importDeclaration
6153
: 'import' 'static'? qualifiedName ('.' '*')? ';'
6254
;
6355

6456
typeDeclaration
65-
: classOrInterfaceDeclaration
57+
: classOrInterfaceModifier* classDeclaration
58+
| classOrInterfaceModifier* enumDeclaration
59+
| classOrInterfaceModifier* interfaceDeclaration
60+
| classOrInterfaceModifier* annotationTypeDeclaration
6661
| ';'
6762
;
6863

69-
classOrInterfaceDeclaration
70-
: classOrInterfaceModifier* (classDeclaration | interfaceDeclaration)
71-
;
72-
7364
classOrInterfaceModifier
7465
: annotation // class or interface
7566
| ( 'public' // class or interface
@@ -83,11 +74,6 @@ classOrInterfaceModifier
8374
;
8475

8576
classDeclaration
86-
: normalClassDeclaration
87-
| enumDeclaration
88-
;
89-
90-
normalClassDeclaration
9177
: 'class' Identifier typeParameters?
9278
('extends' type)?
9379
('implements' typeList)?
@@ -116,19 +102,14 @@ enumConstants
116102
;
117103

118104
enumConstant
119-
: annotations? Identifier arguments? classBody?
105+
: annotation* Identifier arguments? classBody?
120106
;
121107

122108
enumBodyDeclarations
123109
: ';' (classBodyDeclaration)*
124110
;
125111

126112
interfaceDeclaration
127-
: normalInterfaceDeclaration
128-
| annotationTypeDeclaration
129-
;
130-
131-
normalInterfaceDeclaration
132113
: 'interface' Identifier typeParameters? ('extends' typeList)? interfaceBody
133114
;
134115

@@ -156,7 +137,9 @@ memberDecl
156137
| 'void' Identifier voidMethodDeclaratorRest
157138
| Identifier constructorDeclaratorRest
158139
| interfaceDeclaration
140+
| annotationTypeDeclaration
159141
| classDeclaration
142+
| enumDeclaration
160143
;
161144

162145
memberDeclaration
@@ -186,7 +169,9 @@ interfaceMemberDecl
186169
| interfaceGenericMethodDecl
187170
| 'void' Identifier voidInterfaceMethodDeclaratorRest
188171
| interfaceDeclaration
172+
| annotationTypeDeclaration
189173
| classDeclaration
174+
| enumDeclaration
190175
;
191176

192177
interfaceMethodOrFieldDecl
@@ -365,10 +350,6 @@ literal
365350

366351
// ANNOTATIONS
367352

368-
annotations
369-
: annotation+
370-
;
371-
372353
annotation
373354
: '@' annotationName ( '(' ( elementValuePairs | elementValue )? ')' )?
374355
;
@@ -410,8 +391,8 @@ annotationTypeElementDeclaration
410391

411392
annotationTypeElementRest
412393
: type annotationMethodOrConstantRest ';'
413-
| normalClassDeclaration ';'?
414-
| normalInterfaceDeclaration ';'?
394+
| classDeclaration ';'?
395+
| interfaceDeclaration ';'?
415396
| enumDeclaration ';'?
416397
| annotationTypeDeclaration ';'?
417398
;
@@ -441,8 +422,8 @@ block
441422

442423
blockStatement
443424
: localVariableDeclarationStatement
444-
| classOrInterfaceDeclaration
445425
| statement
426+
| typeDeclaration
446427
;
447428

448429
localVariableDeclarationStatement

0 commit comments

Comments
 (0)