二、Mini Java的文法
BNF
Goal
::=
MainClass ( TypeDeclaration )* <EOF>
MainClass
::=
"class" Identifier "{" "public" "static" "void" "main" "(" "String" "[" "]" Identifier ")" "{" PrintStatement "}" "}"
TypeDeclaration
::=
ClassDeclaration
|
ClassExtendsDeclaration
ClassDeclaration
::=
"class" Identifier "{" ( VarDeclaration )* ( MethodDeclaration )* "}"
ClassExtendsDeclaration
::=
"class" Identifier "extends" Identifier "{" ( VarDeclaration )* ( MethodDeclaration )* "}"
VarDeclaration
::=
Type Identifier ";"
MethodDeclaration
::=
"public" Type Identifier "(" ( FormalParameterList )? ")" "{" ( VarDeclaration )* ( Statement )* "return" Expression ";" "}"
FormalParameterList
::=
FormalParameter ( FormalParameterRest )*
FormalParameter
::=
Type Identifier
FormalParameterRest
::=
"," FormalParameter
Type
::=
ArrayType
|
BooleanType
|
IntegerType
|
Identifier
ArrayType
::=
"int" "[" "]"
BooleanType
::=
"boolean"
IntegerType
::=
"int"
Statement
::=
Block
|
AssignmentStatement
|
ArrayAssignmentStatement
|
IfStatement
|
WhileStatement
|
PrintStatement
Block
::=
"{" ( Statement )* "}"
AssignmentStatement
::=
Identifier "=" Expression ";"
ArrayAssignmentStatement
::=
Identifier "[" Expression "]" "=" Expression ";"
IfStatement
::=
"if" "(" Expression ")" Statement "else" Statement
WhileStatement
::=
"while" "(" Expression ")" Statement
PrintStatement
::=
"System.out.println" "(" Expression ")" ";"
Expression
::=
AndExpression
|
CompareExpression
|
PlusExpression
|
MinusExpression
|
TimesExpression
|
ArrayLookup
|
ArrayLength
|
MessageSend
|
PrimaryExpression
AndExpression
::=
PrimaryExpression "&&" PrimaryExpression
CompareExpression
::=
PrimaryExpression "<" PrimaryExpression
PlusExpression
::=
PrimaryExpression "+" PrimaryExpression
MinusExpression
::=
PrimaryExpression "-" PrimaryExpression
TimesExpression
::=
PrimaryExpression "*" PrimaryExpression
ArrayLookup
::=
PrimaryExpression "[" PrimaryExpression "]"
ArrayLength
::=
PrimaryExpression "." "length"
MessageSend
::=
PrimaryExpression "." Identifier "(" ( ExpressionList )? ")"
ExpressionList
::=
Expression ( ExpressionRest )*
ExpressionRest
::=
"," Expression
PrimaryExpression
::=
IntegerLiteral
|
TrueLiteral
|
FalseLiteral
|
Identifier
|
ThisExpression
|
ArrayAllocationExpression
|
AllocationExpression
|
NotExpression
|
BracketExpression
IntegerLiteral
::=
<INTEGER_LITERAL>
TrueLiteral
::=
"true"
FalseLiteral
::=
"false"
Identifier
::=
<IDENTIFIER>
ThisExpression
::=
"this"
ArrayAllocationExpression
::=
"new" "int" "[" Expression "]"
AllocationExpression
::=
"new" Identifier "(" ")"
NotExpression
::=
"!" Expression
BracketExpression
::=
"(" Expression ")"
(待续)转载保留:http://www.qqread.com/java/2006/10/z227149.html
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- Java环境安装配置 (5571篇文章)
- Java编程开发手册 (8196篇文章)
- 125条常见的java面试笔试题大汇总 (23470次浏览)
- 十四种Java开发工具点评 (16011次浏览)
- JAVA中配置环境变量设置方法大全 (14586次浏览)
- 论Java外观模式 (1091次浏览)
- 英文打字练习 (718次浏览)
- Java编程十大典型问题详解(1) (637次浏览)
- Java路径问题最终解决方案 (598次浏览)
- Ruby,Java的劲敌 (582次浏览)
- Java学习从入门到精通(附FAQ)2 (579次浏览)
- JAVA高手解析XML配置文件的读取操作 (568次浏览)



