用 Perl 编写编译器的一部分(用 C++ 编写)

2024-01-07

我正在尝试了解更多有关编译器和编程语言的知识,很遗憾我的大学不提供有关编译器的课程,所以我必须自己做(谢谢互联网)。

此刻我tryin为了理解和实现我的语言的词法分析器,我需要正则表达式。

我习惯很快地编写 Perl 正则表达式脚本,我认为我可以将 Perl 嵌入到我的 C++ 词法分析器中。现在的问题是:

  • 会造成很大的开销吗?
  • 我应该尝试与 BOOST (或任何其他适合正则表达式的 C++ 库)和平相处吗?

谢谢您阅读此篇 :)


在项目中嵌入 Perl 只是为了执行正则表达式,就像试图将大象塞进 Miata 以获得更多的后备箱空间一样。 (巴顿!)

Boost 将是处理正则表达式的一种方法,或者如果您在支持 POSIX.2 的环境中编写,请查看regcomp(), regexec() and regfree()功能。

编写自己的词法分析器后,研究一个名为lex这几乎是开发词法分析器的黄金标准。它有一个合作伙伴叫YACC用于开发解析器。两者都经过时间测试并生成紧凑、无错误的代码。 (GNU-ish 环境称这些程序为flex and bison.)

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

用 Perl 编写编译器的一部分(用 C++ 编写) 的相关文章

随机推荐

  • 读取 PSV(管道分隔)文件或字符串

    我刚刚收到一个数据文件 其扩展名为 psv 经过一番研究后 我不知道如何打开它R 我们可以使用 read table 来读取 psv 文件 read table myfile psv sep header FALSE stringsAsFa
  • Safari 截断按钮内元素的框阴影

    我有一个按钮 里面有一个接收 box shadow 的元素 button padding 0 border 0 margin 0 overflow visible webkit appearance none background whit
  • 无法在 F# 中使用受保护的事件

    假设我们有以下 C 类 public class Class1 protected event EventHandler ProtectedEvent protected virtual void OverrideMe 在F 中使用Prot
  • WCF 禁用反序列化顺序敏感性

    在非 NET 客户端和 NET WCF 服务之间传递序列化对象时 我经常遇到问题 当 WCF 反序列化对象时 它严格依赖于属性的顺序 也就是说 如果我将我的班级定义为 public class Foo public int ID get s
  • GCC 中的元组模板

    我首先在 VS2010 中使用 Microsoft VC 开始使用 C 我最近找到了一些工作 但我一直在使用 RHEL 5 和 GCC 我的代码主要是本机 C 但我注意到一件事 GCC 似乎不承认
  • 为什么这个 CAKeyFrameAnimation 会以零不透明度停止?

    我有这个代码 在值数组的末尾 您可以看到我提供了 0 5 的不透明度 但由于某种原因 当动画停止时 它会再次闪烁 然后使视图完全透明 那里出了什么问题 CALayer layer self layer CAKeyframeAnimation
  • 是否可以在 CSS3 或 Javascript 中将字母映射到圆柱体或球体?

    我看到一张在 CSS3 中映射到圆柱体的图片 我想知道这是否可以用文本来实现 更好的方法是将文本映射到球体 如果纯 CSS 无法实现 Javascript 可能是一种选择 它必须在所有主要浏览器上运行 包括那些没有 webkit 的浏览器
  • SVG 缩放文本以适合容器

    这可能是一个非常简单的问题 但如何让 SVG 中的文本拉伸以适合其容器 我不在乎它是否因拉得太长或太高而看起来很丑 但它需要适合它的容器并且尽可能大 Thanks 如果您真的不关心文本变得难看 以下是如何将未知长度的文本调整为已知宽度的方法
  • 尝试使用 gdata API 将视频上传到 YouTube 时出现“找不到类”错误

    我目前正在编写 Android 应用程序的一部分 以使用 Google Data API 将视频上传到 YouTube 我有来自 Google Code 的最新版本的 API 我基本上复制了他们的示例开发者指南 http code goog
  • 如何在 JOptionPane 上添加文本区域

    目前我有一个JOptionPane 单击按钮后 我正在执行以下行 JOptionPane showInputDialog this Enter your message Messages 2 它会打开一个带有文本框的弹出窗口 此文本框接受大
  • Elasticsearch、Tire 和嵌套查询/与 ActiveRecord 的关联

    我正在使用 ElasticSearch 和 Tire 来索引和搜索一些 ActiveRecord 模型 并且我一直在寻找索引和搜索关联的 正确 方法 我还没有找到最佳实践 所以我想问是否有人有一种他们认为非常有效的方法 作为一个示例设置 这
  • Android OpenGL ES 生成纹理的圆形网格

    我是 Android 上的 OpenGL ES 新手 我有一个关于为代表圆形的纹理生成网格的问题 左边是所需的网格 右边是我的纹理 如何生成左侧的网格 然后按以下方式渲染 triangle1 Centerpoint WhitePoint n
  • 使用 ggplot2 的发散堆积条形图:图例中的因子排序问题

    我正在尝试绘制李克特量表数据发散堆积条形图 with ggplot2 我见过很多解决方案 其中我发现最好的一个是这个多方面的解决方案 https stackoverflow com questions 51201852 faceted ho
  • 使用单个接口注册多个实现

    有没有一种方法可以使用 simple injector 注册由多个具体类实现的单个接口 而不使用模板接口 说我们有 2 节课MyClass1 and Myclass2这两个类都在实现IInterface1 现在使用 simple injec
  • 在 Pandas Dataframe 中查找空或 NaN 条目

    我正在尝试搜索 Pandas Dataframe 以查找其中缺少条目或 NaN 条目的位置 这是我正在使用的数据框 cl id a c d e A1 A2 A3 0 1 0 419279 0 843832 0 530827 text76 1
  • 建立空链接的不同方法?

    除了这些方法之外 还有没有办法制作空链接呢 a href Example a a href Example a a href Example a 我不介意使页面跳转到顶部的某些内容 但我不希望它更改地址栏中的 URL 理想的链接应尽可能类似
  • Android adb 在列表设备和其他命令中挂起

    当我尝试从终端运行 adb 命令时 尤其是adb devices adb kill server and adb start server它挂起 我需要输入CTRL C退出进程 无法将 APK 部署到物理或虚拟设备 有东西阻止了 adb 进
  • 网站在移动浏览器中看起来不正确

    我现在正在构建一个网站 当我在移动浏览器上加载该网站时 一些元素被推到左侧 在右侧留下难看的空白 我的猜测是 大的米色矩形 直接位于导航下方 的宽度大于其下方的包装纸 注意 矩形不包含在包装器内 但是 我尝试了几种不同的方法 但仍然出现右侧
  • Marklogic:导入 csv 时在文档上创建多个 XML 文件。如何获取根文档 URI 路径?

    我是 Marklogic 的新手 我尝试将 100k 记录的 CSV 文件导入到 Marklogic 导入后 我发现它默认导入到文档数据库 另外 我发现对于每条记录 我都会看到数据库中生成的 XML 文件 其中增量编号附加到我在导入时提到的
  • 用 Perl 编写编译器的一部分(用 C++ 编写)

    我正在尝试了解更多有关编译器和编程语言的知识 很遗憾我的大学不提供有关编译器的课程 所以我必须自己做 谢谢互联网 此刻我tryin为了理解和实现我的语言的词法分析器 我需要正则表达式 我习惯很快地编写 Perl 正则表达式脚本 我认为我可以