In: Computer Science
Write the BNF for mini Java language based of the following information:
Data Types
Complex Data Structures
Methods
Program
Statements
Statement Blocks
Types
Type:
PrimitiveType
ReferenceType
PrimitiveType:
int
boolean
ReferenceType:
ClassType
ArrayType
ClassType:
Name
ArrayType:
PrimitiveType [ ]
ClassType [ ]
ArrayType [ ]
Names
Name:
SimpleName
QualifiedName
SimpleName:
Identifier
QualifiedName:
Name . Identifier
Packages
CompilationUnit:
TypeDeclaration*
TypeDeclaration:
ClassDeclaration
;
Modifiers
Modifiers:
Modifier*
Modifier:
public
static
native
Classes
Class Declaration
ClassDeclaration:
class Identifier Superopt ClassBody
Super:
extends ClassType
ClassBody:
{ ClassMemberDeclaration* }
ClassMemberDeclaration:
FieldDeclaration
MethodDeclaration
Field Declarations
FieldDeclaration:
Modifiers Type IdentifierList ;
IdentifierList:
Identifier
IdentifierList , Identifier
Method Declarations
MethodDeclaration:
MethodHeader MethodBody
MethodHeader:
Modifiers Type MethodDeclarator Throwsopt
Modifiers void MethodDeclarator Throwsopt
MethodDeclarator:
Identifier ( FormalParameterListopt )
FormalParameterList:
FormalParameter
FormalParameterList , FormalParameter
FormalParameter:
Type Identifier
Throws:
throws ClassType
MethodBody:
Block
;
Blocks and Statements
Block:
{ BlockStatement* }
BlockStatement:
LocalVariableDeclarationStatement
Statement
LocalVariableDeclarationStatement:
LocalVariableDeclaration ;
LocalVariableDeclaration:
Type VariableDeclarators
VariableDeclarators:
VariableDeclarator
VariableDeclarators , VariableDeclarator
VariableDeclarator:
Identifier
Identifier = Expression
Statement:
Block
ExpressionStatement
IfThenStatement
IfThenElseStatement
WhileStatement
DoWhileStatement
ReturnStatement
BreakStatement
ContinueStatement
ForStatement
ExpressionStatement:
StatementExpressionopt ;
StatementExpression:
Expression
IfThenStatement:
if ( Expression ) Statement
IfThenElseStatement:
if ( Expression ) Statement else Statement
WhileStatement:
while ( Expression ) Statement
DoWhileStatement:
do Statement while ( Expression ) ;
ReturnStatement:
return Expressionopt ;
BreakStatement:
break ;
ContinueStatement:
continue ;
ForStatement:
for ( ForInitopt ; Expressionopt ; ForUpdateopt ) Statement
ForInit:
StatementExpressionList
LocalVariableDeclaration
ForUpdate:
StatementExpressionList
StatementExpressionList:
StatementExpression
StatementExpressionList , StatementExpression
Expressions
Expression:
ConditionalExpression
AssignmentExpression
AssignmentExpression:
ConditionalExpression = Expression
ConditionalExpression:
InfixExpression
InfixExpression ? Expression : ConditionalExpression
InfixExpression:
PrefixExpression
InfixExpression InfixOp PrefixExpression
InfixOp:
||
&&
==
!=
<
>
<=
>=
+
-
*
/
PrefixExpression:
PrefixOp PrefixExpression
PostfixExpression
PrefixOp:
-
!
PostfixExpression:
Primary Suffix*
Suffix:
ArrayAccess
FieldAccess
MethodInvocation
ArrayAccess:
[ Expression ]
Selector:
. Identifier
FieldAccess:
Selector
MethodInvocation:
Selector ( ArgumentListopt )
ArgumentList:
Expression
ArgumentList , Expression
Primary:
( Expression )
this
Literal
Identifier
super FieldAccess
super MethodInvocation
ClassInstanceCreationExpression
ArrayCreationExpression
ClassInstanceCreationExpression:
new ClassType ( )
ArrayCreationExpression:
new PrimitiveType [ Expression ] Dimension*
new ClassType [ Expression ] Dimension*
Dimension:
[ ]