如何用该语言编写该语言的编译器? [复制]

2024-02-15

可能的重复:
一种语言的编译器如何用该语言编写? https://stackoverflow.com/questions/2998768/how-can-a-languages-compiler-be-written-in-that-language
在“自身”中实现编译器 https://stackoverflow.com/questions/193560/implementing-a-compiler-in-itself

我在看Rubinius http://rubini.us/,一个 Ruby 实现,使用 Ruby 编写的编译器编译为字节码。我无法理解这个问题。如何用该语言本身编写该语言的编译器?看起来它只是文本,没有任何东西可以将其编译成可执行文件,然后可以编译将来用 Ruby 编写的代码。只是输入这句话我就感到困惑。谁能帮忙解释一下吗?


为了简化:您首先用不同的语言为编译器编写一个编译器。然后,编译编译器,瞧!

所以,你需要某种已经有编译器的语言 - 但由于有很多这样的语言,你可以编写 Ruby 编译器(!),例如然后,它将编译 Ruby 编译器,然后编译器可以编译 Ruby 程序,甚至是其自身的更高版本。

当然,最初的编译器是用机器代码编写的,编译编译器用于汇编,汇编编译器又编译编译器,例如C 或 Fortran,它编译了几乎所有内容的编译器。迭代开发在行动。 http://en.wikipedia.org/wiki/History_of_compiler_writing

该过程称为引导 http://en.wikipedia.org/wiki/Bootstrapping_%28compilers%29- 可能以明希豪森男爵的故事命名,在这个故事中,他靠自己的力量将自己从沼泽中拉了出来:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何用该语言编写该语言的编译器? [复制] 的相关文章

  • 如何使用 ruby​​zip 库获取压缩文件的内容?

    我正在尝试提取上传的 zip 文件并将其内容存储在数据库中 每个文件一个条目 rubyzip 库几乎没有有用的文档 有一个资产表 其中包含键 string 文件名 和数据 binary 文件内容 我正在使用 ruby zip 库 并且已经做
  • 使用 ruby​​ Net::SSH 通过 sudo 读取远程文件

    我必须读取我有权 sudo 读取的远程文件的内容 猫 少或尾巴 我将在 Ruby 中执行此操作 因此我认为应该使用 Net SSH 来执行此操作 该文件是一个日志文件 因此可能会很大 这是我现在正在尝试的代码 require rubygem
  • 随机化数组元素

    我有一个数组 number 1 2 3 4 5 6 7 8 9 现在 我想随机化数组内容 例如 5 3 2 6 7 1 8 请指导我如何继续 Use the shuffle方法 irb main 001 0 gt 1 2 3 4 5 shu
  • cmake 找不到 Qt4

    由于4 8 0已经发布 我重新安装了Qt 现在我也想使用cmake 为了使 cmake 工作 我记得必须添加 mingw bin 文件夹 QtSDK Desktop Qt 4 7 3 到Qt4 7 3中的PATH 所以我猜测在中会有一个类似
  • 正则表达式检查 ruby​​ 中的字母数字字符串

    我正在尝试验证 ruby 中的字符串 任何包含空格 下划线或任何特殊字符的字符串都将无法通过验证 有效字符串应仅包含字符 a zA Z0 9 我的代码看起来像 def validate string regex a zA Z0 9 if s
  • Ruby 中 SecureRandom.urlsafe_base64(8) 的碰撞概率?

    我在用SecureRandom urlsafe base64 8 为了在我的系统中创建 URL 安全的唯一 ID 我想知道如何计算碰撞概率 我将大约 10 000 个这些 id 插入到一个数组中 我想避免检查其中一个键是否已经在数组中 但我
  • 为什么不允许使用 const 初始化可变大小的对象

    这是错误的 因为可变大小的对象可能未初始化 int size 4 int array size 1 size是一个变量 但编译器在创建时不知道它的值array Isn t size在编译时分配初始值 4 让size之后发生变化 为什么会出现
  • 如何找到 Ruby 应用程序中的性能瓶颈?

    我编写了一个 Ruby 应用程序 它可以解析来自不同格式 html xml 和 csv 文件的源的大量数据 如何找出代码的哪些区域花费时间最长 有没有关于如何提高 Ruby 应用程序性能的好资源 或者您是否有始终遵循的性能编码标准 例如 您
  • 如何使用 minitest 运行所有测试?

    我下载了一个项目的源代码 发现了一个错误并修复了它 现在我想运行测试来看看我是否破坏了任何东西 测试是在 minitest DSL 中进行的 我如何同时运行它们 我搜索了适用的 rake 任务等 但没有找到 这是一个链接耙子 测试任务 ht
  • Ruby - :variable 和 @variable 之间的区别

    作为 Ruby on Rails 新手 我知道 和 引用具有不同的含义 我看见这个帖子 https stackoverflow com questions 3538575 whats the difference between and v
  • Sublime Text 是否支持 Ruby API(自动完成)?

    如何获取可用于某些对象或类的方法列表 如下所示 Sublime Text 有针对 Ruby 的此功能吗 像这样https github com BoundInCode Display Functions https github com B
  • 迭代比线性代码慢吗?哪一个更可取?

    最近几天我脑子里一直有一个问题 在用 ruby 编写代码时 线性代码是否比迭代更快 更好 让我举个例子 有一个用于相同功能的代码块以两种不同的方式编写 Way 1 dog cat tiger each do pet name puts I
  • 匹配一对未转义的平衡分隔符

    如何匹配一对不被反斜杠转义的平衡分隔符 本身不被反斜杠转义 无需考虑嵌套 例如 对于反引号 我尝试了此操作 但是转义的反引号无法按转义的方式工作 regex lt lt hello how are you gt 1 how expected
  • Rails 2.3.14:如何序列化 ActionController::Request 对象?

    我需要编写一些根据 Rails 2 3 14 控制器收到的请求对象类型执行操作的方法 但是 我不想启动整个应用程序 甚至不想启动控制器 我只想拥有这样一个对象的编组副本 以便我可以在 Rails 环境之外使用 不幸的是 ActionCont
  • 忽略 GEM,因为它的扩展尚未构建

    在我的工作和家用计算机上 我最近将 Ruby 升级到 2 3 1 使用ruby install I use chruby作为我的 Ruby 切换器 我开始在我的终端中看到这个警告 Ignoring bcrypt 3 1 11 because
  • 现代 C++ 编译器是否能够在某些情况下避免调用 const 函数两次?

    例如 如果我有以下代码 class SomeDataProcessor public bool calc const SomeData d1 const SomeData d2 const private Some non mutable
  • << 和 += 有什么区别?

    我一直在尝试使用数组 发现自己在理解以下代码时遇到了困难 first array second array third array I initialized 3 empty arrays third array lt lt 1 2 3 4
  • 将 R 与 Rsruby 集成

    我想知道是否有人有将 R 集成到 Rails 中的经验 特别是在 heroku 上 我熟悉 rsruby gem 它是 ruby 与 R 事实上的 也许是唯一的 绑定 但是有关将 R 与 Rails 集成的文档即使不是不存在 也是很少的 比
  • 设计重定向到成功登录似乎在第一次登录尝试时卡住

    我正在使用 Ruby on Rails 开发一个小型应用程序 并使用 Devise 进行身份验证 我有两个登录系统设置 一个是user另一个是employee 当使用正确的电子邮件和密码登录时 设计会发送正确的重定向到返回路径 但它会卡在那
  • ruby 中的树和图数据结构[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我很难找到在 ruby 中使用的树数据结构 我可以研究一些众所周知的吗 我的要求很简单 我想创建一棵树 或者可能是一个图 并找到一些节点之

随机推荐