问题标签 [compiler-construction]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
14318 浏览

java - 如何从 Java 中的生产代码中删除调试语句

编译器是否可以从生产代码中删除用于调试目的(例如日志记录)的语句?调试语句需要以某种方式标记,可能使用注释。

设置属性 (debug = true) 并在每个调试语句中检查它很容易,但这会降低性能。如果编译器只是让调试语句消失,那就太好了。

0 投票
12 回答
8791 浏览

compiler-construction - 解析器、解释器和编译器的学习资源

一段时间以来,我一直想尝试编写自己的语言(表面上是为了学习经验),因此需要在解析器、解释器和编译器的构建方面相对扎实。所以:

  • 有谁知道有关构建解析器、解释器和编译器的任何好的资源?

编辑:我不是在寻找编译器编译器/解析器编译器,例如 Lex、Yacc 和 Bison ......

0 投票
8 回答
23315 浏览

c++ - 对于 C++ 插件系统,什么是安全的?

C++ 中的插件系统很难,因为 ABI 没有正确定义,并且每个编译器(或其版本)都遵循自己的规则。然而,Windows 上的 COM 表明,可以创建一个最小的插件系统,允许具有不同编译器的程序员使用简单的接口为主机应用程序创建插件。

让我们切合实际,暂时搁置在这方面没有多大帮助的 C++ 标准。如果我想为 Windows 和 Mac(以及可选的 Linux)编写一个支持 C++ 插件的应用程序,并且如果我想为插件作者提供相当多的编译器选择(比如不到 2 年的 Visual C++ 版本) 、GCC 或 Intel 的 C++ 编译器),我可以依靠 C++ 的哪些特性?

当然,我假设插件是为特定平台编写的。

在我的脑海中,这里有一些我能想到的 C++ 特性,我认为这就是答案:

  • vtable 布局,通过抽象类使用对象?(是的)
  • 内置类型,指针?(是的)
  • 结构体,联合体?(是的)
  • 例外?(不)
  • 外部“C”函数?(是的)
  • 具有内置参数类型的 stdcall 非外部“C”函数?(是的)
  • 具有用户定义参数类型的非标准调用非外部“C”函数?(不)

如果您在该领域有任何经验可以分享,我将不胜感激。如果您知道任何具有 C++ 插件系统的成功应用程序,那也很酷。

卡尔

0 投票
7 回答
2683 浏览

java - 用于将非 Java 转换为 Java 源的工具

有没有什么好的工具可以自动将非 Java 源代码转换为 Java 源代码?

我并不期待完美的东西,只是为了摆脱最糟糕的咕噜声。

我想有一个滑动的难度等级。C# 应该相对容易(只要您忽略所有库)。(写得很好)C++ 还不错。C需要做一点OO。(静态类型)函数式语言可能很容易理解。动态 OO 语言可能需要非本地分析。

0 投票
15 回答
15997 浏览

compiler-construction - 在线交互式控制台

我在哪里可以找到用于编程语言或 api 的在线交互式控制台?

0 投票
11 回答
1849 浏览

c++ - 哪个编译成更快的代码:“n * 3”或“n+(n*2)”?

哪个编译成更快的代码:“ans = n * 3”或“ans = n+(n*2)”?

假设 n 是 int 或 long,并且它在现代 Win32 Intel 机器上运行。

如果涉及一些取消引用,这会有所不同,也就是说,其中哪一个会更快?

或者

或者,由于优化编译器在任何情况下都可能考虑到这一点,因此无需担心这一点吗?

0 投票
1 回答
10292 浏览

java - 生成 .exe 文件的 Java 编译器选项

我应该使用什么编译器(我正在使用 gcj 4.x)选项来为我的 java 应用程序生成一个“exe”文件以在 Windows 中运行?

0 投票
1 回答
605 浏览

.net - 使用 DLR 进行(主要)静态语言编译

我正在构建一个面向 .NET 的编译器,并且我之前直接生成了 CIL,但是生成 DLR 树将使我的生活变得更加轻松。我支持一些动态特性,即运行时函数创建和鸭式,但绝大多数代码是完全静态的。

既然已经解释了,我有以下问题:

  • 除了 MSDN 博客上的小示例之外,DLR 是否已用于静态编译?
  • 如果是这样,实现了什么样的性能?
  • 如果没有,有什么从根本上阻止这种情况吗?
  • 有没有比使用 DLR 或直接发出 IL 更好的代码生成机制?

对此的任何见解或对博客/代码/谈话的引用将不胜感激。

0 投票
22 回答
1909 浏览

c - C(或任何)编译器确定性性​​能

在处理最近的一个项目时,一位客户 QA 代表拜访了我,他问了我一个我以前没有真正考虑过的问题:

您如何知道您使用的编译器生成的机器代码与 c 代码的功能完全匹配并且编译器是完全确定的?

对于这个问题,我完全没有回答,因为我一直认为编译器是理所当然的。它接收代码并输出机器代码。我怎样才能开始测试编译器实际上并没有添加我没有要求的功能?或者更危险地以与我期望的方式略有不同的方式实现代码?

我知道这对每个人来说可能并不是一个真正的问题,实际上答案可能只是......“你已经过了桶并处理它”。但是,在嵌入式环境中工作时,您隐含地信任您的编译器。我如何向自己和 QA 证明我这样做是正确的?

0 投票
2 回答
344 浏览

compiler-construction - 灵活的编译器管道定义

我正在为 .NET 开发一个编译器框架,并且想要一种灵活的方式来定义管道。我考虑了以下选项:

  • 世界自然基金会
  • 自定义 XML 管道描述
  • 代码中的自定义管道描述(使用 Nemerle 的宏为其定义语法)
  • 其他基于代码的描述

要求:

  • 不得仅依赖 .NET (3+) 的更高版本中的功能,因为它旨在跨平台并在托管内核之上使用,这意味着半受限的 .NET 功能。
  • 必须允许有条件的管道构建,因此您可以指定某些命令行选项将对应于某些元素和顺序。

WWF 会很好,但不符合第一个要求。其他人会工作,但由于所涉及的工作而不是最佳的。

有谁知道几乎不需要修改就能满足这些目标的解决方案?