首 页 | 网页模板 | 教程 | 源码下载 | 书籍下载 | 图片素材 | 字体 | JAVA特效 | FLASH源码 | 软件 | 矢量 | 论坛 | 其它 |
设为主页
加入收藏
联系站长
平面设计 | 网页制作 | 程序编写 | 数 据 库 | 媒体动画 | 网络冲浪 | 服务器相关 |
当前在线
广告:P4服务器电信机房6999/年即送产权 | 疾风下载
Mini Java编译器(二)
2005-3-23 7:14:44  作者:模板天下收集整理  来源:未知 网友评论 0 条 论坛
  二、Mini Java的文法
BNF
Goal




::=




MainClass ( TypeDeclaration )*





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




::=










TrueLiteral




::=




"true"





FalseLiteral




::=




"false"





Identifier




::=










ThisExpression




::=




"this"





ArrayAllocationExpression




::=




"new" "int" "[" Expression "]"





AllocationExpression




::=




"new" Identifier "(" ")"





NotExpression




::=




"!" Expression





BracketExpression




::=




"(" Expression ")"
共分1页  [1] 
>> 相关文章

关于网站 | 客服中心 | 服务条款 | 友情链接 | 广告联系 | 本站历程 | 网站导航

吉ICP备05000107号