Don’t DIY: Automatically transform legacy Python code to support structural pattern matching

Abstract

As data becomes more and more complex as technology evolves, the need to support more complex data types in programming languages has grown. However, without proper storage and manipulation capabilities, handling such data can result in hard-to-read, difficult-to-maintain code. Therefore, programming languages continuously evolve to provide more and more ways to handle complex data. Python 3.10 introduced structural pattern matching, which serves this exact purpose: we can split complex data into relevant parts by examining its structure, and store them for later processing. Previously, we could only use the traditional conditional branching, which could have led to long chains of nested conditionals. Maintaining such code fragments can be cumbersome. In this paper, we present a complete framework to solve the aforementioned problem. Our software is capable of examining Python source code and transforming relevant conditionals into structural pattern matching. Moreover, it is able to handle nested conditionals and it is also easily extensible, thus the set of possible transformations can be easily increased.

Publication
Proceedings of the 22nd IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM), , Pages 164–169

BibTeX:

@InProceedings{RAF22,
    author    = {Rózsa, Balázs and Antal, Gábor and Ferenc, Rudolf},
    booktitle = {Proceedings of the 22nd IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM)},
    title     = {Don’t DIY: Automatically transform legacy Python code to support structural pattern matching},
    year      = {2022},
    month     = oct,
    pages     = {164--169},
    doi       = {10.1109/SCAM55253.2022.00024},
    keywords  = {Python, AST, structural pattern matching, code transformation},
    url       = {https://doi.ieeecomputersociety.org/10.1109/SCAM55253.2022.00024},
}