Сравнение с шаблоном регулярного выражения в IEnumerable <T>вместо строковых символов в C # - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь изменить список инструкций кода CIL в C #.Общие задачи включают в себя поиск групп или шаблонов инструкций и замену их другими инструкциями при повторном использовании некоторой информации из исходного соответствия.Это звучит очень похоже на регулярные выражения, за исключением того, что мой вариант использования находится в списках экземпляров определенного типа, а не символов в строке.

Я могу написать некоторый базовый код для поиска и сопоставления, и заменить его, но мне интересноесли есть более общий подход с синтаксисом регулярных выражений, таким как «x?» или «(a | b) +» или «(a +) b * (c +)», но с a, b, c не являющимися символами, а экземплярами класса,Желательно со ссылками на захваченные части в результирующем выражении.Я знаю, что определенные шаблоны, такие как «начало слова» или «пробел», не имеют смысла.

В моей библиотеке патчей с открытым исходным кодом Harmony я представляю коды операций и их операнды в видепользовательский тип кортежа и сопоставление с образцом должны работать с IEnumerable и, в конце концов, создавать новый IEnumerable в результате.

Существует ли общий алгоритм сопоставления с образцом, который я могу расширить для архивирования этого?

...