Paisley: Pattern Matching à la Carte
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.
KeywordsPattern Match Logic Programming Graph Transformation System Host Language Model Query Language
Unable to display preview. Download preview PDF.
- 1.Blomer, J., Geiß, R., Jakumeit, E.: The GrGen.NET User Manual (2011), http://www.grgen.net
- 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), http://www.strategoxt.org
- 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
- 7.Odersky, M., Spoon, L., Venners, B.: Programming in Scala. artima, 2nd edn. (2010)Google Scholar
- 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), http://wiki.kiama.googlecode.com/hg/papers/LDTA09.pdf