Multi-Modal Synthesis of Regular Expressions
Despite their usefulness across a wide range of application domains, regular expressions (or regexes for short) have a reputation for being difficult to master. In this paper, we propose a multi-modal synthesis technique for automatically synthesizing regexes from a combination of examples and natural language. Using multiple modalities of the specification is useful in this context because natural language alone is often highly ambiguous, whereas examples in isolation are often not sufficient for conveying the user's intent. Our proposed synthesis algorithm first parses the English description into a so-called hierarchical sketch that is used to guide our programming-by-example (PBE) engine. Since the hierarchical sketch captures key hints embedded in the natural language description, the PBE engine can leverage this information to both prioritize the search as well as make useful deductions for pruning the search space. We have implemented the proposed technique in a tool called REGEL and evaluate it on two different data sets, one curated from StackOverflow and another adopted from prior work. Our evaluation demonstrates the advantages of using multiple modalities of specification and also highlights the impact of key design choices underlying our PBE engine. Finally, a user study involving 20 participants demonstrates that users are more likely to successfully come up with the desired regex using REGEL compared to without using it.
READ FULL TEXT