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