Second, Mini Java's literary law
BNF
Goal :: = mainclass (typeDeclaration) * Mainclass :: = "Class" Identifier "{" "public" "static" "Void" "" "" "" "[" "" "" Identifier ") "" { "PrintStatement"} ""} "TypeDeclaration :: = ClassDeclaration | ClassExtendsDeclarationClassDeclaration :: =" class "Identifier" { "(VarDeclaration) * (MethodDeclaration) *"} "ClassExtendsDeclaration :: =" class "Identifier" extends " Identifier "{" * "}" vardeclarative :: = type Identifier ";" MethodDeclaration :: = ")" {"" "{" "" {"" "{" (Statement) * "return" Expression ";" "}" FormalParameterList :: = FormalParameter (FormalParameterRest) * FormalParameter :: = Type IdentifierFormalParameterRest :: = "," FormalParameterType :: = ArrayType | BooleanType | IntegerType | IdentifierArrayType :: = " INT "" ["" "" BooleantYpe :: = "Boolean" Integertype :: = "INT" statement :: = block | assignmentStatement | ArrayassignmentState | IFStatement | Whilestatement | PrintStatementB Lock :: = "{" (statement) * "}" }SignmentStatement :: = Identifier "=" expression ";" arrayassterial "[" expression "]" = "expression"; "ifstate :: =" IF "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""