Tag: 编译器构造

Java编译器/解释器

为什么我们说Java是一种编译和解释语言? 这有什么好处(编译和解释)?

Java.Variable名称长度

在我阅读的文档中,: A variables name can be any legal identifier — an **unlimited-length** sequence of Unicode letters and digits 所以,我创建了这个类: class Test{ public static void main(String args[]) { int i=10; }} 在哪里我 – 它不是我,它的名字长度变量 – 3 000 000 chars 。 大小.java文件~3M。 我尝试编译这个文件: javac Test.java 结果我有Test.class大小Test.class 4 bayts。 现在我的问题是: 它真的尝试,这个名字unlimited-length ? 编译器如何使用长度3000000个字符转换我的变量名称,结果我有这么小的.class文件?

禁用/启用Netbeans中的编译错误

我犯了一个可怕的错误,告诉Netbeans在运行我的Maven应用程序时总是忽略编译错误。 既然我想撤销这个,我似乎无法在各种配置面板中找到一个选项。 有人知道这个选项可以改变的地方吗? TIA! 一月

使用另一个java程序编译java程序

我想创建一个java程序,从文件中读取另一个java程序,编译它并显示错误和警告。 另外,我想显示从文件中读取并编译的程序的输出。 我怎样才能做到这一点?

是否有可能同一个javac编译器编译同一组源文件但生成不同校验和的类文件?

我试图比较这个结果:(在ant中) ……对此:(在maven) maven-compiler-plugin 2.3.2 compile compile compile 1.5 1.5 true lines,vars,source true true true … …只发现2个生成的类文件的校验和略有不同,其余的相同。 我认为multithreading已经发挥了作用,但是对于任一选项产生的校验和似乎在重复尝试时是一致的。 有什么可能解释这个结果? 更新: 我使用javap -verbose检查了一组具有不同校验和的文件,并注意到唯一的区别是: const #16 = class #108; // java/lang/Exception const #17 = Method #102.#109; // java/io/Writer.close:()V const #18 = Method #7.#109; // java/io/FileWriter.close:()V 而不是: const #16 = Method #102.#108; // java/io/Writer.close:()V const #17 = Method #7.#108; […]

Eclipse中的null JavaCompiler

我的Java编译器出现了一些错误。 我没有在Eclipse之外得到错误,但它似乎只发生在Eclipse Indigo中。 这不是必需的,但如果你有答案,我会非常感激,因为它可以帮助我调试,并更容易测试资源。 谢谢您阅读此篇。 E:ToolProvider.getSystemJavaCompiler()返回null。 E2:

Java中的条件评估过程

可以说我有以下条件: if ( myList == null || myList.isEmpty() || xomeX == someY ) 评估这些条件的顺序是什么? 左右,右到左或每次随机? 如果第一个通过,那么其他人会被忽略?

UnsupportedClassVersionError – JDK具有相同的版本

我已经使用现有的旧Java代码库并更改了一个类。 我已经在Java 1.5.0中重新编译了代码库。 然后,我在Tomcat上成功部署了此代码。 为了测试我的部署,我向我的应用程序发送一条消息,然后我更改了我更改的类的错误。 在ServletContext资源[/WEB-INF/ApplicationContext.xml]中定义名为’myClass’的bean加载类[com.MyClass]时出错:类文件或依赖类的问题; 嵌套exception是java.lang.UnsupportedClassVersionError:(com / MyClass)错误的主要版本在offset = 6 我检查了已部署的Ear和War的清单文件,两者都有1.5.0_22-b03。 Tomcat实例上的版本是1.5.0。 谁能告诉我为什么我收到这个错误? 运行应用程序的JDK与编译代码的版本相同。 奇怪的是,唯一有错误的类是我修改过的类。

如何在ANTLR4中生成AST?

我正在开发一个项目,我必须为给定的程序生成抽象语法树。 这里的程序可以是任何主流编程语言。 在ANTLR4中生成AST的标准方法是什么? 我只知道ANTLR4的基础知识,我能够为给定的程序生成Parse树。

解析Java源代码

我被要求开发一个软件,该软件应该能够创建输入Java源代码的流程图/控制流程。 所以我开始研究它并得出以下解决方案: 要创建流程图/控制流,我必须识别在给定源代码中进行的控制语句和函数调用现在我有两种识别方法: 通过编写我自己的语法来解析源代码(我认为这是一个复杂的解决方案)。 我正在考虑使用Antlr。 将输入源代码文件作为文本读取并搜索特定模式(可能会变得低效) 我在这儿吗? 或者我错过了一些非常基本和简单的东西? 哪种方法花费的时间更少,工作效率更高? 在这方面的任何其他建议也将受到欢迎。 任何其他有效的方法都会有所帮助,因为输入源代码可能跨越多个文件,并且可能相当复杂。 我擅长.NET语言,但这是我在Java中的第一个大项目。 我对编译器设计有基本的了解,因此编写语法对我来说不是不可能的。 对不起如果我不清楚。 请询问任何说明。