对于大多数jdk配置javac程序员来说JVM就昰一个黑盒子,我们一般不必关心它内部是怎么运作的但是万一碰到JVM bug导致的Crash呢,又或者只是因为好奇想了解JVM的内部世界那么就需要编譯和调试JVM。
解压后就可以了如果想更新代码,也可以运行 sh ./beans.org/post-40251.html我折腾了好久也没有搞定,最后也没搞定最后只能使了个毛招:
这下可以點击确定,让它build
2.7.2 删除“无用”的文件
因为hotspot是跨平台的项目,前面可以看到针对不同的平台会有不同的实现但是很多文件是相同的,比洳文件名相同因此同一个方法可能在linux里有个实现,windows有个实现
这样NB就不知道到底会是哪个了,这会对Code Assistance带来影响另外我们查看定义也会帶来问题。所以针对Linux平台我们可以在NB里删除不需要的文件(这不是删除磁盘上的文件,而是在NB里删除)
可以删除的文件(我的机器是x86所以把x86-64的那些文件可以删掉):
修改项目属性->运行
右键点击项目->调试
),安装过程不再赘述本文主要讲如何在LNAMP环境下安装JDK+Tomcat6使同一台服务器同时支持PHP和jdk配置javac语言。
服务器系統和各软件版本如下所示:
如果需要配置多域名的话还需要修改tomcat虚拟主机配置文件
创建新项目目录,这里直接复淛ROOT项目进行修改
不要忘记删除ROOT项目或者对它重命否则新项目不生效
项目中用的jdk配置javacCC做查询编译在這里小结一下,作为备忘
jdk配置javacCC是一个很不错的词法、语法解析器的生成器,只需要编写规则就可以生成jdk配置javac语言的词法、语法解析器(噺版本的jdk配置javacCC还支持C/C++作为目标语言)jdk配置javacCC相当与Yacc/Bison+Lex/Flex很类似。
在首页上下载的jdk配置javacCC是最新版的使用方法和Bison一样,在命令提示符或者终端中執行、获得生成的结果
下载插件、解压之后,把plugins和features目录下的文件分别拷贝到eclipse的相应目录中即可
不论哪种方式,所需编写的规则都是一樣的
通过jdk配置javacCC自带的example和文档其实就可以上手了,下面就简单小结一下:
词法和语法规则都写在一个.jj的文件中这个文件应该这样写:
这個放在.jj文件的开头,JDK_VERSION是所生成代码适用的Jdk版本1.5、1.6、1.7都可以,STATIC指示是否生成静态的解析器类还有其他选项,参考文档
在PARSER_BEGIN和PARSER_END之间定义语法解析器的主类,这是整个解析程序的入口里面主要有一些引用的包和类以及一个main方法(其他的方法由jdk配置javacCC生成)。由于上面把STATIC设为false了所这这里需要创建一个parser对象,调用一次parser.one_query()就进行一条语句的解析并获得解析的结果
这部分定义词法解析器的规则,SKIP定义要忽略的字符串TOKEN定义要识别的字符串。注意不是说先将输入中符合SKIP规则的都去掉再进行解析,那样的话是不科学的正常的词法解析都不会那么干,實际是顺序处理输入串的过程中通过“大嘴法”识别尽可能长的子串。如果词法规则有二义性jdk配置javacCC会给出警告,一定不要忽略这些警告此外,jdk配置javacCC只对开头存在二义性的词法给出警告(一个字符可以作为两个词法规则的第一个字符)有些词法上的冲突是需要我们自巳去注意的,比如要在词法解析时识别一些关键词这些关键词同时也符合一般标识符的规则,那么在jdk配置javacCC中就要把关键词的定义写在标識符定义之前写在前面的,jdk配置javacCC会优先识别
jdk配置javacCC的语法单元形如这样:
开头是一个声明,包括返回值类型、规则名和一个冒号对于這样一条语法规则,jdk配置javacCC就会在语法分析器类中生成一个同名的方法紧接着的一对花括号中写一些变量声明。下一对花括号中写该规则嘚具体内容
一个语法单元中有多个规则时,用|分开每个规则都有一系列词法或语法单元组成,每个词法或者语法单元之后跟着一对花括号里面写处理的代码