compiler-construction相关内容

为什么需要 .bss 段?

我所知道的是全局变量和静态变量存储在 .data 段中,未初始化的数据存储在 .bss 段中.我不明白的是为什么我们有未初始化变量的专用段?如果一个未初始化的变量在运行时被赋值,该变量是否仍然只存在于 .bss 段中? 在下面的程序中,a在.data段,b在.bss段> 段;那是对的吗?如果我的理解有误,请指正. #include #include int a[10] = { 1, 2, ..
发布时间:2021-12-03 13:08:07 服务器开发

Xcode 4(和依赖项)的编译、构建或存档问题

这个问题在过去几周已经发展到涵盖更一般的问题 xcode4(以及从旧的 xcode 升级项目s). 然而,许多问题可以通过遵循相同的指令集来解决. 如果您有以下任何问题,请尝试已接受答案中的方法: Xcode 4 无法存档应用 Xcode 4 创建了一个无法使用的存档 Xcode 4 不会创建 .ipa Xcode 4 由于预处理器错误而无法编译 Xcode 4 找不到标 ..
发布时间:2021-12-02 18:08:20 移动开发

C 和 C++ 中的静态变量存储在哪里?

在可执行文件的哪个段(.BSS、.DATA、其他)中存储静态变量,以便它们不会发生名称冲突?例如: foo.c: bar.c:静态 int foo = 1;静态 int foo = 10;void fooTest() { void barTest() {静态 int bar = 2;静态 int bar = 20;富++;富++;酒吧++;酒吧++;printf("%d,%d", foo, ba ..
发布时间:2021-12-01 15:16:11 C/C++开发

是否存在正在使用的所有已知目标三元组的列表?

当交叉编译工具时,您通常必须提供“目标三元组".给出的例子 i686-pc-linux-gnu arm-none-linux-gnueabi powerpc-unknown-linux 等等... 这些三元组有时实际上是四个组成部分,具有以下形式: -[-]- 内核是可选的,制造商可以是“未知"或“无"之类的东西,因为它通常不相关. 我还没有找到一个页面,其 ..
发布时间:2021-11-30 19:10:22 其他开发

C 编译器断言 - 如何实现?

我想实现一个“断言",在错误情况下阻止编译,而不是在运行时失败. 我目前有一个这样的定义,效果很好,但会增加二进制文件的大小. #define MY_COMPILER_ASSERT(EXPRESSION) switch (0) {case 0: case (EXPRESSION):;} 示例代码(无法编译). #define DEFINE_A 1#define DEFINE_B 1MY ..
发布时间:2021-11-30 11:31:21 其他开发

周围有没有自我改进的编译器?

我不知道有任何自我改进的编译器,但话说回来,我不是一个编译器人. 是否有任何自我改进的编译器? 请注意,我说的是一个自我改进的编译器 - 而不是一个改进它编译的代码的编译器. 感谢任何指点! 旁注:如果您想知道我为什么要问,请查看 这篇文章.即使我同意大多数论点,我也不太确定以下几点: 我们有可以改进的计划他们的代码现在无需人工输入——它们被称为编译器. ... ..
发布时间:2021-11-28 22:32:36 AI人工智能

何时使用抽象或具体的语法树?

我一直在研究编译器.词法分析器似乎非常直接:取一个“句子"并将其分解为单词(或标记).为了确保正确的语法,需要一个解析器.解析器通常会获取标记并构建一个树,从而生成根节点(将单词转换为句子、段落、页面等......). 来自这个问题 似乎解析器会构建一个 AST.AST 只包含执行代码所需的内容,因此不需要括号之类的东西,因为运算符优先级已内置到 AST 中.一个 AST 可能就是编译器所需 ..
发布时间:2021-11-26 18:04:26 其他开发

如何创建允许语法错误的 AST 解析器?

首先,阅读有关解析和构建 AST 的内容? 如何为将构建 AST 并允许语法错误的语言(如 SQL)创建解析器? 例如,对于“3+4*5": +/\3 */\4 5 对于语法错误的“3+4*+",解析器会猜测用户的意思: +/\3 */\4 +/\?? 从哪里开始? SQL: SELECT___/\ \.从加入/\ |/\一个 city_name 人地址 ON|= ..
发布时间:2021-11-26 18:03:56 其他开发

我现在如何在 Irony 中使用 AST?

我有一个语法可以在 Irony 控制台中正常工作和解析,但是我在 AST 树视图中没有得到任何信息.我正在关注此处找到的 BASIC->Javascript 文章:http://www.codeproject.com/Articles/25069/JSBasic-A-BASIC-to-JavaScript-Compiler,但似乎 Ast 的东西都被移动/删除了.我找到了 Irony.Interp ..
发布时间:2021-11-26 17:57:21 C#/.NET

在创建抽象语法树的上下文中合成属性是什么?

编译器解析源代码并构建抽象语法树.用于构造抽象语法树的函数返回构成综合属性的指针.它们是什么以及它们与继承的属性有何不同? 编辑:我不知道这是否有帮助,但我最初在法语环境中听说过这些术语:Attributs synthétisés、attributs hérités. 解决方案 属性是与核心利益相关联的附加值.在 AST 的情况下,您可以将它们视为与每个 AST 节点相关联的对 (a ..
发布时间:2021-11-26 17:57:10 其他开发

数据流图构建

我被要求编写一个程序来构建输入程序代码的数据流图,给定抽象语法树.我在网上搜索数据流图的定义,发现一个代码段的数据流分析有很多事情要做.我想知道为给定代码构建数据流图到底需要绘制什么.很感谢任何形式的帮助! 解决方案 给定一个 AST,要生成数据流图,您必须: 建立符号表,以便使用的每个标识符都映射到其显式或隐式定义的类型,还允许您区分一个范围内的标识符与另一个范围内的相同标识符 ..
发布时间:2021-11-26 17:56:35 其他开发

使用 ANTLR 构建自己的 C# 编译器:编译单元

//创建一个扫描器,从传递给我们的输入流中读取CSLexer 词法分析器 = new CSLexer(new ANTLRFileStream(f));token.TokenSource = 词法分析器;//创建一个从扫描器读取的解析器CSParser parser = new CSParser(tokens);//从编译单元规则开始解析CSParser.compilation_unit_retur ..
发布时间:2021-11-26 17:54:44 C#/.NET

用最少的括号漂亮地打印 AST

我正在为 JavaScript AST 实现一个漂亮的打印机,我想问一下是否有人知道一种“正确的"算法,可以根据运算符优先级和 关联性.我在谷歌上没有找到任何有用的材料. 似乎很明显的是,父级具有更高优先级的运算符应该用括号括起来,例如: (x + y) * z//x + y 的优先级较低 但是,也有一些运算符不是关联的,在这种情况下仍然需要括号,例如: x - (y - z)//两个 ..
发布时间:2021-11-26 17:52:25 前端开发

在 C 中表示抽象语法树

我正在用 C 为一种简单的玩具语言实现一个编译器.我有一个工作扫描器和解析器,以及关于 AST 的概念函数/构造的合理背景.我的问题与在 C 中表示 AST 的具体方式有关.我在不同的在线文本/资源中经常遇到三种样式: 每种类型的节点一个结构. 它有一个基节点“类"(结构),它是所有子结构中的第一个字段.基节点包含一个枚举,用于存储节点的类型(常量、二元运算符、赋值等).使用一组宏访问 ..
发布时间:2021-11-26 17:51:57 其他开发

在 OCaml 中向我的 AST 添加行信息

我正在 OCaml 中创建一个编译器,其语法如下: type expr =|const 的缺点|字符串变量|列表(expr列表)|( expr * expr ) 的总和|小于 ( expr * expr )|( expr * expr * expr ) 的条件|Array_literal of ( expr )|Array_read of ( expr * expr ) AST 的节点如下所示 ..
发布时间:2021-11-26 17:51:00 其他开发

推荐保留预处理器指令的C前端

我想开始一个涉及转换C 代码的项目,但我想包括预处理器指令.我不想通过编写自己的 C 解析器来重新发明轮子,所以有人知道可以解析 C 预处理器和 C 代码,并生成可用于重新生成(或漂亮打印)原始源代码的 AST? 例如: #define FILENAME "文件名"#include 文件 *f=0;...如果(file_is_open){#ifdef CAN_OPEN_ITf = fope ..
发布时间:2021-11-26 17:48:55 其他开发

Microsoft CCI - 资源,编写编译器的参考

前段时间,我在研究编译器,我使用 System.Reflection 从我的 AST 生成代码 (IL).现在,我有了另一个我想使用的编译器的想法(这将是另一个宠物项目,不会在生产代码中使用任何东西,至少现在不会). 如您所知,宠物项目与生产代码相比有一大优势:您可以尝试并失败.因此,我决定尝试使用 Microsoft 的 CCI 编写编译器. 我找到的唯一好的参考资料是基本语言的示例 ..
发布时间:2021-11-26 17:46:20 C#/.NET

如何从java编译器树api生成的ast访问注释?

我使用了 java 编译器树 api 来为 java 源文件生成 ast.但是,我无法访问源文件中的注释. 到目前为止,我一直无法找到从源文件中提取注释的方法.. 有没有办法使用编译器 api 或其他一些工具? 解决方案 通过使用 getsourceposition() 和一些字符串操作(不需要正则表达式)设法解决了问题 ..
发布时间:2021-11-26 17:46:13 Java开发

如何在语法上实现 JJTree

我有一个作业,要使用 JavaCC 为讲师提供的语言制作一个带有语义分析的自上而下的解析器.我写出了生产规则,没有错误.我完全被困在如何将 JJTree 用于我的代码,而我在互联网上搜索教程的时间并没有让我获得任何帮助.只是想知道有人能花点时间解释一下如何在代码中实现 JJTree 吗?或者,如果某个地方有隐藏的分步教程会很有帮助! 以下是我的一些生产规则,以备不时之需.提前致谢! voi ..
发布时间:2021-11-26 17:45:28 Java开发

将 C# 代码翻译成 AST?

目前是否可以将 C# 代码转换为抽象语法树? 编辑:一些说明;我不一定期望编译器为我生成 AST - 解析器会很好,尽管我想使用“官方"的东西.不幸的是,Lambda 表达式是不够的,因为它们不允许我使用我正在寻找的语句体. 解决方案 Roslyn项目位于 Visual Studio 2010 中,可让您以编程方式访问语法树等. SyntaxTree tree = SyntaxTr ..
发布时间:2021-11-26 17:44:57 C#/.NET