仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1920|回复: 20
打印 上一主题 下一主题

[学习教程] JAVA网页编程之Mini Java编译器(三)

[复制链接]
莫相离 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:46:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。编译3、属性翻译文法
主类声明(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>



@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>=ObjectType



@checkTable↓<id_type>



<Identifier>↑<id_name>,<id_belongsTo>



@checkTable↓<id_name>,<id_belongsTo>



@fillMemory↓<id_name>↑<id_address>

@fillTable↓<id_name>,<id_type>,<id_address>







<FormalParameterRest>::=","<FormalParameter>





赋值语句(AssignmentStatement)
<AssignmentStatement>::=<Identifier>↑id_name@checkTable↓<id_name>↑<id_type>

“=”<Expression>↑<exp_type>,<exp_value>“;”

@checkType↓<id_type>,<exp_type>



@generateCode↓<stmt_type>=stmt_assign,<extra_para>





数组元素赋值语句(ArrayAssignmentStatement)
<ArrayAssignmentStatement>::=<Identifier>↑<id_name>@checkTable↓<id_name>↑<id_type>



@checkType↓<id_type>,ArrayType



"["<Expression>↑<exp_type1>,<exp_value1>



@checkType↓<exp_type1>,IntegerType



"]""="<Expression>↑<exp_type2>,<exp_value2>



@checkType↓<exp_type2>,IntegerType";"

@generateCode↓<stmt_type>=stmt_array_assign,<extra_para>





if语句(IfStatement)
<IfStatement>:="if""("<Expression>↑<exp_type>,<exp_value>



@checkType↓<exp_type>,BooleanType



")"<Statement>"else"<Statement>

@generateCode↓<stmt_type>=stmt_if,<extra_para>





while语句(WhileStatemen)
<WhileStatement>::="while""("<Expression>↑<exp_type>,<exp_value>



@checkType↓<exp_type>,BooleanType



")"<Statement>

@generateCode↓<stmt_type>=stmt_while,<extra_para>





打印语句(PrintStatement)
<PrintStatement>::="System.out.println""("

<Expression>↑<exp_type>,<exp_value>



@checkType↓<exp_type>,IntegerType



")"";"

@generateCode↓<stmt_type>=stmt_print,<extra_para>





属性及举措注释
举措
举措


感化



@checkTable↓<id_name>,<id_level>


反省标识符的正当性(遍历标记表)

@checkTable↓<class_name>


反省类名是不是已声明

@checkTable↓<id_name>↑<id_type>


反省变量是不是已声明,若已声明前往变量范例

@checkTable↓<id_type>


反省范例是不是已声明

@fillTable↓<id_name1>,<id_address>


将标识符拔出标记表

@fillTable↓<child_name>,<parent_name>,<id_address>


将子类拔出标记表,同时复制父类的办法和类变量至子类

@fillTable↓<id_name>,<id_belongsTo>


将标识符拔出标记表

@fillTable↓<id_name>,<id_sort>,<id_level>,<id_type>


将标识符拔出标记表

@fillMemory↓<id_name>↑<id_address>


挂号内存,前往地点

@generateCode↓<stmt_type>,<extra_para>


天生伪代码

@checkType↓<child_name>,<parent_name>


反省范例正当性(遍历承继树、标记表)

@checkType↓<id_type>,<exp_type>


反省变量范例与表达式范例是不是婚配

@checkTree↓<child_name>,<parent_name>


反省child_name是不是是parent_name的子类(遍历承继树)

@checkTree↓<class_name>


反省child_name是不是已存在于承继树内

@fillTree↓<child_name>,<parent_name>


将child_name拔出承继树中parent_name下

@fillTree↓<node_name>


将node_name拔出承继树中(父类为Object)







属性
属性


数据范例(针对Java言语)


寄义



id_name


String
标识符称号

id_level


int
标识符的条理布局

id_belongsTo


String
所属条理称号,(见附表)

id_address


int
内存地点

stmt_type


int
操纵范例(见附表)

class_name


String
类名

extra_para


Object
附加参数

child_name


String
子类称号

parent_name


String
父类称号

class_name


String
类名

id_type


compiler.type.Type
变量范例范例(见附表)

para_list


java.util.List
参数表

exp_value


int或boolean或任何程序中已界说的对象范例
表达式值

exp_type


compiler.type.Type
表达式范例







标记表布局
称号


数据范例(针对Java言语)


寄义



name


String
标识符称号

sort


String
标识符种别

type


compiler.type.Type
变量范例

belongsTo


String
回属信息(见附表)

address


int
存储地点







内存分派表布局
称号


数据范例(针对Java言语)


寄义



address


int
标识符地点

sort


String
标识符种别

name


String
标识符称号

value


Object
标识符值







附表
stmt_type
称号





寄义



stmt_assign


1
赋值语句

stmt_array_assign


2
数组元素赋值语句

stmt_if


3
if语句

stmt_while


4
while语句

stmt_print


5
打印语句







id_type



寄义


size(字长(bytes))



ArrayType


整型数组范例
4

BooleanType


布尔范例
1

IntegerType


整型范例
4

ObjectType


对象范例
不断定

NonVariableType


非变量
0







id_belongsTo
标识符范例


“belongsTo”属性内容




无(剖析时以文件为单元)

办法
类名

类变量
类名

办法内变量
办法名

参数
办法名









首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。
小魔女 该用户已被删除
沙发
发表于 2015-1-19 20:58:54 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
再现理想 该用户已被删除
板凳
发表于 2015-1-24 16:48:37 来自手机 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
谁可相欹 该用户已被删除
地板
发表于 2015-1-25 12:59:51 | 只看该作者
《JAVA语言程序设计》或《JAVA从入门到精通》这两本书开始学,等你编程有感觉的时候也可以回看一下。《JAVA读书笔记》这本书,因为讲的代码很多,也很容易看懂,涉及到面也到位。是你学习技术巩固的好书,学完后就看看《JAVA编程思想》这本书,找找一个自己写的代码跟书上的代码有什么不一样。
金色的骷髅 该用户已被删除
5#
发表于 2015-1-31 18:36:00 | 只看该作者
是一种使用者不需花费很多时间学习的语言
6#
发表于 2015-2-6 20:54:31 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
飘灵儿 该用户已被删除
7#
发表于 2015-2-11 17:37:23 | 只看该作者
Java 编程语言的风格十分接近C、C++语言。
冷月葬花魂 该用户已被删除
8#
发表于 2015-3-2 16:11:48 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
小女巫 该用户已被删除
9#
发表于 2015-3-11 04:36:26 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
飘飘悠悠 该用户已被删除
10#
发表于 2015-3-17 20:10:44 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
精灵巫婆 该用户已被删除
11#
发表于 2015-3-20 20:07:15 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
深爱那片海 该用户已被删除
12#
发表于 2015-3-30 14:45:19 | 只看该作者
是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言
简单生活 该用户已被删除
13#
发表于 2015-3-31 10:04:42 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
只想知道 该用户已被删除
14#
发表于 2015-4-12 22:09:11 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
柔情似水 该用户已被删除
15#
发表于 2015-4-22 08:06:38 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
变相怪杰 该用户已被删除
16#
发表于 2015-4-28 22:10:31 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
老尸 该用户已被删除
17#
发表于 2015-5-1 04:10:17 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
兰色精灵 该用户已被删除
18#
发表于 2015-5-1 04:28:41 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
乐观 该用户已被删除
19#
发表于 2015-5-10 01:25:50 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
小妖女 该用户已被删除
20#
发表于 2015-5-11 22:31:40 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 02:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表