标记编译器构造应该应用于有关编译器编程的问题或有关编译器详细内部工作的问题。请勿使用*使用*特定编译器或编译错误的问题。
在了解了 LLVM 的工作原理之后,我对如何生成可移植的低级代码以及如何构建这个“东西”的模块化感到非常兴奋。 但我今天发现了C的存在——那...
从编译器理论的角度来看,为什么javac编译器不接受x = x+++++y形式的语句,而是接受x = x+++ ++y?
通常,函数标记是普通标识符([A-z_][0-9A-z_]*)或其某种变体。是否有语言支持包含空格的带引号的函数名称?一个例子是我...
我正在用 C 语言实现一个简单玩具语言的编译器。我有一个可用的扫描器和解析器,以及 AST 的概念函数/构造的合理背景。 我的问题是相关...
背景 为了简单起见,仅以 ADD 为例。 在编译器后端,多重加法是通过多个 ADD 指令的组合来组织的。例如 ADD(1, ADD(1,3))。 但自从它...
我正在为我的语言编写一个小型编译器。目前我处理变量的方式是将它们的值压入堆栈并存储它们的偏移量。每当需要变量时,我都会按下 [rsp+offs...
我们都知道符号表到类型表总是存在引用,但相反的情况也可能发生。意味着可以将表引用键入回符号表?
令牌 _123jh 和 123jh 之间有什么区别,使得大多数词法分析器不包含以数字开头的标识符?我想一个原因可能是纯数字标记可能会令人困惑,...
我目前正在尝试在即时(JIT)编译器中实现各种算法。许多算法都在位图(通常称为位集)上运行。 在 C++ 中,有多种方法
我一直在阅读有关分支预测的内容,但我发现的唯一实现主要是在计算机的硬件方面。处理器似乎负责大部分预测。我的问题是...
ANTLR 是等待找到与应该跳过的标记相匹配的最长字符串,还是一旦匹配该标记就跳过它? 假设我们的语法中有两个标记,如下所示: 测试: ...
假设我有一个函数可以生成一个大结构(在本例中是一个巨大的 std::vector),以及一个重复调用它的循环: std::vector 渲染(int w,int h,int time){ std::vec...
我正在用 C 语言编写基于简单 lambda 演算的语言的解释器。语言的 EBNF 是 S ::= E E ::= 'fn' var '->' E | T {'+' T} | T {'+' T} | T {'-' T} T ::= F {'*' F} | T ::= F {'*'F} | F {'/' F} F ::= P {P} P ::= v...
哪些现代编译器支持 Gnu 语句表达式(C 和 C++ 语言)。我应该在什么版本中使用语句表达式? 语句表达式类似于 ({ code; code; retva...
我目前正在构建一个C-编译器。我目前正在研究解析器,由于某种原因,我似乎无法解决源自表达式的第一组冲突(终端 id)
我正在努力将语法转换为 LL(1) 形式,但是当我尝试使用在线 LL(1) 解析器生成器时,它报告错误。我已经按照标准程序进行了转换,b...
为oop语言制作一个编译器,与语言相同。编译器当前遍历 ast 4 次,前两次用于解析类型链,第三次用于填充
如何在 Haskell 中编写上下文无关语法?另外,我制作这个编译器的方向正确吗?
作为参考,我正在学习《编译器原理:技术与工具》(又名“龙书”)这本书。 我正在创建一种语言,您可以在其中添加两个自然数...
我来这里问这个问题是因为这个网站过去对我非常有用,似乎有非常知识渊博的用户,他们愿意讨论一个问题,即使它是形而上学的......