编写编程语言的建议? [关闭]

2024-02-15

对于想要编写编程或脚本语言的人,您可以提供哪些建议?我 我不担心如何编程或设计编译器,而是担心如何使用工具和代码生成器快速开发编译器。

上次我尝试用 C++ 对其进行编码,状态和语法几乎与编写实际逻辑一样长。我知道以下工具会有帮助。

我想我可以生成 C++ 代码并让 gcc 编译它。使用上述工具,您估计编写一个程序或脚本语言需要多长时间?


早在学习编写编译器 https://stackoverflow.com/questions/1669/learning-to-write-a-compiler. 这是 SO 资源的不完整列表 https://stackoverflow.com/questions/365602/creating-your-own-language#365636关于这个话题。


估计类似的事情可能需要多长时间取决于许多不同的因素。例如,经验丰富的程序员可以通过单元测试在几个小时内轻松完成一个简单的算术表达式计算器。但是新手程序员可能必须学习解析技术、递归下降、表达式树的抽象表示、树遍历策略等等。仅对于算术表达式来说,这很容易需要数周或更长时间。

不过,不要因此而泄气。当杰夫和乔尔与埃里克·辛克讨论一个问题时最近的 Stack Overflow 播客 https://blog.stackoverflow.com/2009/01/podcast-36/,编写编译器是了解编程许多不同方面的绝佳方法。我已经构建了一些编译器,它们是我最难忘的编程项目之一。

关于构建编译器的一些经典书籍是:

  • 编译器:原理、技术和工具 http://dragonbook.stanford.edu/(又名《龙之书》)
  • 计算机程序的结构和解释 http://mitpress.mit.edu/sicp/(也称为 SICP)
  • 算法+数据结构=程序 http://www.inf.ethz.ch/personal/wirth/books/AlgorithmE0/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编写编程语言的建议? [关闭] 的相关文章

  • 了解如何为 .NET 框架创建编译器/解释器的资源

    我想了解更多如何为 NET 框架创建语言 我想我想构建一种 DLR 语言 我很难找到好的资源 我发现MSDN 上的一篇血统文章 http msdn microsoft com en us magazine cc136756 aspx那是一年
  • 有C语言的解释器吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话
  • 如何启动 VBS 的交互式控制台?

    与这个问题非常相似 如何启动 Perl 的交互式控制台 https stackoverflow com questions 73667 how can i start an interactive console for perl 我只是希
  • 最好的 C++ 编译器是哪个? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 是否有像 gccxml 这样的用于生成包装器的 C 标头解析器工具?

    我需要为一种新的编程语言编写一些 C 标头包装器 并且想要类似 gccxml 的东西 但不完全依赖 gcc 以及它在 Windows 系统上带来的问题 只需要读C而不是C 只要有完整的文档记录 任何格式的输出都可以 Linux Solari
  • TypeScript 编译错误 TS5037:除非提供“--module”标志,否则无法编译外部模块

    无法编译任何 TS node js 项目 包括示例中列出的项目 http typescript codeplex com sourcecontrol latest samples imageboard README txt http typ
  • 哪些编程语言不被视为高级语言? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在信息学理论中 我一直听到和读到有关高级和低级语言的内容 然而我不明白为什么这仍然相关 因为除了今天使用的汇编语言之外 没有任何 相关的 低级语
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • 如何通过命令行将Flash .fla编译为.swf? [复制]

    这个问题在这里已经有答案了 如何在基于 Windows 的操作系统上通过命令行将 Flash fla 文件编译为 swf 需要安装的命令行工具就可以了 谁能建议我该怎么做 以直接的方式 谢谢 您可以使用JSFL为 Flash IDE 编写脚
  • 有没有使用 ANTLR 或类似语言实现的简单语言?

    我正在尝试构建一种简单的解释语言以用于学习目的 我读过无数关于 ANTLR 和 JavaCC 的理论和教程 但我不知道如何真正让它做一些有用的事情 我通过 把东西拆开然后重新组合起来 来学得最好 那么 是否有任何在 ANTLR 或类似工具的
  • 可以读取目标文件吗?

    我很好奇 obj文件 我几乎不知道它们是什么 或者它们包含什么 所以我用 Vim 文本编辑器打开它们 我在里面发现了一种类似外星人的语言 有什么办法可以理解它们代表什么以及它们的内容是什么 另外 它们的用途是什么 Thanks Sure 但
  • 所有编程语言都是按顺序读取的吗?

    我似乎无法找到对此的直接答案 使用多个搜索引擎给我的结果非常模糊 或者只回答了一半的问题 那么 详细来说 当您编写一个程序并对其进行编译 解释时 计算机是按时间顺序顺序读取每一行还是默认情况下跳过 Example 使用 C 风格的源代码 因
  • 编译成 C/C++ 源代码的编程语言? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • C# 编译器数字文字

    有谁知道 C 编译器数字文字修饰符的完整列表 默认情况下 声明 0 使其成为 Int32 声明 0 0 使其成为 Double 我可以在末尾使用文字修饰符 f 来确保某些内容被视为 Single 例如像这样 var x 0 x is Int
  • C# 中的 C/C++ 代码编译器

    在 C 中 我可以使用下面的代码编译 VB 和 C 代码 但无法编译 C C 代码 有什么办法可以做到这一点吗 C 编译器 public void Compile string ToCompile string Result null st
  • 除了 gcc 之外,还有哪些编译器可以对代码进行向量化?

    GCC can 矢量化循环 ftp gcc gnu org pub gcc summit 2004 Autovectorization pdf当指定某些选项并给出正确的条件时 会自动进行 是否还有其他广泛可用的编译器可以执行相同的操作 IC
  • 编译器琐事:这段代码的结果是什么

    我今天正在审查一些代码 并遇到了一些代码 此片段准确地描述了 public abstract class FlargBase public FlargBase this DoSomething public abstract void Do
  • 酷还是傻? Catch(异常[NamingException, CreateException] e)

    我正在编写一些代码 我注意到异常处理中的一种模式让我思考 try do stuff throws JMS Create and NamingException catch NamingException e log1 e rollback
  • 解释型语言的优点和缺点是什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我现在正在学习Perl 解释型语言的优点和缺点是什么 公然抄袭维基百科 http en wikipedia org wiki Inte
  • 为什么构造 std::string(0) 不会发出编译器警告?

    假设我有这段代码 include

随机推荐

  • 如何摆脱 Git 子模块未跟踪状态?

    我似乎无法摆脱 Git 子模块中未跟踪的内容 跑步git status yields On branch master Changes not staged for commit use git add to update what wil
  • 为什么从初始化列表启动向量时不使用移动构造(通过隐式构造函数)

    为了演示移动语义 我编写了以下示例代码 其中包含 int 的隐式构造函数 struct C int i 0 C C int i i i C const C other i other i std cout lt lt A copy cons
  • ffmpeg函数avcodec_receive_frame总是返回EAGAIN错误

    我在iOS上使用ffmpeg解码he aac音频文件 解码器是libfdk aac 这是音频文件 https cdn perterpon com listen test bbc mp4 https cdn perterpon com lis
  • C stat 结构没有 st_ctime 字段,只有 st_ctim

    我现在已经用谷歌搜索了大约两个小时 但找不到任何有帮助的答案 手册页中指定的 stat 定义表明存在 st mtime 字段 struct stat dev t st dev ID of device containing file ino
  • 如何在android中的另一个imageview上半重叠imageview

    如何将布局 XML 文件中的图像彼此重叠一半 如下图所示 只需您就可以使用RealtiveLayout和负边距
  • 跑步后如何清理有毒环境?

    我有以下内容tox ini file tox envlist flake8 py 35 36 37 38 keyring testenv usedevelop True install command pip install U opts
  • 如何使用 google 图表 api 创建直方图?

    除了使用柱形图并适当命名之外 是否可以在谷歌图表 API 中创建直方图 添加到 mattedgod 的答案中 柱形图can现在创建的条形间隔紧密 请使用以下选项 bar groupWidth 100
  • android-如何在与主线程不同的线程中运行服务?

    我正在尝试在 android 中开发一个应用程序 其中包含一个读取多个小时传感器值的服务 当我启动服务时 我的设备挂起 所有其他进程都变慢 为了解决这个问题 我尝试在单独的线程中启动服务 如下所示 但问题仍然存在 new Thread ne
  • FB Canvas 授权重定向将我踢出 FB

    我有一个 Canvas 应用程序 它允许用户首先查看它的全部内容 然后仅在他希望执行某些操作时才请求权限 当用户进入应用程序时 它会在不需要权限的情况下启动 我们提供一个 登录 链接 该链接将请求 这会导致 Facebook 徽标出现并带有
  • 表示语法中的语句终止换行符?

    许多编程语言都有以行结束符终止的语句 不过 通常情况下 如果解析器无法理解该行 则在语句中间允许使用行结束符 例如 a 3 4 将在 Ruby 和 Python 中解析为语句a 3 4 since a 3 没有任何意义 换句话说 换行符被忽
  • 如何获取管道运行ID

    我是 Azure 新手 我需要使用 C 查找 Azure 中管道的最新活动 RunID 我不想调用管道实例 只想获取最后一个活动的 RunID 当我尝试时 可以调用管道并获取 ID 任何人都可以帮助我吗 我发现执行此操作的方法是查询数据工厂
  • Python distutils,如何获取要使用的编译器?

    例如 我可以使用python setup py build compiler msvc or python setup py build compiler mingw32要不就python setup py build 在这种情况下默认编译
  • 如何使用 Lombok 在类构造函数中使用 @Lazy 注释?

    给定一个 AnimalService 类 public class AnimalService private DogService dogService private AnimalService Lazy DogService dogS
  • 在java中连接自动生成的字符串,中间使用空格分隔符

    我有一个字符串数组变量 其值不断变化 由此生成随机数组 这就是我所拥有的 String trans Utility GetColumnValue testdata k suggest text 2 The trans值不断变化 我如何将它与
  • Pine Script 当前价格指标

    有没有办法在 Pine Script 中创建反映股票当前价格的指标 我需要这个指标 因为我需要在蜡烛收盘前 当存在特定交叉时 输入订单 并且逐条提供回测数据 我认为指标可以让我做到这一点 如果没有 还有其他方法可以解决这个问题 我不是一个经
  • Android 片段复制

    我正在尝试 android Honeycomb 预览中的新类 但遇到了一个小问题 我正在制作一个棒球计分应用程序 我希望左侧的按钮 操作菜单 可以切换右侧的 操作窗格 我已将其设置为片段 我希望按钮的 onClickListener 调用片
  • 强制我的 MFC 应用程序在 Vista 上以管理员身份运行

    我有一个使用 Visual Studio 2008 构建的 MFC 应用程序 它需要在 W2K XP 2003 和 Vista 上运行 该应用程序写入注册表中的 HKLM 并且仅在以管理员身份运行时才能在 Vista 上运行 我的问题是 我
  • “decltype(auto)”变量有任何实际用例吗?

    既来自我的个人经验 也来自咨询诸如此类的问题的答案decltype auto 有哪些用途 https stackoverflow com questions 24109737 what are some uses of decltypeau
  • 创建仅包含特定文件夹内的类的类加载器

    我想加载特定的罐子ScriptEngineManager using 特定的类加载器 https docs oracle com javase 7 docs api javax script ScriptEngineManager html
  • 编写编程语言的建议? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 对于想要编写编程或脚本语言的人 您可以提供哪些建议 我 我不担心如何编程或设计编译器 而是担心如何使用工具和代码生成器快速开发编译器