Skip to content

Commit 0c83985

Browse files
committed
Improving the Java18 grammar
1 parent 0a9fd1a commit 0c83985

File tree

2 files changed

+6
-48
lines changed

2 files changed

+6
-48
lines changed

src/lang/java/syntax/Java18.rsc

+5-47
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,10 @@ syntax IntegralType = "byte"
5353
syntax FloatingPointType = "float" | "double" ;
5454

5555
syntax ReferenceType = ClassOrInterfaceType
56-
// | TypeVariable
5756
| arrayType: ArrayType
5857
;
5958

6059
syntax ClassOrInterfaceType = ClassType
61-
// | InterfaceType
6260
;
6361

6462
syntax ClassType = Annotation* Identifier TypeArguments?
@@ -70,7 +68,6 @@ syntax TypeVariable = Annotation* Identifier;
7068

7169
syntax ArrayType = PrimitiveType Dims
7270
| ClassOrInterfaceType Dims
73-
//| TypeVariable Dims
7471
;
7572

7673
syntax Dims = Annotation* "[" "]" (Annotation* "[" "]")*;
@@ -80,7 +77,6 @@ syntax TypeParameter = typeParameter: TypeParameterModifier* Identifier TypeBoun
8077
syntax TypeParameterModifier = Annotation;
8178

8279
syntax TypeBound = "extends" { ClassOrInterfaceType "&" }+
83-
// | "extends" ClassOrInterfaceType AdditionalBound*
8480
;
8581

8682
syntax AdditionalBound = "&" InterfaceType ;
@@ -219,12 +215,10 @@ syntax UnannPrimitiveType = NumericType
219215
;
220216

221217
syntax UnannReferenceType = UnannClassOrInterfaceType
222-
// | UnannTypeVariable
223218
| UnannArrayType
224219
;
225220

226221
syntax UnannClassOrInterfaceType = UnannClassType
227-
// | UnannInterfaceType
228222
;
229223

230224
syntax UnannClassType = Identifier TypeArguments?
@@ -236,7 +230,6 @@ syntax UnannTypeVariable = Identifier ;
236230

237231
syntax UnannArrayType = UnannPrimitiveType Dims
238232
| UnannClassOrInterfaceType Dims
239-
// |UnannTypeVariable Dims
240233
;
241234

242235
syntax MethodDeclaration = methodDeclaration: MethodModifier* MethodHeader MethodBody ;
@@ -262,8 +255,6 @@ syntax Result = UnannType
262255
;
263256

264257

265-
// syntax MethodDeclarator = methodDeclarator: Identifier "(" FormalParameterList? pmts ")" Dims? ;
266-
267258
syntax MethodDeclarator = Identifier "(" ")" Dims?
268259
| Identifier "(" LastFormalParameter ")" Dims?
269260
| Identifier "(" {FormalParameter ","}+ ("," LastFormalParameter)?")" Dims?
@@ -272,7 +263,6 @@ syntax MethodDeclarator = Identifier "(" ")" Dims?
272263
syntax FormalParameterList = FormalParameters ;
273264

274265
syntax FormalParameters = formalParameter : FormalParameter ("," FormalParameters)?
275-
// | receiveParameter: ReceiverParameter (", FormalParameter)*
276266
| lastFormalParameter: LastFormalParameter
277267
;
278268

@@ -288,35 +278,11 @@ syntax VariableModifier = Annotation
288278
| "final"
289279
;
290280

291-
//syntax MethodDeclarator = Identifier "(" FormalParameterList? ")" Dims? ;
292-
//
293-
////syntax FormalParameterList = ReceiverParameter
294-
//// | FormalParameters "," LastFormalParameter
295-
//// | LastFormalParameter
296-
//// ;
297-
//syntax FormalParameterList = {FormalParameter ","}+;
298-
//
299-
//
300-
//syntax FormalParameters = {FormalParameter ","}+
301-
// | ReceiverParameter ("," FormalParameter)*
302-
// ;
303-
//
304-
//syntax FormalParameter = VariableModifier* UnannType VariableDeclaratorId ;
305-
//
306-
//syntax VariableModifier = Annotation
307-
// | "final"
308-
// ;
309-
//
310-
//syntax LastFormalParameter = VariableModifier* UnannType Annotation* "..." VariableDeclaratorId
311-
// | FormalParameter
312-
// ;
313-
//
314-
//syntax ReceiverParameter = Annotation* UnannType (Identifier ".")? "this" ;
281+
315282

316283
syntax Throws = "throws" { ExceptionType "," }+;
317284

318285
syntax ExceptionType = ClassType
319-
// | TypeVariable
320286
;
321287

322288

@@ -378,13 +344,12 @@ syntax InterfaceModifier = Annotation
378344

379345
syntax ExtendsInterfaces = "extends" {InterfaceType ","}+ ;
380346

381-
syntax InterfaceBody = "{" InterfaceMemberDeclaration* "}" ;
347+
syntax InterfaceBody = "{" InterfaceMemberDeclaration* "}" ";"* ;
382348

383349
syntax InterfaceMemberDeclaration = ConstantDeclaration
384350
| InterfaceMethodDeclaration
385351
| ClassDeclaration
386352
| InterfaceDeclaration
387-
// | ";"
388353
;
389354

390355
syntax ConstantDeclaration = ConstantModifier* UnannType VariableDeclaratorList ";" ;
@@ -413,7 +378,7 @@ syntax AnnotationTypeMemberDeclaration = AnnotationTypeElementDeclaration
413378
| ConstantDeclaration
414379
| ClassDeclaration
415380
| InterfaceDeclaration
416-
// | InterfaceMemberDeclaration
381+
| InterfaceMethodDeclaration
417382
// | ";"
418383
;
419384

@@ -424,7 +389,7 @@ syntax AnnotationTypeElementModifier = Annotation
424389
| "abstract"
425390
;
426391

427-
syntax DefaultValue = "default" ElementValue ;
392+
syntax DefaultValue = "default" ElementValue ";"*;
428393

429394
syntax Annotation = NormalAnnotation
430395
| MarkerAnnotation
@@ -439,7 +404,7 @@ syntax ElementValuePair = Identifier "=" ElementValue ;
439404

440405
syntax ElementValue = ConditionalExpression
441406
| ElementValueArrayInitializer
442-
| Annotation
407+
| Annotation
443408
;
444409

445410
syntax ElementValueArrayInitializer = "{" ElementValueList? ","? "}" ;
@@ -543,7 +508,6 @@ syntax SwitchBlockStatementGroup = SwitchLabels BlockStatements ;
543508
syntax SwitchLabels = SwitchLabel+ ;
544509

545510
syntax SwitchLabel = "case" ConstantExpression ":"
546-
// | "case" EnumConstantName ":"
547511
| "default" ":"
548512
;
549513

@@ -653,7 +617,6 @@ syntax ClassOrInterfaceTypeToInstantiate = {AnnotatedType "."}* TypeArgumentsOrD
653617
syntax AnnotatedType = Annotation* Identifier ;
654618

655619
syntax TypeArgumentsOrDiamond = TypeArguments
656-
// | "\<" "\>"
657620
;
658621

659622
syntax FieldAccess = Primary "." Identifier
@@ -666,7 +629,6 @@ syntax ArrayAccess = ExpressionName "[" Expression "]"
666629
;
667630

668631
syntax MethodInvocation = MethodName "(" ArgumentList? ")"
669-
//| TypeName "." TypeArguments? Identifier "(" ArgumentList? ")"
670632
| ExpressionName "." TypeArguments? Identifier "(" ArgumentList? ")"
671633
| Primary "." TypeArguments? Identifier "(" ArgumentList? ")"
672634
| "super" "." TypeArguments? Identifier "(" ArgumentList? ")"
@@ -676,7 +638,6 @@ syntax MethodInvocation = MethodName "(" ArgumentList? ")"
676638
syntax ArgumentList = { Expression "," }+ ;
677639

678640
syntax MethodReference = ExpressionName "::" TypeArguments? Identifier
679-
// ReferenceType "::" TypeArguments? Identifier
680641
| Primary "::" TypeArguments? Identifier
681642
| "super" "::" TypeArguments? Identifier
682643
| TypeName "." "super" "::" TypeArguments? Identifier
@@ -694,9 +655,6 @@ syntax DimExprs = DimExpr+ ;
694655

695656
syntax DimExpr = Annotation* "[" Expression "]" ;
696657

697-
//syntax Expression = LambdaExpression
698-
// | AssignmentExpression
699-
// ;
700658

701659
syntax Expression = LambdaExpression
702660
| AssignmentExpression

src/tests/Parser.rsc

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ list[loc] listJavaFiles(loc location) {
5656
res = res + (listJavaFiles(l));
5757
}
5858
else {
59-
if(l.extension == "java") {
59+
if(l.extension == "java" && l.file != "package-info.java") {
6060
res = l + res;
6161
};
6262
};

0 commit comments

Comments
 (0)