快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

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










返回类别: 教程
上一教程: Java调用系统执行程序(OS Command)
下一教程: [Eclipse笔记]在SWT中有效的治理图形系统资源

您可以阅读与"Mini Java编译器(二)"相关的教程:
· Mini Java编译器(三)??属性翻译文法
· Mini Java编译器(一)
· Mini Java编译器(五)
· Mini Java编译器(二)??语法(BNF)
· Mini Java编译器(六)
    微笑服务 优质保证 索取样品