PHPackages                             cursedcoder/dark-dissect-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. cursedcoder/dark-dissect-bundle

ActiveLibrary[Framework](/categories/framework)

cursedcoder/dark-dissect-bundle
===============================

Integrates Dissect into Symfony2 application

4662PHP

Since Jan 8Pushed 9y ago1 watchersCompare

[ Source](https://github.com/cursedcoder/DarkDissectBundle)[ Packagist](https://packagist.org/packages/cursedcoder/dark-dissect-bundle)[ RSS](/packages/cursedcoder-dark-dissect-bundle/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

THIS IS A WORK IN PROGRESS AND IN A STATE OF EXPERIMENTATION

DarkDissectBundle [![Build Status](https://camo.githubusercontent.com/73966a78a5ecaad794fbacb361bf364cc5a710754376b708cf080edcfeaf987a/68747470733a2f2f7472617669732d63692e6f72672f637572736564636f6465722f4461726b4469737365637442756e646c652e706e673f6272616e63683d6d6173746572)](https://travis-ci.org/cursedcoder/DarkDissectBundle)
========================================================================================================================================================================================================================================================================================================================================

[](#darkdissectbundle-)

Intro
-----

[](#intro)

This is a Bundle, which integrates [Dissect](http://github.com/jakubledl/dissect) into your Symfony2 project.

Install
-------

[](#install)

Add dependency to your `composer.json`:

```
{
    "require": {
        "cursedcoder/dark-dissect-bundle": "*"
    }
}
```

Run `composer update cursedcoder/dark-dissect-bundle`

Usage
-----

[](#usage)

First of all, configure bundle in your Symfony2 app.

```
dark_dissect:
    calculator:
        path: "%kernel.root_dir%/../calculator.yml"

    # my_cool_language:
    #     path: "%kernel.root_dir%/../my_cool_language.yml"
```

Now define lexis and grammar of your new language

```
# calculator.yml
language:
    lexis:
        regex:
            int: '/[1-9][0-9]*/'
            wsp: '/[ \r\n\t]+/'
        tokens:
            - "("
            - ")"
            - "+"
            - "*"
            - "**"
        skip: [wsp]

    grammar:
        start_rule: additive
        default_context: Calculator
        rules:
            - additive:
                statement: [additive, +, multiplicative]
                call: ~ # will call calculator context, method additive by default
                # call: { context: MyCustomContext, method: MyCustomMethod }

            - additive:
                statement: [multiplicative]

            - multiplicative:
                statement: [multiplicative, *, power]
                call: ~

            - multiplicative:
                statement: [power]

            - power:
                statement: [primary, **, power]
                call: ~

            - power:
                statement: [primary]

            - primary:
                statement: [(, additive, )]
                call: ~

            - primary:
                statement: [int]
```

Now we are ready to describe language context. Create a context class somewhere in your project.

```
