首先,正则表达式不仅在Java里有,其它语言里面也有,它是一个数学上的概念,各个语言中的正则表达式是它的不同形式的实现。
其次,编译原理的词法分析里,会用到正则表达式去匹配源程序中的各种token(记号),比如说
int a = 8;
里识别出:
类型名:int
变量名:a
运算符:=
数字:8
结尾分号:;
总之,二者有联系,但不是一回事。
2. 《JAVA编译原理》
网络书店去淘一下.
3. java、c语言,编译原理,高手来下
程序编译??
你的最终目的是开发编译器还是做文法解释器?还是你就是像学编程?
如果你像做编译方面的研究,初中还太早了。有很多基础知识你不懂没有办法学的。要学编译原理只要要先学离散数学。
如果你仅仅是要学编程(基本的软件开发),我建议你学标准C开始,唐浩强的那本C语言教程非常经典,而且也好懂。
如果你哟问题的话,给我邮件:danndy◎21cn.com,我尽力回答。不好意思,公司将QQ封了,我不能上QQ。
4. 用eclipse 编写JAVA代码时,他为什么能自动识别语法错误及给出正确的写法这是JAVA编译器的哪种特性
这是靠eclipse自带的插件实现的,的确属于静态分析。动态分析我不太了解,可能会涉及到jvm,但主要是在编译器内获取一些动态信息,如果想对java的多态进行分析就需要动态分析,即在编译时获取具体调用的类的信息。但如果是问eclipse的语法纠错,远没涉及那么高级的内容。
如果你去看eclipse文件夹下的plugins文件夹,你能找到类似org.eclipse.jdt.XXX.XXX的若干jar文件,那些包就是eclipse专门用以处理java代码分析工作的jdt插件工具包。他能抽取java代码的AST(抽象语法树),也就是编译时用到的数据结构,你若学过编译原理就知道了,反正我还没学。如果做一些java方面的逆向工程,你甚至可以引用eclipse的jdt包,将java项目的代码通过相应接口(你可以在网上找到jdt的api和实例代码)传进去,获取代码中的类,字段,方法,和更细节的信息。
而jdt中也包含检测,处理语法错误的包,可以发现并纠正语法错误。这一特点还可以用来做一些正向工程(如自修改或动生成代码)。
哦,还有,针对你的问题还要说,这点特性不是编译器的,而是编辑器eclipse的。注意,绝对是编辑器的特点!虽然涉及到语法问题,但在eclipse纠错时,还没有调用编辑器,即程序还没有编辑。只有在运行程序前eclipse才会调用编辑器。编译一次不容易,每次纠错都调用编译器的话开销太大,纠错的反应速度绝对不会像平时eclipse做的那么快。
实际上eclipse可以说就是由各种插件组成的,它本身只提供一个供各种插件运行的平台,本身功能很简单,但就是通过向jdt这样的插件包实现各种复杂的功能。
5. 计算机怎么读懂java代码的原理
首先你需要懂得编译原理这门学科,JDK将java代码编译成机器能够识别的二进制字节码,然后用JVM(java虚拟机)来加载这些二进制字节码并进行解析(翻译),然后形成指令并执行。jre其实就是java虚拟机的实现,全名叫做Java
Runtime
Environment
6. java关于this的编译原理
java提供了一个this关键字,它是一个对象的默认引用,this关键字总是指向调用该方法的对象,根据this的出现位置不同,this作为对象的默认引用由两种情形:
1.构造器中引用该构造器执行初始化
的对象;
2.在方法中引用调用引用该方法的对像;
this关键字最大的作用就是让类中的一个方法,访问该类的另一个方法或属性。
7. 有没有介绍java编译原理的书籍推荐。现在在学java只是模仿代码,但不知道为什么程序要这样写,我
学Java必看书籍:Java编程规范,Effective Java第二版,Java并发编程实践,Java解惑,ROBUST Java 中文版-Java异常处理、测试与调试
另外我也有学Java的课程老师给我们推荐:Java面向对象编程
8. 关于所谓java编译原理执行顺序
System.in
相当于一个缓冲池
里面如果有内容了 马上就会执行后面的内容
建议你看看java 中流文件的部分就能明白了
并不是像你想想的 到那行之后执行后面而是相当于 一个监听的感觉 这个缓冲池一直存在 来了之后马上进行后续处理 再来时再处理
9. Exception in thread "Thread-0" java.lang.NoClassDefFoundError: javax/mail/Authenticator at MyEmai
楼主, java的编译原理是一样的, 用到的类必须告诉jvm在哪. jvm是通过classpath变量 和 相对目录层次去找相应的类. 没找到就会报NoClassDefFoundError 如果是报jre中的Class没找到 那么应该检查下环境变量, 如果是报自己写的Class 那么应该检查下目录层次是否是 import 中写的那样
当然也可以在 javac 使用 -classpath 设置类所在的路径, 但是一般是设置环境变量classpath
例子 : javac -classpath \C \exam\JavaTest.java