问题标签 [rewriting]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
800 浏览

.net - 我是否需要编写自己的非托管 IL 库来使用 CLR Profiling API 重写 IL?

我一直在看一些关于 CLR Profiling API 的文章,其中许多文章都谈到了调用 SetILFunctionBody() 来进行实际的 IL 重写;然而,这些文章都没有真正解释你可以用什么来重写实际的方法 IL 字节。是否有一个非托管库允许我编写 IL,或者我必须自己编写一个?

0 投票
2 回答
138 浏览

text - 如何自动化文本重写?

我会解释我想做什么。

如果我有一个像“去那里杰克”这样的文字,我想自动将它重写为“杰克去那里”。
让我们想象一下它是一个长达数千行的长文本,并且随着时间的推移具有固定的格式,例如“go there Jonh”、“go there Joe”、“go there Smith”.. 等(这些只是虚构的示例,但文本并不多不同的)。

所以我想问是否有工具或编程语言库可以自动执行此类任务?

注意:“我听说过 linux 中的文本过滤器,但谷歌没有帮助我”

0 投票
2 回答
5289 浏览

networking - 使用 libnetfilter_queue 即时重写网络数据包

我正在尝试编写一个用户空间应用程序,它可以连接到操作系统的网络堆栈,嗅探飞过的数据包并编辑它感兴趣的数据包。

经过多次谷歌搜索,在我看来,最简单(但相当健壮)的方法(在任何平台上)是 Linux 的libnetfilter_queue项目。但是,除了有限的官方文档之外,我很难找到该项目的任何合理文档。它的主要特点(如第一个链接所述)

  • 从内核 nfnetlink_queue 子系统接收排队的数据包
  • 向内核 nfnetlink_queue 子系统发布判决和/或重新注入更改的数据包

重点是我自己的。我到底是什么意思?我试过修改提供的示例代码,但也许我误解了一些东西。代码在NFQNL_COPY_PACKET模式下运行,所以我收到了整个数据包——但我对它的修改似乎仅限于我自己的应用程序——正如人们所期望的那样,考虑到“复制”语义。

我的感觉是我注定要以NF_QUEUE某种方式利用它,但我还没有完全理解它。任何指针?

(如果有更简单的机制可以做到这一点,它也是跨平台的,我很想听听!)

0 投票
2 回答
267 浏览

scheme - 计划将 let* 重写为嵌套的一元让

我编写了一个函数match-rewriter,它本质上是match-lambda如果找不到匹配项则返回其参数:

现在我想使用match-rewriter代表源代码的字符串let*并将其重写为嵌套的一元lets

我真的很困惑如何匹配这个。我需要返回:

但是嵌套让我很难过。任何建议表示赞赏。


好的,这是我最好的尝试:

但这就是它的行为方式:

(let*→nested-unary-lets '(let* ((a 1) (b (+ a 1)) (c (+ a 1))) (displayln c))) '(let ((a 1) (let *→nested-unary-lets '(let* (((bc) ((+ a 1) (+ ab))) ...) (displayln c)))))

我对以下参数的顺序感到困惑:

在我看来应该是:

let*→nested-unary-lets此外,如果执行调用而不是仅打印为文本,那就太好了。

0 投票
1 回答
255 浏览

scheme - Scheme let* 作为嵌套的一元让

作为一个练习,我正在尝试重写表示源代码的字符串let*作为嵌套的一元让。这是我的最大努力:

我目前遇到的问题是模式:

与以下字符串不匹配:

term子句只匹配第二个子句(c d)。在我看来,它应该将所有剩余的(var val)子句作为一个列表((c d) (e f))。无论如何,我需要它这样做。

任何建议表示赞赏。

令我困惑的是,expr将匹配表达式列表,所以我想不出任何原因子句也不会这样做。

0 投票
1 回答
404 浏览

python - PIL 图像转换不使用文件系统

我想只使用 RAM 内存用 PIL 进行图像转换/重写。我在 RAM 中有以字节为单位的图像,我想将其转换为其他格式或可能相同。我知道我可以做到这一点,就像用某个名称将它保存在文件系统中一样,但我想只使用 RAM 而不接触文件系统。我没有找到任何例子。任何帮助,将不胜感激!谢谢!

0 投票
2 回答
1223 浏览

z3 - 在位向量算术的决策过程中使用术语重写

我正在从事一个项目,其重点是使用术语重写来解决/简化固定大小的位向量算术问题,这对于一些决策过程(例如基于位爆破的决策过程)的前一步很有用。重写这个术语可能完全解决问题,或者产生一个更简单的等效问题,因此两者的结合可以带来相当大的加速。

我知道许多 SMT 求解器都实施了这种策略(例如 Boolector、Beaver、Alt-Ergo 或 Z3),但很难找到详细描述这些重写步骤的论文/技术报告/等。一般来说,我只找到作者在几段中描述这种简化步骤的论文。我想找到一些详细解释术语重写使用的文档:提供规则示例,讨论 AC 重写和/或其他等式公理的便利性,重写策略的使用等。

目前,我刚刚找到了技术报告A Decision Procedure for Fixed-Width Bit-Vectors,它描述了 CVC Lite 执行的规范化/简化步骤,我想找到更多这样的技术报告!我还找到了一张关于STP 中术语重写的海报,但这只是一个简短的总结。

我已经访问了那些 SMT 求解器的网站,并在他们的出版物页面中进行了搜索...

我将不胜感激任何参考或任何解释如何在当前版本的知名 SMT 求解器中使用术语重写。我对 Z3 特别感兴趣,因为它看起来拥有最智能的简化阶段之一。例如,Z3 3.* 引入了一个新的位向量决策过程,但不幸的是,我找不到任何描述它的论文。

0 投票
1 回答
3550 浏览

c++ - 通过覆盖来“更新”文件中的一行

我正在尝试编写一个函数,当调用该函数时,它将在我的文本文件中搜索与参数匹配的内容,然后通过覆盖文件来“更新”它。

这是我当前的功能:

编辑:这是新的更新代码,仍然无法正常工作:/

这是它发送到 UpdateGem 的行:(示例 sTempTxt:“AB:5.55”)

它必须替换的行采用 NAME:NUMBER 的形式,其中数字可以不同,因此我使用 splitstring 函数将名称与找到的行的名称进行比较,然后完全擦除该行并“更新”稍后重新添加它。但是,我当前的代码只将更新的行写入文件,而不是旧的......

0 投票
1 回答
551 浏览

scala - 在 Kiama/Scala 中有条件地重写术语

我正在尝试在 Kiama 中实现“承诺选择”操作(以及以类似方式工作的其他一些功能)。

我想重写一个术语,如果它的一个子术语可以被成功重写(这个想法是,一旦你启动任一分支,你就已经承诺了)。

目前,我可以这样做:

所以 r2 只有在它可以成功地将 r1 应用于第一个子项时才会触发。

这感觉不太像 Kiama-ish。我觉得我应该使用同余,但我无法从文档中弄清楚它们是如何工作的。

谁能建议一种更优雅和 Kiamaish 的方式来做到这一点?

0 投票
1 回答
2312 浏览

.htaccess - 使用三个动态参数重写 URL

我正在我的网站上工作,其中 URL 类似于:

我在我的 htaccess 中尝试了一个规则,即:

为了以以下形式重写 URL:

不幸的是,它对我不起作用。

请有人帮我解决问题。如果有人让我了解它是如何工作的,我也会喜欢它。我是.htaccess 的新手。在上述规则中,我可以看到三个不同的部分,例如:

这三个部分由反斜杠分隔。它们是如何工作的,我如何将相同的 Rewrite URL 表单用于超过 3 个(比如说 4 个或 5 个参数)和少于 3 个(比如 2 个)参数?

谢谢你!