• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Mini Java编译器(二)

servlet/jsp 搞代码 7年前 (2018-06-18) 139次浏览 已收录 0个评论

二、Mini java的文法
BNF
Goal

http://www.gaodaima.com/40998.htmlMini Java编译器(二)

::=

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

欢迎大家阅读《Mini Java编译器(二)》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Mini Java编译器(二)

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址