egison-pattern-src

egison-pattern-src provides a standalone syntax definition for patterns in the Egison programming language. This package enables you to embed Egison's patterns in your parser (pretty-printer) by supplying expression and name parsers (printers) externally.


Keywords
language, library, parser, pretty-printer, Propose Tags , Language.Egison.Parser.Pattern, Language.Egison.Pretty.Pattern, Language.Egison.Syntax.Pattern, Language.Egison.Syntax.Pattern.Base, Language.Egison.Syntax.Pattern.Combinator, Language.Egison.Syntax.Pattern.Expr, Language.Egison.Syntax.Pattern.Fixity, egison-pattern-src, the Egison programming language, egison, pattern, programming-language, syntax-tree
License
BSD-3-Clause
Install
cabal install egison-pattern-src

Documentation

Egison Pattern Source

Actions Status Actions Status Hackage Hackage Deps

The egison-pattern-src provides a standalone syntax definition for patterns in Egison programming language. This package enables you to embed Egison's patterns in your parser (pretty-printer) by supplying expression and name parsers (printers) externally. For the uses in Haskell source code, such adaptors for haskell-src-exts and template-haskell are also available here as egison-pattern-src-haskell-mode and egison-pattern-src-th-mode respectively.

Syntax

The following is a simplified syntax of pattern expressions where x, v, op and e are respectively names, variable names, user-defined infix operators and expressions in host language.

p ::= _                     (wildcard pattern)
    | $v                    (pattern variable)
    | #e                    (value pattern)
    | ?e                    (predicate pattern)
    | p & p                 (and pattern)
    | p | p                 (or pattern)
    | !p                    (not pattern)
    | p op p                (user-defined infix pattern)
    | x                     (constructor pattern without argument)
    | (x p_1 p_2 ... p_n)   (constructor pattern with arguments)

Development

To build and test egison-pattern-src locally, run:

$ make test    # or just `cabal new-test all`

You can use make watch to watch for file changes and re-run tests.

License

egison-pattern-src is distributed as open source software under the terms of the 3 clause BSD License. See LICENSE for details.