服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

mini java编译器(三)


  三、属性翻译文法
主类声明(mainclass)
<mainclass> ::= "class" <identifier>↑<id_name1>



@fillmemory↓<id_name1>↑<id_address>

@filltable↓<id_name1>,<id_address>



@filltree↓<id_name1>



"{" "public" "static" "void" "main" "(" "string" "[" "]"

<identifier>↑<id_name2>,<id_belongsto>=<id_name1>,<id_type>=stringarraytype



@filltable↓<id_name2>,<id_belongsto>



"{" <printstatement> "}" "}"





类声明(classdeclaration)
<classdeclaration> ::= "class" <identifier>↑<id_name>



@checktable↓<id_name>



@fillmemory↓<id_name1>↑<id_address>



@filltable↓<id_name>,<id_address>



@filltree↓<node_name>=<id_name>



"{" ( vardeclaration )* ( methoddeclaration )* "}"





类继承声明(classextendsdeclaration)
<classextendsdeclaration> ::= "class" <identifier>↑<id_name1>



@checktable↓<id_name1>



"extends" <identifier>↑<id_name2>



@checktree↓<id_name2>



@fillmemory↓<id_name1>↑<id_address>



@filltable↓<id_name1>,<id_name2>,<id_address>



@filltree↓<child_name>=<id_name1>,<parent_name>=<id_name2>



"{" ( vardeclaration )* ( methoddeclaration )* "}"





变量声明(vardeclaration)
<vardeclaration> ::= <type>↑<id_type>



<idetifier>↑<id_name>,<id_belongsto> “;”

@checktable↓<id_name>,<id_belongsto>



@fillmemory↓<id_name>↑<id_address>



@filltable↓<id_name>,<id_type>,<id_belongsto>,<address>







<type>↑<id_type> ::= <arraytype>↑<id_type>=arraytype

|<booleantype>↑<id_type>=booleantype

|<integertype>↑<id_type>=integertype







<vardeclaration> ::= <type>↑<id_type>=objecttype



@checktable↓<id_type>



<idetifier>↑<id_name>,<id_belongsto> “;”

@checktable↓<id_name>,<id_belongsto>

@filltable↓<id_name>,<id_type>,<id_belongsto>







方法声明(methoddeclaration)
<methoddeclaration> ::= "public" <type>↑<id_type>



<identifier>↑<id_name>,<id_belongsto>



@checktable↓<id_name>,<id_belongsto>



@fillmemory↓<id_name>↑<id_address>



@filltable↓<id_name>,<id_type>,<id_belongsto>,<id_address>



"(" ( <formalparameterlist> )? ")"

"{" ( <vardeclaration> )* ( <statement> )* "return"

<expression>↑<exp_type>,<exp_value>



@checktype↓<id_type>,<exp_type> ";" "}"





<type>↑<id_type> ::= <arraytype>↑<id_type>=arraytype

|<booleantype>↑<id_type>=booleantype

|<integertype>↑<id_type>=integertype







<formalparameterlist> ::= <formalparameter>

( <formalparameterrest> )*





<formalparameter> ::= <type>↑<id_type>



<identifier>↑<id_name>,<id_belongsto>



@checktable↓<id_name>,<id_belongsto>



@filltable↓<id_name>,<id_type>







<methoddeclaration> ::= "public" <type>↑<id_type>=objecttype



@checktable↓<id_type>



<identifier>↑<id_name>,<id_belongsto>



@checktable↓<id_name>,<id_belongsto>



@fillmemory↓<id_name>↑<id_address>

扫描关注微信公众号