MiniJava的语法

MiniJava语言参考。引用自 Modern Compiler Implementation in Java, Second Edition,Appendix A, Page 484-486。

下面是MiniJava语法的EBNF。粗体蓝色的表示terminals,斜体的是non-terminals。星号(*)表示出现0或多次。
引用
ProgramMainClass ClassDecl*
MainClassclass id { public static void main(String[ ] id) { Statement* } }
ClassDeclclass id { VarDecl* MethodDecl* }
_________class id extends id { VarDecl* MethodDecl* }
VarDeclType id ;
MethodDeclpublic Type id ( FormalList ) { VarDecl* Statement* return Exp; }
FormalListType id FormalRest*
_________
FormalRest, Type id
Typeint[]
____boolean
____int
____id
Statement{ Statement* }
_________if ( Exp ) Statement else Statement
_________while ( Exp ) Statement
_________System.out.println(Exp);
_________id = Exp;
_________id[Exp] = Exp;
ExpExp op Exp
___Exp [Exp]
___Exp .length
___Exp . id (ExpList)
___INTEGER_LITERAL
___true
___false
___id
___this
___new int[Exp]
___new id( )
___!Exp
___(Exp)
ExpListExp ExpRest*
_______
ExpRest, Exp

(注释: op表示二元运算符,可以是: && < + - *的任意一个;
.length只能作用于 int[]类型的变量上。)

本来是想找找比较简单的实例,看看别人是如何实现类(class)的作用域的。然而这MiniJava真作 弊,居然强制要求变量声明在方法声明之前,于是我遇到的问题在一定程度上给避开了。Hmm……我再想想看怎么办好……

你可能感兴趣的:(java)