中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Java > 综合文章
Mini Java编译器(二)
作者:未知 时间:2005-07-27 22:32 出处:CSDN 责编:chinaitpower
              摘要:Mini Java编译器(二)

二、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 ")"


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有