我正在尝试修改 C# 中的 CIL 代码指令列表。常见任务包括查找指令组或指令模式,并用其他指令替换它们,同时重用原始匹配中的一些信息。这听起来很像正则表达式,只是我的用例是在实例列表中的特定类型而不是字符串中的字符。
我可以编写一些基本代码来搜索和匹配内容并替换它,但我想知道是否有更通用的方法使用正则表达式语法,如“x”?或“(a|b)+”或“(a+)b*(c+)”,但 a、b、c 不是字符而是类的实例。最好在结果表达式中引用捕获的部分。我知道某些模式,如“单词开头”或“空格”是没有意义的。
在我的开源补丁库Harmony中,我以自定义元组类型表示操作码及其操作数,模式匹配应在 IEnumerable 上运行,并最终生成一个新的 IEnumerable。
是否有一个通用的模式匹配算法可以扩展来存档?