Skip to content

Instantly share code, notes, and snippets.

@fluiddynamics
Last active April 20, 2017 21:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fluiddynamics/cf094a31e671a789515bcdd81753916f to your computer and use it in GitHub Desktop.
Save fluiddynamics/cf094a31e671a789515bcdd81753916f to your computer and use it in GitHub Desktop.
Java syntax
/*
http://docs.oracle.com/javase/specs/jls/se8/html/jls-19.html
  http://www.bottlecaps.de/rr/ui
*/
ClassDeclaration ::= NormalClassDeclaration | EnumDeclaration
NormalClassDeclaration ::= ClassModifier* 'class' Identifier TypeParameters? Superclass? Superinterfaces? ClassBody
ClassModifier ::= Annotation | 'public' |'protected' | 'private' | 'abstract' | 'static' | 'final' | 'strictfp'
ClassBody ::= '{' ClassBodyDeclaration* '}'
ClassBodyDeclaration ::= ClassMemberDeclaration | InstanceInitializer | StaticInitializer | ConstructorDeclaration
ClassMemberDeclaration ::= FieldDeclaration | MethodDeclaration | ClassDeclaration | InterfaceDeclaration | ';'
FieldDeclaration ::= FieldModifier* UnannType VariableDeclaratorList ';'
FieldModifier ::= Annotation | 'public' | 'protected' | 'private' | 'static' | 'final' | 'transient' | 'volatile'
MethodDeclaration ::= MethodModifier* MethodHeader MethodBody
MethodModifier ::= Annotation | 'public' | 'protected' | 'private' | 'abstract' | 'static' | 'final' | 'synchronized' | 'native' | 'strictfp'
MethodHeader ::= Result MethodDeclarator Throws?
| TypeParameters Annotation* Result MethodDeclarator Throws?
Result ::= UnannType | 'void'
UnannType ::= UnannPrimitiveType | UnannReferenceType
UnannPrimitiveType ::= NumericType | 'boolean'
UnannReferenceType ::= UnannClassOrInterfaceType | UnannTypeVariable | UnannArrayType
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment