Gherkin
Gherkin copied to clipboard
Migrate parser to `cucumber/common`?
I'm going to do a spike at porting the cucumber parser over to PHP within the cucumber repository. This would contain a complete AST of value objects we could use.
For BC it should be possible to write a thin translation layer to map that to the existing Gherkin objects in this repo via a Loader, but a future version of Behat could rely on its AST directly, or even at some point rely on its 'pickles'.
Pros:
- Help from Cucumber team in maintenance, as internal structure would closely mirror the Java etc implementations
- Faster support for Cucumber language features
- Would use cucumber versioning so users could pin specific translations (see #193)
Cons:
- Relies on Cucumber team caring about PHP
- Introduces a layer of complexity in mapping
Any thoughts/feedback?
This will probably require a major version bump in Behat (the PyStringNode and the TableNode are accessed directly in steps, and other nodes can be accessed in hooks).
However, if the quality of the PHP code maintained by the Cucumber team can be good, I'm in favor of it.
and we could indeed have an intermediate step where behat/gherkin
uses cucumber/gherkin-php
(or whatever its name) internally and convert the AST.
Yeah it would basically be the same mapping as NdJsoNLoader does in the tests, except from cucumber objects instead of JSON
It requires to implement parser generator for gasparnagy/berp first (template file).
@unkind Just to update, I've started work on this and have a cucumber/messages implementation published on packagist
I've implemented the gherkin berp stuff, just need to make the various other objects that the parser uses (mostly copying the Java implementation)
How it's going? Need some help?
Not sure about English language, but "Scenario" instead of "Example" in Russian sounds literally like "Script" for a movie or even a theatrical play. It's harder to represent to a newbies.
See #253