问题标签 [compiler-theory]

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 投票
2 回答
851 浏览

c - 如何为不同的词汇级别构建符号表?

我正在为类 C 语言构建编译器。我已经完成了词法分析器和解析器。现在,我正在尝试进行语义分析并尝试构建符号表。现在,根据规范,在同一词汇级别中不允许重复声明。这需要为每个词汇级别构建不同的符号表,对吗?我该怎么做呢?到目前为止,我拥有的一个符号表是二叉树的形式,其中每个节点如下所示:

如何将特定节点指向另一棵树的“根”节点?

任何帮助都会很棒!非常感谢。

0 投票
2 回答
105 浏览

cpu-architecture - 微处理器的发展是否需要编译器和语言标准的发展?

随着芯片制造商向新芯片添加新功能、指令等,我们是否需要相应的更新版本的编译器来使用芯片的这些新指令和特性?是否也意味着编程语言也需要新的操作码、语法等来使用芯片的新特性?

0 投票
8 回答
43307 浏览

compiler-construction - 解析树和抽象语法树 (AST) 有什么区别?

它们是由编译过程的不同阶段生成的吗?还是它们只是同一事物的不同名称?

0 投票
5 回答
966 浏览

c++ - 为什么即使在编译之后 C 和 C++ 也不同?

我猜到了,但仍然惊讶地发现这两个用 C 和 C++ 编写的程序在编译时的输出非常不同。这让我觉得对象的概念即使在最低层次上仍然存在。这会增加开销吗?如果是这样,目前将面向对象的代码转换为过程风格是不可能的优化,还是很难做到?

你好世界.c

你好世界.cpp

编译如下:

产生了这个代码:

C 程序集

C++ 汇编

0 投票
2 回答
1969 浏览

compiler-theory - 是否可以将低级语言转换为高级语言?

我们知道编译器可以将高级语言转换为低级语言,例如将 C 转换为汇编。

但有可能反过来吗?

0 投票
5 回答
23741 浏览

c++ - 有没有办法将 C++ 编译为 C 代码?

我有一个由用户使用 C++ 类配置的程序,并且应该使用相同的类来配置只能使用 C99(开放 CL 语言)子集的程序。

所以我的问题是:有没有办法将 C++ 编译为 C 代码?

开源会很棒!

0 投票
1 回答
320 浏览

compiler-construction - 编译器设计:如何区分“op_Minus number”和“negativeNumber”?

你如何区分标记序列“op_Minus”“数字”和简单的负数?

0 投票
2 回答
2638 浏览

parsing - 帮助理解 LR(1) 解析器、表生成?还有其他资源吗?

我目前正在学习编译器类,我很难理解使用 action/goto 表的 LR(1) 解析算法以及如何手动生成这些表。现在我们正在使用 Cooper 和 Torczon 的 Engineering a Compiler 作为我们的课堂教科书,我也阅读了关于表格生成的维基百科页面,但我仍然不理解这些概念。如果可能的话,任何人都可以推荐任何其他解释解析的书籍或在线资源吗?我认为许多大学都会有关于该主题的良好在线资源/幻灯片,但我不知道从哪里开始寻找。谢谢!

0 投票
5 回答
2707 浏览

compiler-theory - 编译器的阶段?

在编译的哪个阶段可以识别编程语言的关键字?

我有点困惑

  1. 词法分析。
  2. 程序的解析。

我曾经使用正则表达式在 C 中编写了一个词法分析器,但它也将main()in识别int main(void)为关键字。

在这些方面,我认为我们必须构建一个解析树来识别关键字。

0 投票
3 回答
2331 浏览

c++ - 识别字符串中的下一个字符是否大写

我正在编写一个 C++ 程序。我有一个 char 数组 trans[20][100] 数组。实际上,每个 trans 字符串都是语法的转换(编程语言翻译器)。我想检查 trans 中的每个字符串在“。”之后是否有非终端。即我想检查字符串中是否有'。' 后跟任何大写字母。谁能告诉我该怎么做??
-提前致谢