Paisley: Pattern Matching à la Carte

  • Baltasar Trancón y Widemann
  • Markus Lepper
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7307)


Professional development of software dealing with structured models requires more systematic approach and semantic foundations than standard practice in general-purpose programming languages affords. One remedy is to move to domain-specific environments. Here, instead, we present a tool for the implementation of pattern matching as fundamental means of automated data extraction from complex models in a general-purpose programming language. The interface is simple but, thanks to elaborate and rigorous design, is also light-weight, portable, non-invasive, type-safe, modular and extensible. It is compatible with object-oriented data abstraction and has full support for nondeterminism by backtracking. The tool comes as a library consisting of two levels: elementary pattern constructs (generic, highly reusable) and pattern bindings for particular data models (specific, fairly reusable, user-definable). Applications use the library code in a small number of idiomatic ways, making pattern-matching code declarative in style (yet retaining richer host-language semantics), easily writable, readable and maintainable. Library and idiom together form a tightly embedded domain-specific language; no extension of the host language is required. The current implementation is in Java, but assumes only standard object-oriented features, and can hence be ported to other mainstream languages.


Pattern Match Logic Programming Graph Transformation System Host Language Model Query Language 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Blomer, J., Geiß, R., Jakumeit, E.: The GrGen.NET User Manual (2011),
  2. 2.
    Bravenboer, M., Kalleberg, K.T., Vermaas, R., Visser, E.: Stratego/XT Tutorial, Examples, and Reference Manual (latest). Department of Information and Computing Sciences, Universiteit Utrecht, Utrecht, The Netherlands (2006),
  3. 3.
    Horn, T., Ebert, J.: The GReTL Transformation Language. In: Cabot, J., Visser, E. (eds.) ICMT 2011. LNCS, vol. 6707, pp. 183–197. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  4. 4.
    Hosoya, H., Pierce, B.C.: Regular expression pattern matching. In: ACM SIGPLAN–SIGACT Symposium on Principles of Programming Languages (POPL), London, England (2001); full version in Journal of Functional Programming, 13(6), 961–1004 (November 2003)Google Scholar
  5. 5.
    Lepper, M., Trancón y Widemann, B.: Optimization of Visitor Performance by Reflection-Based Analysis. In: Cabot, J., Visser, E. (eds.) ICMT 2011. LNCS, vol. 6707, pp. 15–30. Springer, Heidelberg (2011)CrossRefGoogle Scholar
  6. 6.
    Liu, J., Myers, A.C.: JMatch: Iterable Abstract Pattern Matching for Java. In: Dahl, V. (ed.) PADL 2003. LNCS, vol. 2562, pp. 110–127. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  7. 7.
    Odersky, M., Spoon, L., Venners, B.: Programming in Scala. artima, 2nd edn. (2010)Google Scholar
  8. 8.
    Sloane, A.M., Kats, L.C.L., Visser, E.: A pure object-oriented embedding of attribute grammars. Electronic Notes in Theoretical Computer Science 253 (2010),

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Baltasar Trancón y Widemann
    • 1
    • 2
  • Markus Lepper
    • 2
  1. 1.University of BayreuthGermany
  2. 2.<semantics/> GmbHGermany

Personalised recommendations