仓酷云

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

[学习教程] JAVA网站制作之Mini Java编译器(一)

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

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

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

x
但是一些大型开发或者是保密型比较高的项目都会用java,原因有2点,一:java是开源的,不怕别人留后门,偷我工具,.net就不一样了,保持微软的一向风格,源代码不公开编译1、义务概述
本项高文业将计划并完成一个MiniJava言语的编译器





MiniJava概述
MiniJava是Java言语的子集。作为一种很好的编译课程教授教养言语,它与Java比拟做了以下精简:

(1)不同意重载(overloading)

(2)一个文件中能够声名多少个类,但必需有且只要一个的主类,辅类能够有多个,类不克不及声名为public;主类中只能有一个主办法,该办法的署名必需为“publicstaticvoidmain(String[])”,个中String[]参数不做处置。主办法中只能有一条输入语句:System.out.println(int),该语句只能输入整型变量值

(3)只要类,没有接口,有承继干系(单承继)

(4)类中只能声名变量和办法

(5)只要四种变量范例:整型(integer)、布尔型(boolean)、数组(array)、对象;只要一类数组:整型数组(int[]);变量必需声名为(auto)型

(6)办法必需为public,必需有前往值,前往值范例受(5)限定;能够有参数,能够没有,参数数目没无限制,范例受(5)限定

(7)一共有6中语句(statement):代码块(block)、复杂赋值语句(assignmentstatement)、数组赋值语句(arrayassignmentstatement)、打印语句(printstatement)、if语句、while语句

(8)一共有9种表达式(expression):与(and)、对照(compare)、加(plus)、减(minus)、乘(times)、数组定位(arraylookup)、数组长度(arraylength)、动静传送(messagesending,即参数传送)、主表达式(primaryexpression);与表达式为“短路与”(&&);对照只能作小于对照

(9)主表达式一共有9种:整数(Integer)、“真”(true)、“假”(false)、对象、this、初始化(allocation)、数组初始化(arrayallocation)、非(not)、括号(bracket)

(10)初始化时只能利用空参数,以是没有“机关器(constructor)”观点

(11)对标识符(IDENTIFIER)没有作明白界说,在这里划定只能是字母、数字的汇合,但必需以字母开首,辨别巨细写

(12)对整数(INTEGER_LITERAL)没有作明白界说,在这里划定为无标记整数,32位(0~4294967295)

(13)不同意正文

(14)类变量声明时不克不及初始化,初始化必需在办法中完成

(15)不克不及界说外部类





保存字、闭幕符
保存字


辨认编码


影象符






<EOF>


0
EOF
-

boolean


1
BOOLEAN
-

class


2
CLASS
-

else


3
ELSE
-

extends


4
EXTENDS
-

fasle


5
FALSE
-

if


6
IF
-

int


7
INT
-

length


8
LENGTH
-

main


9
MAIN
-

new


10
NEW
-

public


11
PUBLIC
-

return


12
RETURN
-

static


13
STATIC
-

this


14
THIS
-

true


15
TRUE
-

void


16
VOID
-

while


17
WHILE
-

String


18
STRING
-

System.out.println


19
PRINTLN
-

=


20
EQUAL
-

!


21
NOT
-

&&


22
AND
-

+


23
PLUS
-

-


24
MINUS
-

*


25
TIMES
-

<



26
COMPARE
-

.


27
DOT
-

;


28
SEMICOLON
-

,


29
COMMA
-

[


30
LEFT_SQUARE
-

]


31
RIGHT_SQUARE
-

(


32
LEFT_BRACKET
-

)


33
RIGHT_BRACKET
-

{


34
LEFT_BLOCK
-

}


35
RIGHT_BLOCK
-

标识符


36
ID_STRING
外部字符串

无标记整数


37
ID_INTEGER
整数值






本编译器概述
(1)语法剖析程序用带回溯的递回子程序法

(2)对源文件举行两遍处置:第一遍词法剖析,第二遍语法剖析

(3)利用编译时静态分派存储空间

(4)整型数据范例32位,占4个字节;布尔型数据范例8位,占1个字节;内存(由列表假造)寻址10位,1KB

(5)为了完成便利,父类必需在子类之前界说

(6)因为工夫缘故原由,编译器做了以下简化:

(i)表达式只能处置加法、减法、乘法、小于对照、逻辑与,且只能对整数或布尔值间接举行盘算,而不克不及盘算变量的值

(ii)不克不及处置办法挪用

(iii)不克不及处置数组

(iv)不克不及举行对象初始化

(v)不克不及处置布局化语句


还是要自己一点一点写代码,然后编译,改错再编译好那。还有最重要的是.net的编译环境非常好,你甚是不需要了解太多工具,对于简单的系统,你可以之了解一些语法就哦了。
沙发
发表于 2015-1-21 14:03:57 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
飘飘悠悠 该用户已被删除
板凳
发表于 2015-1-30 19:45:31 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
金色的骷髅 该用户已被删除
地板
发表于 2015-2-1 20:44:52 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
老尸 该用户已被删除
5#
发表于 2015-2-7 14:56:38 | 只看该作者
还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。
admin 该用户已被删除
6#
发表于 2015-2-10 22:09:10 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
变相怪杰 该用户已被删除
7#
发表于 2015-2-23 12:53:36 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
兰色精灵 该用户已被删除
8#
发表于 2015-2-25 12:35:41 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
精灵巫婆 该用户已被删除
9#
发表于 2015-3-7 12:07:21 | 只看该作者
Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。
愤怒的大鸟 该用户已被删除
10#
发表于 2015-3-12 18:29:53 | 只看该作者
设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧
再现理想 该用户已被删除
11#
发表于 2015-3-19 19:19:32 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
蒙在股里 该用户已被删除
12#
发表于 2015-3-29 16:13:58 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
谁可相欹 该用户已被删除
13#
发表于 2015-3-30 14:45:19 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
小女巫 该用户已被删除
14#
发表于 2015-4-3 03:56:04 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
冷月葬花魂 该用户已被删除
15#
发表于 2015-4-10 05:53:16 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
第二个灵魂 该用户已被删除
16#
发表于 2015-4-12 16:21:21 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
活着的死人 该用户已被删除
17#
发表于 2015-4-12 22:09:11 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
爱飞 该用户已被删除
18#
发表于 2015-4-16 04:10:47 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
透明 该用户已被删除
19#
发表于 2015-4-22 08:06:38 | 只看该作者
J2SE开发桌面应用软件比起 VC,VB,DEPHI这些传统开发语言来说,优势好象并不明显。J2ME对于初学者来说,好象又有点深奥,而且一般开发者很难有开发环境。
若天明 该用户已被删除
20#
发表于 2015-4-24 17:33:25 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-24 00:47

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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