Gherkin icon indicating copy to clipboard operation
Gherkin copied to clipboard

Migrate parser to `cucumber/common`?

Open ciaranmcnulty opened this issue 3 years ago • 6 comments

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?

ciaranmcnulty avatar Oct 18 '21 08:10 ciaranmcnulty

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.

stof avatar Oct 18 '21 08:10 stof

and we could indeed have an intermediate step where behat/gherkin uses cucumber/gherkin-php (or whatever its name) internally and convert the AST.

stof avatar Oct 18 '21 08:10 stof

Yeah it would basically be the same mapping as NdJsoNLoader does in the tests, except from cucumber objects instead of JSON

ciaranmcnulty avatar Oct 18 '21 08:10 ciaranmcnulty

It requires to implement parser generator for gasparnagy/berp first (template file).

unkind avatar Feb 08 '22 08:02 unkind

@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)

ciaranmcnulty avatar Feb 08 '22 08:02 ciaranmcnulty

How it's going? Need some help?

unkind avatar Sep 23 '22 16:09 unkind

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.

unkind avatar Sep 23 '22 17:09 unkind

See #253

ciaranmcnulty avatar Sep 23 '22 20:09 ciaranmcnulty