Exploring a Self-Replication Algorithm to Flexibly Match Patterns

Paul Leger, Hiroaki Fukuda, Nicolas Cardozo, Daniel San Martin

Research output: Contribution to journalArticlepeer-review

Abstract

Pattern matching algorithms have been studied on numerous occasions, mainly focusing on performance because of the large amount of data used in a matching process. However, a strong focus on performance can entail particular issues like the lack of flexibility to match patterns. As a consequence, programming developers need to tweak matching algorithms in contortive ways or create new specialized ones altogether if their specific needs are not supported. Inspired by the self-replication behavior of cells in biology, we explore and evaluate the design and implementation of an algorithm to flexibly match patterns, named Matcher Cells. Through the composition of simple rules applied to cells, developers can adjust the matching semantics of this algorithm to different needs. We describe this algorithm using a pure functional language as a recipe for any Turing-complete programming language and then offer an object-oriented architecture for languages like Java. To show the flexibility of our proposal, we use a concrete implementation in TypeScript to describe two applications, from different domains, that use pattern matching in a stream of tokens. Additionally, we carry out performance and developer experience empirical evaluations with undergraduate students using Matcher Cells. Finally, we discuss the pros and cons of using a biological-based algorithm, exploiting the compositions of rules, to match patterns.

Original languageEnglish
Pages (from-to)13553-13570
Number of pages18
JournalIEEE Access
Volume12
DOIs
Publication statusPublished - 2024

Keywords

  • Pattern matching
  • context-aware systems
  • self-replication algorithms
  • string matching

ASJC Scopus subject areas

  • General Computer Science
  • General Materials Science
  • General Engineering

Fingerprint

Dive into the research topics of 'Exploring a Self-Replication Algorithm to Flexibly Match Patterns'. Together they form a unique fingerprint.

Cite this