Skip to content

MethodDeclarations.sdf3

pdmosses/java-front/lang.java/syntax/java/classes/MethodDeclarations.sdf3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
module 

// 8.4. Method Declarations
imports
  java/classes/FieldDeclarations
  java/types/ReferenceTypes
  java/classes/ClassDeclarations
  java/lexical/Identifiers
  java/lexical/Modifiers
  java/interfaces/Annotations
  java/statements/Blocks

context-free sorts

  MethodDeclaration
  
  
  
  ExceptionType
  MethodModifier
  
  
  
  
  
  

context-free syntax

  MethodDeclaration.MethodDecl = <
  <{MethodModifier " "}*> <MethodHeader> <MethodBody>>

  .MethodHeader = <
  <Result> <Id>(<FormalParams>) <AnnotatedDimsEmpty> <Throws?>>

  .MethodHeaderTypeParameters = <
  <TypeParameters> <{Annotation " "}*> <Result> <Id>(<FormalParams>) <Throws?>>

   = UnannType
  .Void = "void"

  .ThrowsDec = <throws <{ExceptionType ", "}+>>
  ExceptionType    = ClassType

  MethodModifier = Annotation
  MethodModifier = Public
  MethodModifier = Protected
  MethodModifier = Private
  MethodModifier = Abstract
  MethodModifier = Static
  MethodModifier = Final
  MethodModifier = Synchronized
  MethodModifier = Native
  MethodModifier = Strictfp

           = Block
  .NoMethodBody = ";"

  .ReceiverParamQual = <<{Annotation " "}*> <UnannType> <Id>.this>
  .ReceiverParam     = <<{Annotation " "}*> <UnannType> this>

  .NoParams          = 
                     = ReceiverParam
  .SingleParam       = LastFormalParam
  .ParamList         = <<{FormalParam ","}+>, <LastFormalParam>>
  .ReceiverParamList = <<ReceiverParam>, <{FormalParam ","}*>, <LastFormalParam>>

          = FormalParam
  .VarArityParam = <<{VariableModifier " "}*> <UnannType> <{Annotation " "}*> ... <VarDeclId>>

  .FormalParam = <<{VariableModifier " "}*> <UnannType> <VarDeclId>>

   = Annotation
   = Final