问题标签 [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 投票
39 回答
5102 浏览

language-agnostic - 你有没有崩溃过编译器?

每个人(至少每个使用编译语言的人)都遇到过编译错误,但是您实际上使编译器崩溃了多少次?

我有相当一部分“内部编译器错误”,但大多数只是通过重新编译而消失了。您是否有一段(最少的)代码会使编译器崩溃?

0 投票
3 回答
511 浏览

.net - 有 Ruby .NET 编译器吗?

是否有适用于 Ruby 语言的 .NET Framework 编译器?我听说过 DLR(动态语言运行时),这是否可以让 Ruby 用于 .NET 开发?

0 投票
11 回答
9468 浏览

asp.net - 跟踪间歇性的“对象引用未设置为对象的实例。” 构建错误

我可以使用一些帮助来尝试追踪我在我们的 ASP.Net 项目中一直存在的间歇性错误。

在构建解决方案时,构建将间歇性地失败,并出现错误“/: Build (web): Object reference not set to an instance of an object”。该错误没有关联的文件、行、列或项目信息。关于该错误的奇怪之处在于,它会在连续重建时消失,并且似乎不会导致我们在构建成功后遇到的任何运行时错误。有时错误只会弹出一次,有时会弹出 3-4 次,但最终构建将成功完成,然后似乎每次构建都很好。我无法确定错误发生的原因和时间,而且由于它总是最终生成,因此对我们来说并不是一个关键问题。只是一个烦恼。但是我想要的一个出于明显的原因而消失了。

我想我应该补充一点,这是一个最初在 ASP.net 1.1 中开发并转换为 2.0 的应用程序,之后我在某个地方继承了它,所以我不知道问题最初是什么时候出现的。就这里的每个人而言,它一直都在那里。

显然,我不希望有人找出我的问题的原因,因为这将要求他们查看我们的整个解决方案以找出潜在的问题。只是希望有人能给我一些关于如何追踪代码中错误的实际来源的新想法。它一定来自某个地方,对吧?你会怎么去找出哪里?

0 投票
4 回答
701 浏览

c++ - 有什么方法可以只用类运算符进行转换吗?

一个随机的问题...

我正在寻找的是一种表达转换操作的方法,该操作使用我要转换的类实例的已定义运算符,如果没有为该类型定义的转换运算符,则会生成编译时错误。因此,例如,我正在寻找的是类似的东西:

有趣的旁注:上面的代码使 VS2005 C++ 编译器崩溃,并且由于我猜测是编译器错误,因此无法在 VS2008 C++ 编译器中正确编译,但希望能证明这个想法。

有人知道有什么方法可以达到这种效果吗?

编辑:更多理由,解释为什么你可能会使用它。假设您有一个包装器类,它应该封装或抽象一个类型,并且您将它转换为封装的类型。您可以使用 static_cast<>,但是当您希望它失败时这可能会起作用(即:编译器选择一个允许转换为您要求的类型的运算符,当您想要失败时,因为该运算符不存在)。

诚然,这是一个不常见的情况,但令人讨厌的是我无法准确地表达我希望编译器在封装函数中执行的操作......因此这里有问题。

0 投票
12 回答
21062 浏览

c++ - C++ 中的常量和编译器优化

我已经阅读了所有关于 C++ 中 const 正确性的建议,并且它很重要(部分)因为它可以帮助编译器优化你的代码。我从未见过关于编译器如何使用这些信息来优化代码的很好的解释,即使是好书也没有继续解释幕后发生的事情。

例如,编译器如何优化声明为 const 的方法与不是但应该声明的方法。当你引入可变变量时会发生什么?它们会影响 const 方法的这些优化吗?

0 投票
12 回答
13377 浏览

c# - 将 C# 代码翻译成 AST?

目前是否可以将 C# 代码转换为抽象语法树?

编辑:一些澄清;我不一定希望编译器为我生成 AST - 解析器会很好,尽管我想使用“官方”的东西。不幸的是,Lambda 表达式是不够的,因为它们不允许我使用我正在寻找的语句体。

0 投票
1 回答
1275 浏览

compiler-construction - 程序员的记事本没有捕获 Make 输出?

我已经使用 Programmer's notepad 一段时间了,我发现它是一个非常简单的工具,我更喜欢在我知道我不需要大部分标准 IDE 开销的项目中使用它。但是,我最近在 Windows Vista 上运行程序时遇到了这个问题。

我发现在运行内置的“make”命令时,make.exe 的输出并没有像预期的那样在窗口中捕获。错误代码被捕获,但无论程序实际输出什么,输出总是完全空白。(从命令行运行程序可以很好地显示输出,就像在不使用 PN 的“捕获输出”选项的情况下运行它一样。)有人知道这可能是什么原因吗?

谢谢

0 投票
4 回答
8178 浏览

gcc - g++ 或 gcc 选项以获取带有警告 ID 的警告消息

默认情况下,gcc/g++ 仅打印带有行号的警告消息。我正在寻找 g++ 或 gcc 将构建警告消息与警告 ID 相关联的选项,以便可以轻松识别警告消息(无需解析)。还有更多选项可以获取更详细的警告信息吗?(虽然我认为每条警告信息本身都可以解释,但只是好奇)

谢谢。

0 投票
4 回答
393 浏览

asp.net - 类将为测试/控制台编译,但不会在 Asp.net 应用程序中编译

我有一个简单的界面:

VisitorLogController 类实现了这个接口。

从控制台应用程序或 TestFixture - 没问题 - 控制台/测试夹具完美编译。

但是,来自同一解决方案中的 Asp.Net 网站(不是应用程序),后面的代码中有此代码

编译器抛出此异常:

错误 1“WebSiteBusinessRules.Interfaces.IVisitorsLogController”不包含“GetUniqueSubscribersCount”的定义,并且没有扩展方法“GetUniqueSubscribersCount”接受类型为“WebSiteBusinessRules.Interfaces.IVisitorsLogController”的第一个参数(您是否缺少 using 指令或装配参考?)

但是对于同一文件中的此代码:

编译器编译这些行而不抱怨。事实上,如果我在接口中添加任何新内容,编译器现在会在尝试编译 asp.net 页面时抱怨。

不能缺少 using 指令或程序集引用,否则这两种方法都会失败。

这让我发疯!

请问有什么想法吗?

谢谢,

杰里米

0 投票
10 回答
14704 浏览

c++ - 寻找 16 位 x86 编译器

我正在开发一个嵌入式系统项目,并且遇到了编译器以编程方式嵌入 Paradigm C++ IDE 的问题。我希望能够自动化构建。

处理器是 AMD186ES。我没有使用操作系统 - 只是裸机的东西。我需要从 C++ 生成实模式 16 位 8086 机器代码。

我的谷歌搜索表明 G++ 可以构建这样的代码。

我的问题是:

可以配置 g++ 来构建此机器代码吗?

是否有其他 C++ 编译器也可以做到这一点?